LilyPond input that was used to generate that image.
Try it on this image
-@lilypond[fragment,quote,ragged-right,relative=2]
-c-\markup { \bold \huge { Click here. } }
+@c no verbatim here
+@lilypond[quote,ragged-right]
+\relative c'' {
+ c-\markup { \bold \huge { Click here. } }
+}
@end lilypond
-By cutting and pasting everything from the @qq{Start cut-&-pastable-section}
-to the end of the file, you have a
+By cutting and pasting everything in the @qq{ly snippet} section, you have a
starting template for experiments. If you like learning in this way,
you will probably want to print out or bookmark the
@ref{Cheat sheet}, which is a table listing of the most common
@end ifhtml
@menu
-* First steps (compiling a file)::
+* First steps::
+* Single staff notation::
+* Multiple notes at once::
+* Songs::
+* Final touches::
+@end menu
+
+
+@node First steps
+@section First steps
+
+This section gives a basic introduction to working with LilyPond.
+
+@menu
+* Compiling a file::
* Simple notation::
* Working on text files::
* How to read the tutorial::
-* Accidentals and key signatures::
-* Ties and slurs::
-* Articulation and dynamics::
-* Automatic and manual beams::
-* Advanced rhythmic commands::
-* Music expressions explained::
-* More staves::
-* Combining notes into chords::
-* Printing lyrics::
-* A lead sheet::
-* Adding titles::
-* Single staff polyphony::
-* Piano staves::
-* Organizing larger pieces::
-* An orchestral part::
-* After the tutorial::
-* Octave entry::
@end menu
-@node First steps (compiling a file)
-@section First steps (compiling a file)
+@node Compiling a file
+@subsection Compiling a file
The first example demonstrates how to start working with LilyPond. To
create sheet music, we write a text file that specifies the
@noindent
the result looks like this
+@c in this case we don't want verbatim
@lilypond[quote,ragged-right]
{
c' e' g' e'
@end lilypond
@strong{Warning:} Every piece of LilyPond input needs to have @strong{@{ curly
-braces @}} placed around the input. The braces should be also be
+braces @}} placed around the input. The braces should also be
surrounded by a space unless they are at the beginning or end of a
line to avoid ambiguities. These may be omitted in some examples in this
manual, but don't forget them in your own music!
@noindent
The result is the file @file{test.pdf} which you can print or view
with the standard facilities of your operating system.@footnote{If
-your system does not have any tools installed, you can try
+your system does not have any such tools installed, you can try
@uref{http://@/www@/.cs@/.wisc@/.edu/@/~ghost/,Ghostscript}, a freely
available package for viewing and printing PDF and PostScript files.}
@node Simple notation
-@section Simple notation
+@subsection Simple notation
LilyPond will add some notation elements automatically. In the next
example, we have only specified four pitches, but LilyPond has
@node Working on text files
-@section Working on text files
+@subsection Working on text files
LilyPond input files are treated like files in most programming languages:
they are case sensitive, white-space insensitive, expressions are
@node How to read the tutorial
-@section How to read the tutorial
+@subsection How to read the tutorial
As we saw in @ref{Working on text files}, LilyPond input must be
surrounded by @{ @} marks or a @code{\relative c'' @{ ... @}}. For the
of your own.
+@node Single staff notation
+@section Single staff notation
+
+This section introduces common notation that is used for one voice
+on one staff.
+
+@menu
+* Relative note names::
+* Accidentals and key signatures::
+* Ties and slurs::
+* Articulation and dynamics::
+* Automatic and manual beams::
+* Advanced rhythmic commands::
+@end menu
+
+
+@node Relative note names
+@subsection Relative note names
+
+As we saw in @ref{Simple notation}, LilyPond calculates the pitch of
+each note relative to the previous one@footnote{There is another mode of
+entering pitches, @ref{Absolute note names}, but in practice relative
+mode is much easier and safer to use.}. If no extra octave marks
+(@code{'} and @code{,}) are added, it assumes that each pitch is within
+a fourth of the previous note.
+
+LilyPond examines pitches based on the note names -- in other words,
+an augmented fourth is @emph{not} the same as a diminished fifth. If we
+begin at a C, then an F-sharp will be placed a higher than the C, while
+a G-flat will be placed lower than the C.
+
+@lilypond[quote,ragged-right,verbatim,fragment,relative=2]
+c2 fis
+c2 ges
+@end lilypond
+
+@moreinfo
+@quotation
+@table @asis
+@item Relative octaves
+see @ref{Relative octaves}.
+@item Octave check
+see @ref{Octave check}.
+@end table
+@end quotation
+
+
+
@node Accidentals and key signatures
-@section Accidentals and key signatures
+@subsection Accidentals and key signatures
@subheading Accidentals
@node Ties and slurs
-@section Ties and slurs
+@subsection Ties and slurs
@cindex ties
@subheading Ties
@node Articulation and dynamics
-@section Articulation and dynamics
+@subsection Articulation and dynamics
@cindex articulation
@cindex accents
@cindex staccato
@subheading Articulations
-@c FIXME: change to @rglos once the term is added (articulations)
-Common articulations can be added to a note using a dash (@samp{-}) and a
-single character:
+Common @rglos{articulations} can be added to a note using a dash @samp{-}
+and a single character:
@lilypond[quote,ragged-right,verbatim,fragment,relative=2]
c-. c-- c-> c-^ c-+ c-_
@node Automatic and manual beams
-@section Automatic and manual beams
+@subsection Automatic and manual beams
@cindex beams, by hand
All @rglos{beam}s are drawn automatically:
@node Advanced rhythmic commands
-@section Advanced rhythmic commands
+@subsection Advanced rhythmic commands
@cindex pickup
@cindex anacruse
@cindex partial measure
@subheading Partial measure
-@c FIXME: glossary "anacrusis".
-A pickup (or @q{anacrusis}) is entered with the keyword @code{\partial}. It
-is followed by a duration: @code{\partial 4} is a quarter note pickup
-and @code{\partial 8} an eighth note.
+A pickup (or @rglos{anacrusis}) is entered with the keyword
+@code{\partial}. It is followed by a duration: @code{\partial 4} is
+a quarter note pickup and @code{\partial 8} an eighth note.
@lilypond[quote,ragged-right,verbatim,fragment,relative=2]
\partial 8
@end table
@end quotation
-@c zzz
+
+@node Multiple notes at once
+@section Multiple notes at once
+
+This section introduces having more than one note at the same time:
+multiple instruments, multiple staves for a single instrument (i.e. piano),
+and chords.
+
+Polyphony in music refers to having more than one voice occurring in
+a piece of music. Polyphony in LilyPond refers to having more than
+one voice on the same staff.
+
+@menu
+* Music expressions explained::
+* Multiple staves::
+* Piano staves::
+* Single staff polyphony::
+* Combining notes into chords::
+@end menu
+
@node Music expressions explained
-@section Music expressions explained
+@subsection Music expressions explained
In LilyPond input files, music is represented by @emph{music
expressions}. A single note is a music expression, although it is not
@lilypond[quote,ragged-right,verbatim]
\relative c'' {
- c <<c e>> << { e f } { c <<b d>> } >>
+ c2 <<c e>>
+ << { e f } { c <<b d>> } >>
}
@end lilypond
-
+@cindex expression
+@cindex music expression
@subheading Analogy: mathematical expressions
This mechanism is similar to mathematical
((1 + 2) * 3) / (4 * 5)
@end example
-@cindex expression
-@cindex music expression
This is a sequence of expressions, where each expression is contained
in the next (larger) one. The simplest expressions are numbers, and larger
ones are made by combining expressions with operators (like @samp{+},
for complex music like polyphonic scores.
-@c zz
-
-@node More staves
-@section More staves
+@node Multiple staves
+@subsection Multiple staves
-As we saw in @ref{Music expressions explained}, LilyPond is blah blah.
+As we saw in @ref{Music expressions explained}, LilyPond input files
+are constructed out of music expressions. If the score begins with
+simultaneous music expressions, LilyPond creates multiples staves. However,
+it is easier to see what happens if we create each staff explicitly.
To print more than one staff, each piece of music that makes up a
staff is marked by adding @code{\new Staff} before it. These
@code{Staff} elements are then combined in parallel with @code{<<} and
-@code{>>}, as demonstrated here
+@code{>>}:
-@lilypond[quote,fragment,verbatim]
-<<
- \new Staff { \clef treble c'' }
- \new Staff { \clef bass c }
->>
+@lilypond[quote,ragged-right,verbatim]
+\relative c'' {
+ <<
+ \new Staff { \clef treble c }
+ \new Staff { \clef bass c,, }
+ >>
+}
@end lilypond
-
The command @code{\new} introduces a @q{notation context.} A notation
context is an environment in which musical events (like notes or
@code{\clef} commands) are interpreted. For simple pieces, such
notation contexts are created automatically. For more complex pieces, it
-is best to mark contexts explicitly. This ensures that each fragment
-gets its own stave.
+is best to mark contexts explicitly.
-There are several types of contexts. @code{Staff}, @code{Voice} and
-@code{Score} handle melodic notation, while @code{Lyrics} sets lyric
+There are several types of contexts. @code{Score}, @code{Staff},
+and @code{Voice} handle melodic notation, while @code{Lyrics} sets lyric
texts and @code{ChordNames} prints chord names.
In terms of syntax, prepending @code{\new} to a music expression
sign in mathematics. The formula @math{(4+5)} is an expression, so
@math{-(4+5)} is a bigger expression.
-We can now typeset a melody with two staves
+Time signatures entered in one staff affects all other staves, but
+the key signature of one staff does @emph{not} affect other
+staves@footnote{This behavior may be changed if desired; see
+@ref{Changing defaults} for details.}.
+
+@lilypond[quote,ragged-right,verbatim]
+\relative c'' {
+ <<
+ \new Staff { \clef treble \time 3/4 c }
+ \new Staff { \clef bass \key d \major c,, }
+ >>
+}
+@end lilypond
+
-@c TODO: (c) status of this Paul McCartney (?) song (let's all stand together)
-@lilypond[fragment,quote,verbatim,ragged-right]
-\relative <<
- \new Staff {
- \time 3/4
- \clef treble
- e'2 d4 c2 b4 a8[ a]
- b[ b] g[ g] a2.
- }
- \new Staff {
- \clef bass
- c,,2 e4 g2.
- f4 e d c2.
- }
+@node Piano staves
+@subsection Piano staves
+
+@cindex staff switch, manual
+@cindex cross staff voice, manual
+Piano music is typeset in two staves connected by a brace. Printing
+such a staff is similar to the polyphonic example in @ref{Multiple staves},
+but now this entire expression is inserted inside a @code{PianoStaff}:
+
+@example
+\new PianoStaff <<
+ \new Staff @dots{}
+ \new Staff @dots{}
>>
-@end lilypond
+@end example
-For more information on contexts see the description in
-@ref{Interpretation contexts}.
+Here is a small example
-@c zz
+@lilypond[quote,ragged-right,verbatim]
+\relative c'' {
+ \new PianoStaff <<
+ \new Staff { \time 2/4 c4 e g g, }
+ \new Staff { \clef bass c,, c' e c }
+ >>
+}
+@end lilypond
+@moreinfo
+@quotation
+See @ref{Piano music}.
+@end quotation
-@node Combining notes into chords
-@section Combining notes into chords
+@node Single staff polyphony
+@subsection Single staff polyphony
-@cindex chords
-Chords can be made by surrounding pitches with angle brackets.
-Angle brackets are the symbols @samp{<} and @samp{>}.
+@cindex polyphony
+@cindex multiple voices
+@cindex voices, more -- on a staff
+When different melodic lines are combined on a single staff they are
+printed as polyphonic voices; each voice has its own stems, slurs and
+beams, and the top voice has the stems up, while the bottom voice has
+them down.
+
+Entering such parts is done by entering each voice as a sequence (with
+@code{@{...@}}) and combining these simultaneously, separating the
+voices with @code{\\}
-@lilypond[quote,relative=1,fragment,verbatim]
-r4 <c e g>4 <c f a>8
+@lilypond[quote,ragged-right,verbatim,fragment,relative=2]
+<<
+ { a4 g2 f4~ f4 } \\
+ { r4 g4 f2 f4 }
+>>
@end lilypond
+For polyphonic music typesetting, spacer rests can also be convenient;
+these are rests that do not print. They are useful for filling up
+voices that temporarily do not play. Here is the same example with a
+spacer rest (@samp{s}) instead of a normal rest (@samp{r}),
-You can combine markings like beams and ties with chords. They must
-be placed outside the angled brackets
+@lilypond[quote,ragged-right,verbatim,fragment,relative=2]
+<<
+ { a4 g2 f4~ f4 } \\
+ { s4 g4 f2 f4 }
+>>
+@end lilypond
+
+@noindent
+Again, these expressions can be nested arbitrarily.
-@lilypond[quote,relative=1,fragment,verbatim]
-r4 <c e g>8[ <c f a>]~ <c f a>
+@lilypond[quote,fragment,verbatim,relative=2,fragment]
+<<
+ \new Staff <<
+ { a4 g2 f4~ f4 } \\
+ { s4 g4 f2 f4 }
+ >>
+ \new Staff <<
+ \clef bass
+ { <c g>1 ~ <c g>4 } \\
+ { e,,4 d e2 ~ e4}
+ >>
+>>
@end lilypond
-@example
-r4 <c e g>8\>( <c e g> <c e g> <c f a>\!)
-@end example
+@moreinfo
+@quotation
+See @ref{Basic polyphony}.
+@end quotation
+
+
+@node Combining notes into chords
+@subsection Combining notes into chords
+
+@cindex chords
+Chords can be made by surrounding pitches with single angle brackets. Angle
+brackets are the symbols @samp{<} and @samp{>}.
-@lilypond[quote,relative=1,fragment]
-\slurUp
-r4 <c e g>8\>( <c e g> <c e g> <c f a>\!)
+@lilypond[quote,fragment,verbatim,relative=2,fragment]
+r4 <c e g>4 <c f a>2
@end lilypond
+You can combine markings like beams and ties with chords. They must
+be placed outside the angled brackets
+@lilypond[quote,fragment,verbatim,relative=2,fragment]
+r4 <c e g>8[ <c f a>]~ <c f a>2
+@end lilypond
-@c TODO post-2.6 reorg
-@c This is good info, but I wouldn't call it a comment. IMO it should
-@c be moved somewhere else.
+@lilypond[quote,fragment,verbatim,relative=2,fragment]
+r4 <c e g>8\>( <c e g> <c e g>4 <c f a>\!)
+@end lilypond
-@cindex versioning
-There is a special statement that is a kind of comment. The @code{\version}
-statement marks for which version of LilyPond the file was written.
-To mark a file for version 2.10.1, use
+@node Songs
+@section Songs
-@example
-\version "2.10.1"
-@end example
+This section introduces vocal music and simple song sheets.
-@noindent
-These annotations make future upgrades of LilyPond go more
-smoothly. Changes in the syntax are handled with a special program,
-@file{convert-ly} (see @ref{Updating files with convert-ly}), and it uses
-@code{\version} to determine what rules to apply.
+@menu
+* Printing lyrics::
+* A lead sheet::
+@end menu
@node Printing lyrics
-@section Printing lyrics
-@cindex lyrics
-
-@c TODO: (c) status of the Queen fragment.
+@subsection Printing lyrics
@cindex Lyrics
@cindex Songs
-Lyrics are entered by separating each syllable with a space
-
-@example
-I want to break free
-@end example
-
-Consider the melody
+Consider a simple melody:
-@lilypond[quote,verbatim,fragment,ragged-right]
-\relative {
- r4 c \times 2/3 { f g g }
- \times 2/3 { g4( a2) }
+@lilypond[quote,ragged-right,verbatim]
+\relative c'' {
+ a4 e c r4
+ b2 c4( d)
}
@end lilypond
The lyrics can be set to these notes, combining both with the
-@code{\addlyrics} keyword
+@code{\addlyrics} keyword. Lyrics are entered by separating each
+syllable with a space.
-@lilypond[quote,verbatim,fragment,ragged-right]
+@lilypond[quote,ragged-right,verbatim]
<<
- \relative {
- r4 c \times 2/3 { f g g }
- \times 2/3 { g4( a2) }
+ \relative c'' {
+ a4 e c r4
+ b2 c4( d)
}
- \addlyrics { I want to break free }
+ \addlyrics { One day this shall be free }
>>
@end lilypond
@cindex melisma
@cindex extender line
-@c synonyms?
This melody ends on a @rglos{melisma}, a single syllable (@q{free})
sung to more than one note. This is indicated with an @emph{extender
-line}. It is entered as two underscores, i.e.,
+line}. It is entered as two underscores @code{__}:
-@example
-@{ I want to break free __ @}
-@end example
-
-@lilypond[fragment,quote,ragged-right]
+@lilypond[quote,ragged-right,verbatim]
<<
- \relative {
- r4 c \times 2/3 { f g g }
- \times 2/3 { g4( a2) }
+ \relative c'' {
+ a4 e c r4
+ b2 c4( d)
}
- \addlyrics { I want to break free __ }
+ \addlyrics { One day this shall be free __ }
>>
@end lilypond
Similarly, hyphens between words can be entered as two dashes,
resulting in a centered hyphen between two syllables
-@example
-A -- le gri -- a
-@end example
-
-@c no ragged-right here, because otherwise the hypens get lost.
-@lilypond[fragment,quote]
+@c no ragged-right here because otherwise the hypens get lost.
+@lilypond[quote,verbatim]
<<
- \relative {
+ \relative c' {
\time 2/4
- f4 f c' c
+ f4 f c c
}
- \addlyrics { A -- le gri -- a }
+ \addlyrics { A -- le -- gri -- a }
>>
@end lilypond
-More options, like putting multiple lines of lyrics below a melody are
+@moreinfo
+@quotation
+More options, such as putting multiple stanzas below a melody, are
discussed in @ref{Vocal music}.
+@end quotation
@node A lead sheet
-@section A lead sheet
+@subsection A lead sheet
@cindex Lead sheets
@cindex chords
@cindex chord names
@c TODO: revise this, \chords { } is shorter and more intuitive.
+@c I need help for this. -gp
-In popular music, it is common to denote accompaniment with chord names.
+In popular music it is common to denote accompaniment with chord names.
Such chords can be entered like notes,
-@lilypond[quote,verbatim,ragged-right]
+@lilypond[quote,ragged-right,verbatim]
\chordmode { c2 f4. g8 }
@end lilypond
When put together, chord names, lyrics and a melody form
a lead sheet, for example,
-@example
-<<
- \chords @{ @emph{chords} @}
- @emph{the melody}
- \addlyrics @{ @emph{the text} @}
->>
-@}
-@end example
-
-@lilypond[quote,ragged-right]
+@lilypond[quote,verbatim,ragged-right]
+% this melody needs to be changed. See my new example in 2.4.1. -gp
<<
\chords { r2 c:sus4 f }
\relative {
in @ref{Chords}.
+@node Final touches
+@section Final touches
+
+This is the final section of the tutorial; it demonstrates how to add the
+final touches to simple pieces, and provides an introduction to the rest
+of the manual.
+
+@menu
+* Version number::
+* Adding titles::
+* Absolute note names::
+* Organizing pieces with identifiers::
+* After the tutorial::
+* How to read the manual::
+@end menu
+
+
+@node Version number
+@subsection Version number
+
+@cindex versioning
+The @code{\version} statement marks for which version of LilyPond the file
+was written. To mark a file for version 2.10.1, place
+
+@example
+\version "2.10.1"
+@end example
+
+@noindent
+at the top of your LilyPond file.
+
+These annotations make future upgrades of LilyPond go more
+smoothly. Changes in the syntax are handled with a special program,
+@file{convert-ly} (see @ref{Updating files with convert-ly}), and it uses
+@code{\version} to determine what rules to apply.
+
+
@node Adding titles
-@section Adding titles
+@subsection Adding titles
-Bibliographic information is entered in a separate block, the
-@code{\header} block. The name of the piece, its composer, etc., are
-entered as an assignment, within @code{\header
-@{@tie{}@dots{}@tie{}@}}. The @code{\header} block is usually put at
-the top of the file. For example,
+The title, composer, opus number, and similar information are entered
+in the @code{\header} block. This exists outside of the main
+music expression; the @code{\header} block is usually placed underneath
+the @ref{Version number}.
@example
+\version "2.10.1"
\header @{
- title = "Miniature"
- composer = "Igor Stravinsky"
+ title = "Symphony"
+ composer = "Me"
+ opus = "Op. 9"
@}
-@{ @dots{} @}
+@{
+ @dots{} music @dots{}
+@}
@end example
-
When the file is processed, the title and composer are printed above
the music. More information on titling can be found in @ref{Creating
titles}.
-@node Single staff polyphony
-@section Single staff polyphony
+@node Absolute note names
+@subsection Absolute note names
-@cindex polyphony
-@cindex multiple voices
-@cindex voices, more -- on a staff
-When different melodic lines are combined on a single staff they are
-printed as polyphonic voices; each voice has its own stems, slurs and
-beams, and the top voice has the stems up, while the bottom voice has
-them down.
+So far we have always used @code{\relative} to define pitches. This is
+the easiest way to enter most music, but another way of defining pitches
+exists: absolute mode.
-Entering such parts is done by entering each voice as a sequence (with
-@code{@{...@}}), and combining these simultaneously, separating the
-voices with @code{\\}
+If you omit the @code{\relative}, LilyPond treats all pitches as
+absolute values. A @code{c'} will always mean middle C, a @code{b} will
+always mean the note one step below middle C, and a @code{g,} will
+always mean the note on the bottom staff of the bass clef.
-@lilypond[quote,verbatim,relative=2,fragment]
-<< { a4 g2 f4~ f4 } \\
- { r4 g4 f2 f4 } >>
+@lilypond[quote,verbatim,ragged-right]
+{
+ \clef bass
+ c' b g, g,
+ g, f, f c'
+}
@end lilypond
-For polyphonic music typesetting, spacer rests can also be convenient;
-these are rests that do not print. They are useful for filling up
-voices that temporarily do not play. Here is the same example with a
-spacer rest (@samp{s}) instead of a normal rest (@samp{r}),
+Here is a four-octave scale:
-@lilypond[quote,verbatim,relative=2,fragment]
-<< { a4 g2 f4~ f4 } \\
- { s4 g4 f2 f4 } >>
+@lilypond[quote,verbatim,ragged-right]
+{
+ \clef bass
+ c, d, e, f,
+ g, a, b, c
+ d e f g
+ a b c' d'
+ \clef treble
+ e' f' g' a'
+ b' c'' d'' e''
+ f'' g'' a'' b''
+ c'''1
+}
@end lilypond
-@noindent
-Again, these expressions can be nested arbitrarily
+As you can see, writing a melody in the treble clef involves a lot of
+quote ' marks. Consider this fragment from Mozart:
-@lilypond[quote,fragment,verbatim,relative=2,fragment]
-<<
- \new Staff <<
- { a4 g2 f4~ f4 } \\
- { s4 g4 f2 f4 }
- >>
- \new Staff <<
- \clef bass
- { <c g>1 ~ <c g>4 } \\
- { e,,4 d e2 ~ e4}
- >>
->>
+@lilypond[quote,verbatim,ragged-right]
+{
+ \key a \major
+ \time 6/8
+ cis''8. d''16 cis''8 e''4 e''8
+ b'8. cis''16 b'8 d''4 d''8
+}
@end lilypond
-More features of polyphonic typesetting are described in this manual
-in section @ref{Basic polyphony}.
-
-
-@node Piano staves
-@section Piano staves
-
-@cindex staff switch, manual
-@cindex cross staff voice, manual
-Piano music is typeset in two staves connected by a brace. Printing
-such a staff is similar to the polyphonic example in @ref{More staves},
-
-@example
-<< \new Staff @{ @dots{} @}
- \new Staff @{ @dots{} @} >>
-@end example
+All these quotes makes the input less readable and it is a source of
+errors. With @code{\relative}, the previous example is much easier
+to read:
-@noindent
-but now this entire expression must be interpreted as a
-@code{PianoStaff}
-
-@example
-\new PianoStaff << \new Staff @dots{} >>
-@end example
-
-Here is a small example
-
-@lilypond[quote,verbatim,relative=1,fragment]
-\new PianoStaff <<
- \new Staff { \time 2/4 c4 c g' g }
- \new Staff { \clef bass c,, c' e c }
->>
+@lilypond[quote,verbatim,ragged-right]
+\relative c'' {
+ \key a \major
+ \time 6/8
+ cis8. d16 cis8 e4 e8
+ b8. cis16 b8 d4 d8
+}
@end lilypond
-More information on formatting piano music is given in @ref{Piano music}.
+If you make a mistake with an octave mark (@code{'} or @code{,}) while
+working in @code{\relative} mode, it is very obvious -- many notes will
+be in the wrong octave. When working in absolute mode, a single mistake
+will not be as visible, and will not be as easy to find.
+However, absolute mode is useful for music which has large intervals, and
+is extremely useful for computer-generated LilyPond files.
-@node Organizing larger pieces
-@section Organizing larger pieces
+
+@node Organizing pieces with identifiers
+@subsection Organizing pieces with identifiers
When all of the elements discussed earlier are combined to produce
-larger files, the @code{\score} blocks get a lot bigger because the
-music expressions are longer, and, in the case of polyphonic music,
-more deeply nested. Such large expressions can become unwieldy.
+larger files, the music expressions get a lot bigger. In polyphonic
+music with many staves, the input files can become very confusing. We can
+reduce this confusion by using @emph{identifiers}.
-By using variables, also known as identifiers, it is possible to break
-up complex music expressions. An identifier is assigned as follows
+Identifiers (also known as variables or macros), we can break up
+complex music expressions. An identifier is assigned as follows
@example
namedMusic = @{ @dots{} @}
@end example
-@noindent
-The contents of the music expression @code{namedMusic}, can be used
-later by preceding the name with a backslash, i.e., @code{\namedMusic}.
-In the next example, a two-note motive is repeated two times by using
-variable substitution
-
-@lilypond[quote,ragged-right,verbatim,nofragment]
-seufzer = {
- e'4( dis'4)
+The contents of the music expression @code{namedMusic} can be used
+later by placing a backslash in front of the name
+(@code{\namedMusic}, just like a normal LilyPond command). Identifiers
+must be defined @emph{before} the main music expression.
+
+@lilypond[quote,verbatim,ragged-right]
+violin = \new Staff { \relative c'' {
+ a4 b c b
+}}
+cello = \new Staff { \relative c {
+ \clef bass
+ e2 d
+}}
+{
+ <<
+ \violin
+ \cello
+ >>
}
-{ \seufzer \seufzer }
@end lilypond
+@noindent
The name of an identifier should have alphabetic characters only: no
-numbers, underscores, or dashes. The assignment should be outside of
-running music.
+numbers, underscores, or dashes.
It is possible to use variables for many other types of objects in the
input. For example,
@end example
Depending on its contents, the identifier can be used in different
-places. The following example uses the above variables
+places. The following example uses the above variables:
@example
\paper @{
@{ c4^\name @}
@end example
-More information on the possible uses of identifiers is given in the
-technical manual, in @ref{Input variables and Scheme}.
-@c fixme: the ref is too technical.
-
-
-@node An orchestral part
-@section An orchestral part
-
-In orchestral music, all notes are printed twice. Once in a part for
-the musicians, and once in a full score for the conductor. Identifiers 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
-
-More in-depth information on preparing parts and scores can be found
-in the notation manual; see @ref{Orchestral music}.
-
-Setting run-time variables (@q{properties}) is discussed in
-@ref{Changing context properties on the fly}.
-
@node After the tutorial
-@section After the tutorial
+@subsection After the tutorial
After finishing the tutorial, you should probably try writing a
-piece or two. Start with one of the @ref{Example templates} and
+piece or two. Start with one of the @ref{Templates} and
add notes. If you need any notation that was not covered in the
tutorial, look at the Notation Reference, starting with
@ref{Basic notation}. If you want to write for an instrument
-ensemble which is not covered in the @ref{Example templates},
+ensemble which is not covered in the templates,
take a look at @ref{Extending the templates}.
Once you have written a few short pieces, read the rest of
now, and come back to them after you have more experience.
+@node How to read the manual
+@subsection How to read the manual
+As we saw in @ref{How to read the tutorial}, many examples in the
+tutorial omitted a @code{\relative c'' @{ ... @}} around the printed
+example.
+In the rest of the manual, we are much more lax about the
+printed examples: sometimes they may have omitted a
+@code{\relative c'' @{ ... @}}, but in other times a different initial
+pitch may be used (such as @code{c'} or @code{c,,}), and in some cases
+the whole example is in absolute note mode! However, ambiguities like
+this only exist where the pitches are not important. In any example
+where the pitch matters, we have explicitly stated our @code{\relative}
+our our absolute-mode @code{@{ @}}.
-@node Octave entry
-@section Octave entry
-
-@c Tim wants to move this quotes example just before the: quotes-do not-work
-@c score, but we'd need to remove quotes from the other two (key and
-@c tie) examples...
-
-@c better to have this just before the `octaves are bad' snipped
-@c but we'd need to remove the ', from \key and tie
-To raise a note by an octave, add a high quote @samp{'} (apostrophe) to
-the note name, to lower a note one octave, add a @q{low quote} @samp{,}
-(comma). Middle C is @code{c'}
-
-@lilypond[quote,notime,fragment,verbatim]
-c'4 c'' c''' \clef bass c c,
-@end lilypond
-
-An example of the use of quotes is in the following Mozart fragment
-
-@lilypond[quote,ragged-right,fragment,verbatim]
-\key a \major
-\time 6/8
-cis''8. d''16 cis''8 e''4 e''8
-b'8. cis''16 b'8 d''4 d''8
-@end lilypond
-
-@noindent
-This example shows that music in a high register needs lots of quotes.
-This makes the input less readable, and it is a source of errors. The
-solution is to use @q{relative octave} mode. This is the
-most convenient way to copy existing music.
-
-In relative mode, a note without octavation quotes (i.e., the @samp{'}
-or @samp{,} after a note) is chosen so that it is closest to the
-previous one. For example, @samp{c f} goes up while @samp{c g} goes
-down.
-
-To use relative mode, add @code{\relative} before the piece of
-music. The first note is taken relative to the middle C
-@c no , for this sentence
-(i.e., @code{c'})
-
-
-
-@lilypond[quote,notime,fragment,verbatim]
-\relative {
- c' f c g c
-}
-@end lilypond
-
-
-Since most music has small intervals, pieces can be written almost
-without octavation quotes in relative mode. The previous example is
-entered as
-
-@lilypond[quote,ragged-right,verbatim]
-\relative {
- \key a \major
- \time 6/8
- cis'8. d16 cis8 e4 e8
- b8. cis16 b8 d4 d8
-}
-@end lilypond
-
-@c needed better, maybe even redundant explanation
-@c added another example below.
-@c grappig: Pa vond het heel logies, en slim toen-i eenmaal begreep.
-@c in eerste instantie drong het `relative' niet door zonder extra uitleg.
-Larger intervals are made by adding octavation quotes.
-
-@lilypond[quote,notime,verbatim,fragment]
-\relative c {
- c'' f, f c' c g' c,
-}
-@end lilypond
-
-In summary, quotes or commas no longer determine the absolute height
-of a note in @code{\relative} mode. Rather, the height of a note is
-relative to the previous one, and changing the octave of a single note
-shifts all following notes an octave up or down.
-
-For more information on relative octaves see @ref{Relative octaves},
-and @ref{Octave check}.
-
+If you are still confused about the exact LilyPond input that was
+used in an example, read the HTML version (if you are not already doing
+so) and click on the picture of the music. This will display the exact
+input that LilyPond used to generate this manual.