LilyPond 学习手册: 4.4.2 Four-part SATB vocal score

### 4.4.2 Four-part SATB vocal score

Most vocal scores of music written for four-part mixed choir with orchestral accompaniment such as Mendelssohn’s Elijah or Handel’s Messiah have the choral music and words on four staves, one for each of SATB, with a piano reduction of the orchestral accompaniment underneath. Here’s an example from Handel’s Messiah:

注意：This layout can be achieved very easily using the built-in template: `satb.ly`, see Built-in templates. But for ease of use this template deliberately hides the necessary context structure, instead providing it automatically. So for purposes of learning let us see how to build this up from scratch. You may need to do this if the built-in template does not meet your needs adequately.

The nearest copy-and-edit template to this layout is SATB vocal score and automatic piano reduction – but we need to change the layout and add a piano accompaniment which is not derived automatically from the vocal parts. The variables holding the music and words for the vocal parts are fine, but we shall need to add variables for the piano reduction.

The order in which the contexts appear in the ChoirStaff of the template do not correspond with the order in the vocal score shown above. We need to rearrange them so there are four staves with the words written directly underneath the notes for each part. All the voices should be `\voiceOne`, which is the default, so the `\voiceXXX` commands should be removed. We also need to specify the tenor clef for the tenors. The way in which lyrics are specified in the template has not yet been encountered so we need to use the method with which we are familiar. We should also add the names of each staff.

Doing this gives for our ChoirStaff:

>     \new ChoirStaff <<
>       \new Staff = "sopranos"
>       \with { instrumentName = "Soprano" }
>       <<
>         \new Voice = "sopranos" {
>           \global
>           \sopranoMusic
>         }
>       >>
>       \new Lyrics \lyricsto "sopranos" {
>         \sopranoWords
>       }
>       \new Staff = "altos"
>       \with { instrumentName = "Alto" }
>       <<
>         \new Voice = "altos" {
>           \global
>           \altoMusic
>         }
>       >>
>       \new Lyrics \lyricsto "altos" {
>         \altoWords
>       }
>       \new Staff = "tenors"
>       \with { instrumentName = "Tenor" }
>       <<
>         \new Voice = "tenors" {
>           \global
>           \tenorMusic
>         }
>       >>
>       \new Lyrics \lyricsto "tenors" {
>         \tenorWords
>       }
>       \new Staff = "basses"
>       \with { instrumentName = "Bass" }
>       <<
>         \new Voice = "basses" {
>           \global
>           \bassMusic
>         }
>       >>
>       \new Lyrics \lyricsto "basses" {
>         \bassWords
>       }
>     >>  % end ChoirStaff

Next we must work out the piano part. This is easy - we just pull out the piano part from the ‘Solo piano’ template:

>     \new PianoStaff \with { instrumentName = "Piano  " }
>     <<
>       \new Staff = "upper" \upper
>       \new Staff = "lower" \lower
>     >>

and add the variable definitions for `upper` and `lower`.

The ChoirStaff and PianoStaff must be combined using angle brackets as we want them to be stacked one above the other:

>     <<  % combine ChoirStaff and PianoStaff one above the other
>       \new ChoirStaff <<
>         \new Staff = "sopranos" <<
>           \new Voice = "sopranos" {
>             \global
>             \sopranoMusic
>           }
>         >>
>         \new Lyrics \lyricsto "sopranos" {
>           \sopranoWords
>          }
>         \new Staff = "altos" <<
>           \new Voice = "altos" {
>             \global
>             \altoMusic
>           }
>         >>
>         \new Lyrics \lyricsto "altos" {
>           \altoWords
>         }
>         \new Staff = "tenors" <<
>           \clef "G_8"  % tenor clef
>           \new Voice = "tenors" {
>             \global
>             \tenorMusic
>           }
>         >>
>         \new Lyrics \lyricsto "tenors" {
>           \tenorWords
>         }
>         \new Staff = "basses" <<
>           \clef "bass"
>           \new Voice = "basses" {
>             \global
>             \bassMusic
>           }
>         >>
>         \new Lyrics \lyricsto "basses" {
>           \bassWords
>         }
>       >>  % end ChoirStaff

>       \new PianoStaff \with { instrumentName = "Piano" }
>       <<
>         \new Staff = "upper" \upper
>         \new Staff = "lower" \lower
>       >>
>     >>

Combining all these together and adding the music for the three bars of the example above gives:

>     global = { \key d \major \time 4/4 }
>     sopranoMusic = \relative {
>       \clef "treble"
>       r4 d''2 a4 | d4. d8 a2 | cis4 d cis2 |
>     }
>     sopranoWords = \lyricmode {
>       Wor -- thy | is the lamb | that was slain |
>     }
>     altoMusic = \relative {
>       \clef "treble"
>       r4 a'2 a4 | fis4. fis8 a2 | g4 fis fis2 |
>     }
>     altoWords = \sopranoWords
>     tenorMusic = \relative {
>       \clef "G_8"
>       r4 fis'2 e4 | d4. d8 d2 | e4 a, cis2 |
>     }
>     tenorWords = \sopranoWords
>     bassMusic = \relative {
>       \clef "bass"
>       r4 d'2 cis4 | b4. b8 fis2 | e4 d a'2 |
>     }
>     bassWords = \sopranoWords
>     upper = \relative {
>       \clef "treble"
>       \global
>       r4 <a' d fis>2 <a e' a>4 |
>       <d fis d'>4. <d fis d'>8 <a d a'>2 |
>       <g cis g'>4 <a d fis> <a cis e>2 |
>     }
>     lower = \relative {
>       \clef "bass"
>       \global
>       <d, d'>4 <d d'>2 <cis cis'>4 |
>       <b b'>4. <b' b'>8 <fis fis'>2 |
>       <e e'>4 <d d'> <a' a'>2 |
>     }

>     \score {
>       <<  % combine ChoirStaff and PianoStaff in parallel
>         \new ChoirStaff <<
>           \new Staff = "sopranos"
>           \with { instrumentName = "Soprano" }
>           <<
>             \new Voice = "sopranos" {
>               \global
>               \sopranoMusic
>             }
>           >>
>           \new Lyrics \lyricsto "sopranos" {
>             \sopranoWords
>           }
>           \new Staff = "altos"
>           \with { instrumentName = "Alto" }
>           <<
>             \new Voice = "altos" {
>               \global
>               \altoMusic
>             }
>           >>
>           \new Lyrics \lyricsto "altos" {
>             \altoWords
>           }
>           \new Staff = "tenors"
>           \with { instrumentName = "Tenor" }
>           <<
>             \new Voice = "tenors" {
>               \global
>               \tenorMusic
>             }
>           >>
>           \new Lyrics \lyricsto "tenors" {
>             \tenorWords
>           }
>           \new Staff = "basses"
>           \with { instrumentName = "Bass" }
>           <<
>             \new Voice = "basses" {
>               \global
>               \bassMusic
>             }
>           >>
>           \new Lyrics \lyricsto "basses" {
>             \bassWords
>           }
>         >>  % end ChoirStaff

>         \new PianoStaff
>         \with { instrumentName = "Piano  " }
>         <<
>           \new Staff = "upper" \upper
>           \new Staff = "lower" \lower
>         >>
>       >>
>     }

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