Hi all,
Attached is my latest attempt to make progress toward an automatic mechanism for n-parts that may share a staff or not.
The idea is that if the context property combineNext = ##t, then that part can share a staff with the next part down. The engraver is supposed to set keepAliveInterfaces = '() for all the staves except the ones corresponding to the current part grouping. Then depending on line-breaking, staves will be hidden according to remove-layers.
I have two issues currently:
1) How to initialize the engraver with a list of child staff contexts? Grabbing them by acknowledging hara-kiri-group-spanner grobs means this engraver can't affect which staves display on the first system, which isn't ideal. Is there a better way?
2) ly:context-set-property! seems to work in the sense that the changed value gets read back correctly, but it doesn't seem like it's affecting the music output as I'd expect. Should I be having the engraver broadcast a property change event or something? How would one even do that? Or is this something to do with the timing of property changes happening over line breaks?
Apologies for the less than elegant Scheme code. I would love some feedback/assistance on how to improve this or approach it better.
Happy new year!