LilyPond 学习手册: A.5.2 SATB vocal score and automatic piano reduction

### A.5.2 SATB vocal score and automatic piano reduction

This template adds an automatic piano reduction to the standard SATB vocal score demonstrated in “Vocal ensemble template”. This demonstrates one of the strengths of LilyPond – you can use a music definition more than once. If any changes are made to the vocal notes (say, `tenorMusic`), then the changes will also apply to the piano reduction.

>     \paper {
>       top-system-spacing.basic-distance = #10
>       score-system-spacing.basic-distance = #20
>       system-system-spacing.basic-distance = #20
>       last-bottom-spacing.basic-distance = #10
>     }

>     global = {
>       \key c \major
>       \time 4/4
>     }

>     sopMusic = \relative {
>       c''4 c c8[( b)] c4
>     }
>     sopWords = \lyricmode {
>       hi hi hi hi
>     }

>     altoMusic = \relative {
>       e'4 f d e
>     }
>     altoWords =\lyricmode {
>       ha ha ha ha
>     }

>     tenorMusic = \relative {
>       g4 a f g
>     }
>     tenorWords = \lyricmode {
>       hu hu hu hu
>     }

>     bassMusic = \relative {
>       c4 c g c
>     }
>     bassWords = \lyricmode {
>       ho ho ho ho
>     }

>     \score {
>       <<
>         \new ChoirStaff <<
>           \new Lyrics = "sopranos" \with {
>             % This is needed for lyrics above a staff
>             \override VerticalAxisGroup.staff-affinity = #DOWN
>           }
>           \new Staff = "women" <<
>             \new Voice = "sopranos" { \voiceOne << \global \sopMusic >> }
>             \new Voice = "altos" { \voiceTwo << \global \altoMusic >> }
>           >>
>           \new Lyrics = "altos"
>           \new Lyrics = "tenors" \with {
>             % This is needed for lyrics above a staff
>             \override VerticalAxisGroup.staff-affinity = #DOWN
>           }

>           \new Staff = "men" <<
>             \clef bass
>             \new Voice = "tenors" { \voiceOne << \global \tenorMusic >> }
>             \new Voice = "basses" { \voiceTwo << \global \bassMusic >> }
>           >>
>           \new Lyrics = "basses"
>           \context Lyrics = "sopranos" \lyricsto "sopranos" \sopWords
>           \context Lyrics = "altos" \lyricsto "altos" \altoWords
>           \context Lyrics = "tenors" \lyricsto "tenors" \tenorWords
>           \context Lyrics = "basses" \lyricsto "basses" \bassWords
>         >>
>         \new PianoStaff <<
>           \new Staff <<
>             \set Staff.printPartCombineTexts = ##f
>             \partCombine
>             << \global \sopMusic >>
>             << \global \altoMusic >>
>           >>
>           \new Staff <<
>             \clef bass
>             \set Staff.printPartCombineTexts = ##f
>             \partCombine
>             << \global \tenorMusic >>
>             << \global \bassMusic >>
>           >>
>         >>
>       >>
>     }

#### LilyPond — 学习手册 v2.24.4 (稳定分支).