Valentin Petzel <[email protected]> writes: > Hello, > > As it is I think one of the important features missing in Lilypond is the > ability to split one staff into multiple staves, which is a feature quite > nescessary for orchestral and choral settings. There is an ”official“ hack to > do > it by using different staves and switching context, but this is neighter > beautyful nor useful in large settings and it bears the problem that one > needs > to manually specify all these splits, including System breaks &c.
Take a look at input/regression/divisi-staves.ly : that at least showcases some low-level interfaces/hooks for implementing that sort of functionality. It doesn't really constitute a user interface, though. > So what I want to work on is some sort of ”Splittable Staff“. Main specs > should > be: > > → At any point in the Score a staff should be splittable > → Splits can be denoted by a markup like divisi > → If a split occurs within on system, one should have the choice between: > →→ Extending the split to the whole system, doubling not split notes (as it’s > usually done) > →→ Splitting the staff in the middle of the system, as sometimes done in more > complex scores. > → There should be a penalty for having a longer split start or end in such a > way, that it eighter starts very late into the system or ends very early in > the system (leading to lots of duplicated stuff) > → One should be able to specify brackets for splits > → One should be able to specify if a split will occur only at a barline > (potentially doubling stuff) of at any point > → There should be a way to make Voices work nicely with splits (so if you > split four Voices 1,2,3,4 from high to low into 1,2 and 3,4 they should > automatically be remapped to the voice configurations 1,3,4,2 when together, > and 1,2 and 1,2 when split. > → It should be possible to do nested splits > → It should be possible to specify Instrument names for split Staves > > I have thought up a way one could specify this, but I do not have time to > elaborate it here, so I will probably follow up on this. > > Now, for the gist of my question: I’m very well versed with the Lilypond > codebase, so I appreciate if someone could give me a few directions, what > parts I should study to get into the right direction. See above for some low-level hooks, but the rest will be a bunch of programming work including juggling contexts and both split and condensed versions typeset in parallel. -- David Kastrup
