@c -*- coding: utf-8; mode: texinfo; -*- @c This file is part of lilypond-learning.tely @ignore Translation of GIT committish: FILL-IN-HEAD-COMMITTISH When revising a translation, copy the HEAD committish of the version that you are working on. See TRANSLATION for details. @end ignore @node Putting it all together @chapter Putting it all together This chapter discusses general LilyPond concepts and how to create @code{\score} blocks. @menu * Extending the templates:: * Scores and parts:: @end menu @node Extending the templates @section Extending the templates You've read the tutorial, you know how to write music. But how can you get the staves that you want? The templates are ok, but what if you want something that isn't covered? @menu * Soprano and cello:: * TODO another example of extending templates:: @end menu @node Soprano and cello @unnumberedsubsec Soprano and cello Start off with the template that seems closest to what you want to end up with. Let's say that you want to write something for soprano and cello. In this case, we would start with @q{Notes and lyrics} (for the soprano part). @example \version "2.11.23" melody = \relative c' @{ \clef treble \key c \major \time 4/4 a4 b c d @} text = \lyricmode @{ Aaa Bee Cee Dee @} \score@{ << \new Voice = "one" @{ \autoBeamOff \melody @} \new Lyrics \lyricsto "one" \text >> \layout @{ @} \midi @{ @} @} @end example Now we want to add a cello part. Let's look at the @q{Notes only} example: @example \version "2.11.23" melody = \relative c' @{ \clef treble \key c \major \time 4/4 a4 b c d @} \score @{ \new Staff \melody \layout @{ @} \midi @{ @} @} @end example We don't need two @code{\version} commands. We'll need the @code{melody} section. We don't want two @code{\score} sections -- if we had two @code{\score}s, we'd get the two parts separately. We want them together, as a duet. Within the @code{\score} section, we don't need two @code{\layout} or @code{\midi}. If we simply cut and paste the @code{melody} section, we would end up with two @code{melody} sections. So let's rename them. We'll call the section for the soprano @code{sopranoMusic} and the section for the cello @code{celloMusic}. While we're doing this, let's rename @code{text} to be @code{sopranoLyrics}. Remember to rename both instances of all these names -- both the initial definition (the @code{melody = relative c' @{ } part) and the name's use (in the @code{\score} section). While we're doing this, let's change the cello part's staff -- celli normally use bass clef. We'll also give the cello some different notes. @example \version "2.11.23" sopranoMusic = \relative c' @{ \clef treble \key c \major \time 4/4 a4 b c d @} sopranoLyrics = \lyricmode @{ Aaa Bee Cee Dee @} celloMusic = \relative c @{ \clef bass \key c \major \time 4/4 d4 g fis8 e d4 @} \score@{ << \new Voice = "one" @{ \autoBeamOff \sopranoMusic @} \new Lyrics \lyricsto "one" \sopranoLyrics >> \layout @{ @} \midi @{ @} @} @end example This is looking promising, but the cello part won't appear in the score -- we haven't used it in the @code{\score} section. If we want the cello part to appear under the soprano part, we need to add @example \new Staff \celloMusic @end example @noindent underneath the soprano stuff. We also need to add @code{<<} and @code{>>} around the music -- that tells LilyPond that there's more than one thing (in this case, @code{Staff}) happening at once. The @code{\score} looks like this now @example \score@{ << << \new Voice = "one" @{ \autoBeamOff \sopranoMusic @} \new Lyrics \lyricsto "one" \sopranoLyrics >> \new Staff \celloMusic >> \layout @{ @} \midi @{ @} @} @end example @noindent This looks a bit messy; the indentation is messed up now. That is easily fixed. Here's the complete soprano and cello template. @lilypond[quote,verbatim,ragged-right] \version "2.11.23" sopranoMusic = \relative c' { \clef treble \key c \major \time 4/4 a4 b c d } sopranoLyrics = \lyricmode { Aaa Bee Cee Dee } celloMusic = \relative c { \clef bass \key c \major \time 4/4 d4 g fis8 e d4 } \score{ << << \new Voice = "one" { \autoBeamOff \sopranoMusic } \new Lyrics \lyricsto "one" \sopranoLyrics >> \new Staff \celloMusic >> \layout { } \midi { } } @end lilypond @node TODO another example of extending templates @unnumberedsubsec TODO another example of extending templates TODO: somebody else fill this in. You guys like vocal stuff, right? Get to it. :) -gp @node Scores and parts @section Scores and parts TODO: this is really old stuff from the really old tutorial. Rewrite, fix, etc. -gp In orchestral music, all notes are printed twice. Once in a part for the musicians, and once in a full score for the conductor. Variables can be used to avoid double work. The music is entered once, and stored in a variable. The contents of that variable is then used to generate both the part and the full score. It is convenient to define the notes in a special file. For example, suppose that the file @file{horn-music.ly} contains the following part of a horn/@/bassoon duo @example hornNotes = \relative c @{ \time 2/4 r4 f8 a cis4 f e d @} @end example @noindent Then, an individual part is made by putting the following in a file @example \include "horn-music.ly" \header @{ instrument = "Horn in F" @} @{ \transpose f c' \hornNotes @} @end example The line @example \include "horn-music.ly" @end example @noindent substitutes the contents of @file{horn-music.ly} at this position in the file, so @code{hornNotes} is defined afterwards. The command @code{\transpose f@tie{}c'} indicates that the argument, being @code{\hornNotes}, should be transposed by a fifth upwards. Sounding @samp{f} is denoted by notated @code{c'}, which corresponds with the tuning of a normal French Horn in@tie{}F. The transposition can be seen in the following output @lilypond[quote,ragged-right] \transpose f c' \relative c { \time 2/4 r4 f8 a cis4 f e d } @end lilypond In ensemble pieces, one of the voices often does not play for many measures. This is denoted by a special rest, the multi-measure rest. It is entered with a capital @samp{R} followed by a duration (@code{1}@tie{}for a whole note, @code{2}@tie{}for a half note, etc.). By multiplying the duration, longer rests can be constructed. For example, this rest takes 3@tie{}measures in 2/4 time @example R2*3 @end example When printing the part, multi-rests must be condensed. This is done by setting a run-time variable @example \set Score.skipBars = ##t @end example @noindent This command sets the property @code{skipBars} in the @code{Score} context to true (@code{##t}). Prepending the rest and this option to the music above, leads to the following result @lilypond[quote,ragged-right] \transpose f c' \relative c { \time 2/4 \set Score.skipBars = ##t R2*3 r4 f8 a cis4 f e d } @end lilypond The score is made by combining all of the music together. Assuming that the other voice is in @code{bassoonNotes} in the file @file{bassoon-music.ly}, a score is made with @example \include "bassoon-music.ly" \include "horn-music.ly" << \new Staff \hornNotes \new Staff \bassoonNotes >> @end example @noindent leading to @lilypond[quote,ragged-right] \relative c << \new Staff { \time 2/4 R2*3 r4 f8 a cis4 f e d } \new Staff { \clef bass r4 d,8 f | gis4 c | b bes | a8 e f4 | g d | gis f } >> @end lilypond