I'm arranging the second movement of Ravel's Ma mere l'Oye for recorder ensemble. There are two parts for tenor recorder, and I'd like to combine them into one written part. Sometimes, the two parts are identical, and sometimes, they're different enough that it would be awkward to put them on one staff. However, they won't fit on a single page if I use two staves throughout.

Is there a way to combine the parts so that they will share a single staff when the parts are identical, but use separate staves when the parts differ?

1 Answer 1


The LilyPond installation contains a file input/regression/divisi-staves.ly that shows an example of how to achieve Divisi staves that will split more complex music into multiple systems temporarily while extending the split to the line breaks.

Documentation of that feature is unfortunately awfully lacking, so you need to go by example.

\version "2.19.13"

\header {
  texidoc = "The @code{VerticalAxisGroup.remove-layer}
property can be used for typesetting temporary divisi staves where
the switch to split staves is done only at line breaks such that all
complex passages are rendered in separate staves."

boring = \set Staff.keepAliveInterfaces = #'()
tricky = \unset Staff.keepAliveInterfaces

violI=\relative d' {
  \boring \repeat unfold 100 d4
  \tricky <d g'>2
  \boring \repeat unfold 98 d4
  \bar "|."

violII=\relative g {
  \boring \repeat unfold 100 g4
  \tricky <g d'>2
  \boring \repeat unfold 98 g4
  \bar "|."

\score {
  \new StaffGroup \with { \consists "Keep_alive_together_engraver" }
    \new Staff \with { instrumentName = "Violin I"
               shortInstrumentName = "V I"
               \override VerticalAxisGroup.remove-empty = ##t
               \override VerticalAxisGroup.remove-first = ##t
               \override VerticalAxisGroup.remove-layer = 1
    \new Staff \with { instrumentName = "Violin II"
               shortInstrumentName = "V II"
               \override VerticalAxisGroup.remove-empty = ##t
               \override VerticalAxisGroup.remove-first = ##t
               \override VerticalAxisGroup.remove-layer = 1
    \new Staff \with { instrumentName = "Violins"
               shortInstrumentName = "V I&II"
               \override VerticalAxisGroup.remove-layer = 2
    <<  \violI \\ \violII  >>
  \layout {
    short-indent = 2\cm
    indent = 3\cm

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.