Dos pares de \partCombine en un solo pentagrama

La función \partCombine toma dos expresiones musicales, cada una de las cuales contiene una parte o voz, y las distribuye entre cuatro contextos de Voice llamados “one”, “two”, “solo” y “shared” dependiendo de cuándo y cómo las partes o voces se combinan en una voz común.

Las voces que devuelve \partCombine pueden ver ajustadas sus propiedades de presentación de la manera usual. Aquí definimos extensiones de \partCombine para facilitar la inclusión de cuatro voces dentro del mismo pentagrama.

\partCombineUp y \partCombineDown son variantes de \partCombine pensadas para producir combinaciones de dos voces con la plica hacia arriba y hacia abajo, respectivamente. Sin embargo, combinarlas para comprimir cuatro partes en un solo pentagrama requiere ciertos ajustes especiales, los que este fragmento de código define adecuadamente.

customPartCombineUp =
#(define-music-function (part1 part2) (ly:music? ly:music?)
  "Make an up-stem `VoiceBox` context that combines PART1 and PART2.

The context is called 'Up'; internally, the function calls
`\\partCombineUp`."
  #{
    \new VoiceBox = "Up" <<
      \context Voice = "one" { \voiceOne }
      \context Voice = "two" { \voiceThree }
      \context Voice = "shared" { \voiceOne }
      \context Voice = "solo" { \voiceOne }
      \context NullVoice = "null" {}
      \partCombine #part1 #part2
    >>
  #})

customPartCombineDown =
#(define-music-function (part3 part4) (ly:music? ly:music?)
  "Make a down-stem `VoiceBox` context that combines PART3 and PART4.

The context is called 'Down'; internally, the function calls
`\\partCombineDown`."
  #{
    \new VoiceBox = "Down" <<
      \set VoiceBox.soloText = #"Solo III"
      \set VoiceBox.soloIIText = #"Solo IV"
      \context Voice ="one" { \voiceFour }
      \context Voice ="two" { \voiceTwo }
      \context Voice ="shared" { \voiceFour }
      \context Voice ="solo" { \voiceFour }
      \context NullVoice = "null" {}
      \partCombine #part3 #part4
    >>
  #})

soprano = { d'4 | cis'  b  e'  d'8 cis' | cis'2 b }
alto = { fis4 | e8 fis gis ais b4 b | b ais fis2 }
tenor = { a8 b | cis' dis' e'4 b8 cis' d'4 | gis cis' dis'2 }
bass = { fis8 gis | a4 gis g fis | eis fis b,2 }

\new Staff <<
  \key b\minor
  \clef alto
  \partial 4
  \transpose b b' \customPartCombineUp \soprano \alto
  \customPartCombineDown \tenor \bass
>>

\layout {
  \context {
    \Staff
    \accepts "VoiceBox"
  }
  \context {
    \name "VoiceBox"
    \type "Engraver_group"
    \defaultchild "Voice"
    \accepts "Voice"
    \accepts "NullVoice"
  }
}
[image of music]

LilyPond snippets v2.25.34 (development-branch).