lilypond-learning: Score is a (single) compound musical expression

 
 3.1.2 Score is a (single) compound musical expression
 -----------------------------------------------------
 
 We saw the general organization of LilyPond input files in the previous
 section, SeeIntroduction to the LilyPond file structure.  But we
 seemed to skip over the most important part: how do we figure out what
 to write after ‘\score’?
 
    We didn’t skip over it at all.  The big mystery is simply that there
 _is_ no mystery.  This line explains it all:
 
      _A ‘\score’ block must contain exactly one music expression._
 
 To understand what is meant by a music expression, you may find it
 useful to review the tutorial, SeeMusic expressions explained.  In
 that section, we saw how to build big music expressions from small
 pieces – we started from notes, then chords, etc.  Now we’re going to
 start from a big music expression and work our way down.  For
 simplicity, we’ll use just a singer and piano in our example.  We don’t
 need a ‘StaffGroup’ for this ensemble, which simply groups a number of
 staves together with a bracket at the left, but we do need staves for a
 singer and a piano, though.
 
      \score {
        <<
          \new Staff = "singer" <<
          >>
          \new PianoStaff = "piano" <<
          >>
        >>
        \layout { }
      }
 
    Here we have given names to the staves – “singer” and “piano”.  This
 is not essential here, but it is a useful habit to cultivate so that you
 can see at a glance what each stave is for.
 
    Remember that we use ‘<< ... >>’ instead of ‘{ ... }’ to show
 simultaneous music.  This causes the vocal part and piano part to appear
 one above the other in the score.  The ‘<< ... >>’ construct would not
 be necessary for the Singer staff in the example above if it were going
 to contain only one sequential music expression, but ‘<< ... >>’ rather
 than braces is necessary if the music in the Staff is to contain two or
 more simultaneous expressions, e.g.  two simultaneous Voices, or a Voice
 with lyrics.  We’re going to have a voice with lyrics, so angle brackets
 are required.  We’ll add some real music later; for now let’s just put
 in some dummy notes and lyrics.  If you’ve forgotten how to add lyrics
 you may wish to review ‘\addlyrics’ in SeeSetting simple songs.
 
      \score {
        <<
          \new Staff = "singer" <<
            \new Voice = "vocal" { c'1 }
            \addlyrics { And }
          >>
          \new PianoStaff = "piano" <<
            \new Staff = "upper" { c'1 }
            \new Staff = "lower" { c'1 }
          >>
        >>
        \layout { }
      }
      [image src="" alt="[image of music]" text="image of music"]
 
    Now we have a lot more details.  We have the singer’s staff: it
 contains a ‘Voice’ (in LilyPond, this term refers to a set of notes, not
 necessarily vocal notes – for example, a violin generally plays one
 voice) and some lyrics.  We also have a piano staff: it contains an
 upper staff (right hand) and a lower staff (left hand), although the
 lower staff has yet to be given a bass clef.
 
    At this stage, we could start filling in notes.  Inside the curly
 braces next to ‘\new Voice = "vocal"’, we could start writing
 
      \relative c'' {
        r4 d8\noBeam g, c4 r
      }
 
    But if we did that, the ‘\score’ section would get pretty long, and
 it would be harder to understand what was happening.  So let’s use
 variables instead.  These were introduced at the end of the previous
 section, remember?  To ensure the contents of the ‘text’ variable are
 interpreted as lyrics we preface them with ‘\lyricmode’.  Like
 ‘\addlyrics’, this switches the input mode to lyrics.  Without that,
 LilyPond would try to interpret the contents as notes, which would
 generate errors.  (Several other input modes are available, see See
 (lilypond-notation)Input modes.)
 
    So, adding a few notes and a bass clef for the left hand, we now have
 a piece of real music:
 
      melody = \relative c'' { r4 d8\noBeam g, c4 r }
      text   = \lyricmode { And God said, }
      upper  = \relative c'' { <g d g,>2~ <g d g,> }
      lower  = \relative c { b2 e }
      
      \score {
        <<
          \new Staff = "singer" <<
            \new Voice = "vocal" { \melody }
            \addlyrics { \text }
          >>
          \new PianoStaff = "piano" <<
            \new Staff = "upper" { \upper }
            \new Staff = "lower" {
              \clef "bass"
              \lower
            }
          >>
        >>
        \layout { }
      }
      [image src="" alt="[image of music]" text="image of music"]
 
    When writing (or reading) a ‘\score’ section, just take it slowly and
 carefully.  Start with the outer level, then work on each smaller level.
 It also really helps to be strict with indentation – make sure that each
 item on the same level starts on the same horizontal position in your
 text editor.
 
 
 See also
 ........
 
    Notation Reference: See(lilypond-notation)Structure of a score.