4 @c * more details about running lilypond; error messages,
5 @c compiling/viewing (emacs?)
6 @c * where to go from First steps+More basics?
13 Using LilyPond comes down to encoding music in an input file. After
14 entering the music, the program is run on the file producing output
15 which can be viewed or printed. In this tutorial, we will show step
16 by step how to enter such files, and illustrate the process with
17 fragments of input and the corresponding output. At the end of every
18 section, a paragraph will list where to find further information on
21 Many people learn programs by trying and fiddling around with the
22 program. This is also possible with LilyPond. If you click on a
23 picture in the HTML version of this manual, you will see the exact
24 LilyPond input that was used to generate that image.
26 For example, consider the following input:
28 c'^\markup @{ \bold \huge @{ Click on this image! @} @}
30 @c @lily pond[relative=1,raggedright,with the following output:]
31 with the following output:
32 @lilypond[relative=1,raggedright]
33 c'^\markup { \bold \huge { Click on this image! } }
37 By cutting and pasting the full input into a test file, you have a
38 starting template for experiments. If you like learning in this way,
39 you will probably want to print out or bookmark
43 @ref{Cheat sheet}, which is a table listing all commands for quick
47 This tutorial starts with a short introduction to the LilyPond music
48 language. After this first contact, we will show you how to to
49 produce printed output. You should then be able to create and print
50 your first sheets of music.
55 * More about pitches::
57 * Combining music into compound expressions::
58 * Adding articulation marks to notes::
59 * Combining notes into chords::
60 * Basic rhythmical commands::
61 * Commenting input files::
64 * Listening to output::
66 * Single staff polyphony::
69 * Fine tuning layout::
70 * Organizing larger pieces::
71 * An orchestral part::
72 * Integrating text and music::
79 We start off by showing how very simple music is entered in LilyPond:
80 you get a note simply by typing its note name, from @samp{a}
81 through @samp{g}. So if you enter
88 then the result looks like this:
91 @c \transpose c c' { c d e f g a b }
93 @c \property Score.timing = ##f
94 @lilypond[notime,relative=2]
98 The length of a note is specified by adding a number, @samp{1} for a
99 @rglos{whole note}, @samp{2} for a @rglos{half note}, and so on:
106 \property Score.timing = ##f
107 \property Staff.autoBeaming = ##f
108 \transpose c c' { a1 a2 a4 a16 a32 s16_" " }
111 If you do not specify a @rglos{duration}, the previous one is used:
118 \property Score.timing = ##f
119 \transpose c c' { a a a2 a s16_" " }
123 Rests are entered just like notes, but with the name ``@code{r}'':
132 \property Score.timing = ##f
133 \property Staff.Clef = \turnOff
134 \property Staff.TimeSignature = \turnOff
142 Add a dot @samp{.} after the duration to get a @rglos{dotted note}:
149 \property Score.timing = ##f
150 \transpose c c' { a2. a4 a8. a16 s16_" " }
154 The @rglos{meter} (or @rglos{time signature}) can be set with the
155 @code{\time} command:
163 @c a clef here may lead to confusion
165 \property Staff.Clef \set #'transparent = ##t
175 The @rglos{clef} can be set using the @code{\clef} command:
177 @c what is more common name treble or violin?
178 @c in Dutch, its violin.
179 @c in English its definitely treble.
188 \property Score.timing = ##f
199 Notes and commands like @code{\clef} and @code{\time}, are enclosed
200 in @code{\notes @{@dots{}@}}. This indicates that music (as opposed
201 to @rglos{lyrics}) follows:
211 Now the piece of music is almost ready to be printed. The final step is to
212 combine the music with a printing command.
214 The printing command is the so-called @code{\paper} block:
220 The @code{\paper} block is used to customize printing specifics. The
221 customization commands go between @code{@{} and @code{@}}, but for
222 now, we accept the defaults. The music and the @code{\paper} block
223 are combined by enclosing them in @code{\score @{ ... @}}, so the
224 following is a complete and valid input file:
247 linewidth = 55 * \staffspace
252 In the rest of the tutorial we will often leave out @code{\score}
253 and @code{\paper} for clarity. However, both must be present when
254 feeding the file to LilyPond.
256 For more elaborate information on
259 @item entering pitches and durations
261 @ref{Pitches} and @ref{Durations}.
264 @item Time signatures and other timing commands
265 see @ref{Time signature}.
268 @node Running LilyPond
269 @section Running LilyPond
271 In the last section we explained what kind of things you could enter
272 in a LilyPond file. In this section we explain what commands to run
273 and how to view or print the output. If you have not used LilyPond
274 before, want to test your setup, or want to run an example file
275 yourself, read this section. The instructions that follow are for
276 Unix-like systems. Some additional instructions for Microsoft Windows
277 are given at the end of this section.
279 Begin by opening a terminal window and starting a text editor. For
280 example, you could open an xterm and execute
281 @code{joe}.@footnote{There are macro files for VIM addicts, and there
282 is a @code{LilyPond-mode} for Emacs addicts. If it has not been
283 installed already, then refer to the file @file{INSTALL.txt}}. In
284 your text editor, enter the following input and save the file as
290 \notes @{ c'4 e' g' @}
295 To process @file{test.ly}, proceed as follows:
303 You will see something resembling:
308 Now processing: `/home/fred/ly/test.ly'
310 Interpreting music...[1]
311 @emph{ ... more interesting stuff ... }
312 PDF output to `test.pdf'...
313 DVI output to `test.dvi'...
317 @cindex Viewing music
320 The result is the file @file{test.pdf}.@footnote{For @TeX{}
321 afficionados: there is also a @file{test.dvi} file. It can be viewed
322 with @code{xdvi}. The DVI uses a lot of PostScript specials, which do
323 not show up in the magnifying glass. The specials also mean that the
324 DVI file cannot be processed with @code{dvilj}. Use @code{dvips} for
329 } One of the following commands should put the PDF on your
345 If the music on your screen looks good, you can print it by clicking
346 File/Print inside your viewing program.
350 @cindex Printing output
355 On Windows, the same procedure should work, the terminal is started by
356 clicking on the LilyPond or Cygwin icon. Any text editor (such as
357 NotePad, Emacs or Vim) may be used to edit the LilyPond file.
359 To view the PDF file, try the following:
362 If your system has a PDF viewer installed, open
363 @file{C:\Cygwin\home\@var{your-name}} in the explorer and double-click
366 If you prefer the keyboard, you can try to enter one of the commands
367 from the list shown before in the terminal. If none work, go to
368 @uref{http://www.cs.wisc.edu/~ghost/} to install the proper software.
371 The commands for formatting and printing music on all platforms are
372 detailed in @ref{Invoking LilyPond}.
374 @node More about pitches
375 @section More about pitches
377 A @rglos{sharp} (@texisharp{}) pitch is made by adding @samp{is} to
378 the name, a @rglos{flat} (@texiflat{}) pitch by adding @samp{es}. As
379 you might expect, a @rglos{double sharp} or @rglos{double flat} is
380 made by adding @samp{isis} or @samp{eses}:@footnote{This syntax
381 derived from note naming conventions in Nordic and Germanic languages,
382 like German and Dutch.}
389 \property Score.timing = ##f
390 \transpose c c' { cis1 ees fisis aeses s16_" " }
394 @cindex key signature, setting
396 The key signature is set with the command ``@code{\key}'', followed by
397 a pitch and @code{\major} or @code{\minor}:
407 \property Staff.TimeSignature = \turnOff
416 Key signatures together with the pitch (including alterations) are
417 used together to determine when to print accidentals. This is a
418 feature that often causes confusion to newcomers, so let us explain it
422 LilyPond has a sharp distinction between musical content and
423 layout. The alteration (flat, natural or sharp) of a note is part of
424 the pitch, and is therefore musical content. Whether an accidental (a
425 flat, natural or sharp @emph{sign}) is a printed in front of the
426 corresponding note is a question of layout. Layout is something that
427 follows rules, so accidentals are printed automatically according to
428 those rules. The pitches in your music are works of art, so they will
429 not be added automatically, and you must enter what you want to hear.
431 For example, in this example:
433 \property Staff.TimeSignature = #'()
439 no note gets an explicit accidental, but still you enter
446 The code @code{d} does not mean ``print a black dot just below the
447 staff.'' Rather, it means: ``a note with pitch D-natural.'' In the key
448 of A-flat, it gets an accidental:
451 \property Staff.TimeSignature = #'()
462 Adding all alterations explicitly might require some more effort when
463 typing, but the advantage is that transposing is easier, and music can
464 be printed according to different conventions. See @ref{Accidentals}
465 for some examples how accidentals can be printed according to
470 A tie is created by adding a tilde ``@code{~}'' to the first note
473 @lilypond[fragment,verbatim,relative=2]
479 This example shows the key signature, accidentals and ties in action:
490 fis4 fis8 fis8 eis4 a8 gis~
499 \notes { \transpose c c' {
505 fis4 fis8 fis8 eis4 a8 gis~
508 \paper { linewidth = #(* 50 staffspace) }
514 There are some interesting points to note in this example. Bar lines
515 and beams are drawn automatically. Line breaks are calculated
516 automatically; it does not matter where the lines breaks are in the
517 source file. Finally, the order of time, key and clef changes is not
518 relevant: in the printout, these are ordered according to standard
519 notation conventions.
522 @cindex beams, by hand
523 Beams are drawn automatically, but if you do not like where they are
524 put, they can be entered by hand. Mark the first note to be beamed
525 with @code{[} and the last one with @code{]}:
527 @lilypond[fragment,relative=1,verbatim]
533 For more information on
542 see @ref{Accidentals}
545 see @ref{Key signature}
553 @section Octave entry
556 @c Tim wants to move this quotes example just before the: quotes-do not-work
557 @c score, but we'd need to remove quotes from the other two (key and
560 @c better to have this just before the `octaves are bad' snipped
561 @c but we'd need to remove the ', from \key and tie
562 To raise a note by an octave, add a high quote @code{'} (apostrophe) to
563 the note name, to lower a note one octave, add a ``low quote'' @code{,}
564 (a comma). Middle C is @code{c'}:
568 c'4 c'' c''' \clef bass c c,
572 \property Score.timing = ##f
573 \property Staff.TimeSignature = \turnOff
574 c'4 c'' c''' \clef bass c c,
579 An example of the use of quotes is in the following Mozart fragment:
580 @lilypond[raggedright,fragment,verbatim]
583 cis''8. d''16 cis''8 e''4 e''8
584 b'8. cis''16 b'8 d''4 d''8
587 This example shows that music in a high register needs lots of quotes.
588 This makes the input less readable, and it is a source of errors. The
589 solution is to use ``relative octave'' mode. In practice, this is the
590 most convenient way to copy existing music. To use relative mode, add
591 @code{\relative} before the piece of music. You must also give a note
592 from which relative starts, in this case @code{c''}. If you do not
593 use octavation quotes (i.e. do not add @code{'} or @code{,} after a
594 note), relative mode chooses the note that is closest to the previous
595 one. For example, @code{c f} goes up while @code{c g} goes down:
605 \property Score.timing = ##f
606 \property Staff.TimeSignature = \turnOff
615 Since most music has small intervals, pieces can be written almost
616 without octavation quotes in relative mode. The previous example is
619 @lilypond[raggedright,fragment,verbatim]
629 @c needed better, maybe even redundant explanation
630 @c added another example below.
631 @c grappig: Pa vond het heel logies, en slim toen-i eenmaal begreep.
632 @c in eerste instantie drong het `relative' niet door zonder extra uitleg.
633 Larger intervals are made by adding octavation quotes.
642 \property Score.timing = ##f
643 \property Staff.TimeSignature = \turnOff
651 Quotes or commas do not determine the absolute height of a note; the
652 height of a note is relative to the previous one.
653 @c do not use commas or quotes in this sentence
654 For example: @code{c f,} goes down; @code{f, f} are both the same;
655 @code{c' c} are the same; and @code{c g'} goes up:
659 Here is an example of the difference between relative mode and
660 ``normal'' (non-relative) mode:
671 \property Score.timing = ##f
672 \property Staff.TimeSignature = \turnOff
688 \property Score.timing = ##f
689 \property Staff.TimeSignature = \turnOff
697 For more information on Relative octaves see @ref{Relative octaves}
698 and @ref{Octave check}.
705 @node Combining music into compound expressions
706 @section Combining music into compound expressions
708 To print more than one staff, each piece of music that makes up a
709 staff is marked by adding @code{\context Staff} before it. These
710 @code{Staff}'s are then grouped inside @code{\simultaneous @{} and
711 @code{@}}, as is demonstrated here:
714 @lilypond[fragment,verbatim]
716 \new Staff { \clef violin c'' }
717 \new Staff { \clef bass c }
723 In this example, @code{\simultaneous } indicates that both music
724 fragments happen at the same time, and must be printed stacked
725 vertically. The notation @code{<< .. >>} can also be used as a
726 shorthand for @code{\simultaneous @{ .. @}}.
728 The command @code{\new} introduces a ``notation context''. To
729 understand this concept, imagine that you are performing a piece of
730 music. When you are playing, you combine the symbols printed at a
731 certain point with contextual information. For example, without
732 knowing the current clef, and the accidentals in the last measure, it
733 would be impossible to determine the pitch of a note. In other words,
734 this information forms context that helps you decipher a
735 score. LilyPond produces notation from music, so in effect, it does
736 the inverse of reading scores. Therefore, it also needs to keep track
737 of contextual information. This information is maintained in
738 ``notation contexts.'' There are several types of contexts,
739 e.g. @code{Staff}, @code{Voice} and @code{Score}, but also
740 @code{Lyrics} and @code{ChordNames}. Prepending @code{\new} to a chunk
741 of music indicates what kind of context to use for interpreting it,
742 and ensures that the argument is interpreted with a fresh instance of
743 the context indicated.
748 We can now typeset a melody with two staves:
751 @lilypond[verbatim,raggedright]
772 The example shows how small chunks of music, for example, the notes
773 @code{c2}, @code{e4}, etc. of the second staff, are combined to form a
774 larger chunk by enclosing it in braces. Again, a larger chunk is
775 formed by prefix @code{\new Staff} to it, and that chunk is combined
776 with @code{<< >>}. This mechanism is similar with mathematical
777 formulas: a big formula is created by composing small formulas. Such
778 formulas are called expressions, and their definition is recursive, so
779 you can make arbitrarily complex and large expressions. For example,
788 ((1 + 2) * 3) / (4 * 5)
791 @cindex music expression
792 This example shows a sequence of expressions, where each expression is
793 contained in the next one. The simplest expressions are numbers and
794 operators (like +, * and /). Parentheses are used to group
795 expressions. In LilyPond input, a similar mechanism is used. Here,
796 the simplest expressions are notes and rests. By enclosing
797 expressions in @code{<< >>} and @code{@{ @}}, more complex music is
798 formed. The @code{\new} command also forms new expressions; prepending
799 it to a music expression yields a new expression.
801 Like mathematical expressions, music expressions can be nested
802 arbitrarily deep, e.g.
803 @lilypond[verbatim,relative=1]
805 << { e f } { c <<b d>> }
812 When spreading expressions over multiple lines, it is customary to use
813 an indent that indicates the nesting level. Formatting music like this
814 eases reading, and helps you insert the right amount of closing
815 braces at the end of an expression. For example,
830 For more information on context see the Technical manual description
831 in @ref{Interpretation context}.
835 @node Adding articulation marks to notes
836 @section Adding articulation marks to notes
842 Common accents can be added to a note using a dash (`@code{-}') and a
845 @lilypond[verbatim,relative=1]
846 c-. c-- c-> c-^ c-+ c-_
852 Similarly, fingering indications can be added to a note using a dash
853 (`@code{-}') and the digit to be printed:
855 @lilypond[verbatim,relative=1]
860 Dynamic signs are made by adding the markings to the note:
862 @lilypond[verbatim,relative=1]
872 Crescendi and decrescendi are started with the commands @code{\<} and
873 @code{\>}. The command @code{\!} finishes a crescendo on the note it
876 @lilypond[verbatim,relative=1]
877 c2\< c2\!\ff\> c2 c2\!
886 A slur is drawn across many notes, and indicates bound articulation
887 (legato). The starting note and ending note are marked with a
888 ``@code{(}'' and a ``@code{)}'' respectively:
891 @lilypond[fragment,relative=1,verbatim]
892 d4( c16)( cis d e c cis d e)( d4)
896 @cindex slurs versus ties
897 A slur looks like a tie, but it has a different meaning. A tie simply
898 makes the first note sound longer, and can only be used on pairs of
899 notes with the same pitch. Slurs indicate the articulations of notes,
900 and can be used on larger groups of notes. Slurs and ties are also
903 @lilypond[fragment,relative=1]
904 c2~( c8 fis fis4 ~ fis2 g2)
907 @cindex phrasing slurs
908 If you need two slurs at the same time (one for articulation, one for
909 phrasing), you can also make a phrasing slur with @code{\(} and
913 @lilypond[fragment,relative=1,verbatim]
914 a8(\( ais b c) cis2 b'2 a4 cis, c\)
919 For more information on
922 see @ref{Fingering instructions}
924 see @ref{Articulations}
928 see @ref{Phrasing slurs}
934 @node Combining notes into chords
935 @section Combining notes into chords
938 Chords can be made by
939 surrounding pitches with @code{<} and @code{>}:
941 @lilypond[,fragment,verbatim]
948 You can combine beams and ties with chords. Beam and tie markings
949 must be placed outside the chord markers:
951 @lilypond[,fragment,verbatim]
952 r4 <c e g>8[ <c f a>]~ <c f a>
958 r4 <c e g>8\>( <c e g> <c e g> <c f a>8\!)
962 r4 <c e g>8\>( <c e g> <c e g> <c f a>8\!)
970 @node Basic rhythmical commands
971 @section Basic rhythmical commands
976 @cindex partial measure
977 A pickup (or upstep) is entered with the keyword @code{\partial}. It
978 is followed by a duration: @code{\partial 4} is a quarter note upstep
979 and @code{\partial 8} an eighth note:
980 @lilypond[relative=1,verbatim,fragment]
987 Tuplets are made with the @code{\times} keyword. It takes two
988 arguments: a fraction and a piece of music. The duration of the piece
989 of music is multiplied by the fraction. Triplets make notes occupy
990 2/3 of their notated duration, so a triplet has 2/3 as its fraction:
992 @lilypond[,verbatim,fragment]
993 \times 2/3 { f8 g a }
999 Grace notes are also made by prefixing a note, or a set of notes with
1000 a keyword. In this case, the keywords are @code{\appoggiatura}
1001 and @code{\acciaccatura}
1002 @cindex appoggiatura
1003 @cindex acciaccatura
1005 @lilypond[relative=1,verbatim,fragment]
1006 c4 \appoggiatura b16 c4
1007 c4 \acciaccatura b16 c4
1012 For more information on
1015 see @ref{Grace notes},
1019 see @ref{Partial measures}.
1024 @node Commenting input files
1025 @section Commenting input files
1028 @cindex line comment
1029 @cindex block comment
1030 Comments are pieces of the input that are ignored. There are two
1031 types of comments. A line comments is introduced by @code{%}: after
1032 that, the rest of that line is ignored. Block comments span larger
1033 sections of input. Anything that is enclosed in @code{%@{} and
1034 @code{%@}} is ignored too. The following fragment shows possible uses
1038 % notes for twinkle twinkle follow:
1043 This line, and the notes below
1044 are ignored, since they are in a
1054 @node Printing lyrics
1055 @section Printing lyrics
1060 Lyrics are entered by separating each syllable with a space, and
1061 surrounding them with @code{\lyrics @{ @dots{} @}}, for example,
1063 \lyrics @{ I want to break free @}
1066 Like notes, lyrics are also a form of music, but they must not be
1067 printed on a staff, which is the default way to print music. To print
1068 them as lyrics, they must be marked with @code{ \new LyricsVoice}:
1070 \new LyricsVoice \lyrics @{ I want to break free @}
1072 The melody for this song is as follows:
1074 @lilypond[fragment,relative=1]
1077 \times 2/3 { f4 g g } \times 2/3 { g4( a2) }
1080 The lyrics can be set to these notes, combining both with the
1081 @code{\lyricsto} keyword:
1083 \lyricsto "@var{name}" \new LyricsVoice @dots{}
1085 where @var{name} identifies to which melody the lyrics should be
1086 aligned. In this case, there is only one melody, so we can leave it
1090 @lilypond[verbatim,linewidth=6.0\cm]
1093 \relative c' \new Voice {
1096 \times 2/3 { f g g } \times 2/3 { g4( a2) }
1098 \lyricsto "" \new LyricsVoice \lyrics { I want to break free }
1105 @cindex extender line
1107 This melody ends on a @rglos{melisma}, a single syllable (``free'')
1108 sung to more than one note. This is indicated with an @emph{extender
1109 line}. It is entered as two underscores, i.e.
1111 \lyrics @{ I want to break free __ @}
1116 \relative c' \new Voice {
1119 \times 2/3 { f g g } \times 2/3 { g4( a2) } }
1120 \lyricsto "" \new LyricsVoice \lyrics { I want to break free __ }
1126 Similarly, hyphens between words can be entered as two dashes,
1127 resulting in a centered hyphen between two syllables:
1129 Twin -- kle twin -- kle
1131 @lilypond[raggedright]
1133 << \notes \relative f' { \time 2/4
1135 \new Lyrics \lyrics { Twin -- kle twin -- kle }
1137 \paper { raggedright = ##t }
1141 More options, like putting multiple lines of lyrics below a melody are
1142 discussed in @ref{Vocal music}.
1147 @section A lead sheet
1153 In popular music, it is common to denote accompaniment as chord-names.
1154 Using them in LilyPond has two parts, just like lyrics: entering the
1155 chords (with @code{\chords}), and printing them (with @code{\new
1158 Chord names are entered by starting chords mode (with @code{\chords}).
1159 In chords mode, you can enter chords with a letter (indicating the
1160 root of the chord), and a durations following that:
1163 \chords { c2 f4. g8 }
1167 The result of @code{\chords} is a list of chords, and is equivalent
1168 to entering chords with @code{<@dots{}>}.
1170 Other chords can be created by adding modifiers, after a colon. The
1171 following example shows a few common modifiers:
1174 \chords { c2 f4:m g4:maj7 gis1:dim7 }
1177 Printing chords is done by adding @code{\context ChordNames}
1178 before the chords thus entered:
1181 \context ChordNames \chords { c2 f4.:m g4.:maj7 gis8:dim7 }
1186 When put together, chord names, lyrics and a melody form
1187 a lead sheet, for example,
1192 \context ChordNames \chords @{ @emph{chords} @}
1193 \notes @emph{the melody}
1194 \lyricsto "" \new LyricsVoice \lyrics @{ @emph{the text} @}
1202 \context ChordNames \chords { r8 c2:sus4 f }
1203 \notes \relative c' {
1206 \times 2/3 { f g g } \times 2/3 { g4( a2) } }
1207 \new LyricsVoice \lyricsto "" \lyrics { I want to break free __ }
1209 \paper{ raggedright = ##t }
1214 A complete list of modifiers, and other options for layout are in the
1215 reference manual section @ref{Chords}.
1217 @node Listening to output
1218 @section Listening to output
1223 MIDI (Musical Instrument Digital Interface) is a standard for
1224 connecting and recording digital instruments. A MIDI file is like a
1225 tape recording of a MIDI instrument. The @code{\midi} block makes the
1226 music go to a MIDI file, so you can listen to the music you entered.
1227 It is great for checking the music: octaves that are off, or
1228 accidentals that were mistyped, stand out very much when listening to
1229 the musical transcription.
1231 @code{\midi} can be used in similarly to @code{\paper @{ @}}, for
1236 \midi @{ \tempo 4=72 @}
1241 Here, the tempo is specified using the @code{\tempo} command. In this
1242 case the tempo of quarter notes is set to 72 beats per minute. More
1243 information on auditory output is in the @ref{Sound} section in the
1251 Bibliographic information is entered in a separate block, the
1252 @code{\header} block. The name of the piece, its composer, etc. are
1253 entered as an assignment, within @code{\header @{ @dots{} @}}. For
1257 title = "Eight miniatures"
1258 composer = "Igor Stravinsky"
1259 tagline = "small is beautiful"
1262 \score @{ @dots{} @}
1265 @cindex bibliographic information
1268 @cindex Engraved by LilyPond
1270 When the file is processed by the @code{lilypond} wrapper script, then
1271 the title and composer specified are printed above the music. The
1272 `tagline' is a short line printed at bottom of the last page, which
1273 normally says ``Engraved by LilyPond, version @dots{}''. In the
1274 example above, it is replaced by the line ``small is
1275 beautiful.''@footnote{Nicely printed parts are good PR for us, so do
1276 us a favor, and leave the tagline if you can.}
1278 Normally, the @code{\header} is put at the top of the file. However,
1279 for a document that contains multiple pieces (e.g. an etude book, or
1280 an orchestral part with multiple movements), then the header can be
1281 put into the @code{\score} block as follows; in this case, the name of
1282 each piece will be printed before each movement:
1285 @cindex Engraved by LilyPond
1286 @cindex signature line
1291 title = "Eight miniatures"
1292 composer = "Igor Stravinsky"
1293 tagline = "small is beautiful"
1297 \header @{ piece = "Adagio" @}
1300 \header @{ piece = "Menuetto" @}
1304 More information on titling can be found in @ref{Invoking lilypond}.
1307 @node Single staff polyphony
1308 @section Single staff polyphony
1311 @cindex multiple voices
1312 @cindex voices, more -- on a staff
1314 When different melodic lines are combined on a single staff, these are
1315 printed as polyphonic voices: each voice has its own stems, slurs and
1316 beams, and the top voice has the stems up, while the bottom voice has
1319 Entering such parts is done by entering each voice as a sequence (with
1320 @code{@{ .. @}}), and combining those simultaneously, separating the
1321 voices with @code{\\}:
1324 << @{ a4 g2 f4~ f4 @} \\
1325 @{ r4 g4 f2 f4 @} >>
1327 @lilypond[relative=1]
1328 \context Staff << { a4 g2 f4~ f4 } \\
1332 For polyphonic music typesetting, spacer rests can also be convenient: these
1333 are rests that do not print. It is useful for filling up voices that
1334 temporarily do not play:
1336 << @{ a4 g2 f4~ f4 @} \\
1337 @{ s4 g4 f2 f4 @} >>
1339 @lilypond[relative=1]
1340 \context Staff << { a4 g2 f4~ f4 } \\
1344 Again, these expressions can be nested arbitrarily:
1350 << { a4 g2 f4~ f4 } \\
1353 << { \clef bass <c g>1 ~ <c g>4 } \\
1360 More features of polyphonic typesetting are in the notation manual
1364 @section Piano staves
1366 @cindex staff switch, manual
1367 @cindex cross staff voice, manual
1368 @cindex @code{\translator}
1370 Piano music is always typeset in two staves connected by a brace.
1371 Printing such a staff is done similar to the polyphonic example in
1372 @ref{Combining music into compound expressions}:
1374 << \new Staff @{ @dots{} @}
1375 \new Staff @{ @dots{} @}
1378 but now this entire expression must be interpreted as a
1381 \new PianoStaff << \new Staff @dots{} >>
1384 Here is a full-fledged example:
1386 @lilypond[,fragment]
1388 << \new Staff { \time 2/4
1391 \clef bass c,, c' e c }
1395 More information on formatting piano music is in @ref{Piano music}.
1397 @node Setting variables
1398 @section Setting variables
1400 When the music is converted from notes to print, it is interpreted
1401 from left-to-right order, similar to what happens when we read
1402 music. During this step, context-sensitive information, such as the
1403 accidentals to print, and where barlines must be placed, are stored in
1404 variables. These variables are called @emph{context properties}.
1405 The properties can also be manipulated from input files. Consider this input:
1407 \property Staff.autoBeaming = ##f
1411 It sets the property named @code{autoBeaming} in the current staff at
1412 this point in the music to @code{##f}, which means `false'. This
1413 property controls whether beams are printed automatically:
1415 @lilypond[relative=1,fragment,verbatim]
1417 \property Staff.autoBeaming = ##f
1422 LilyPond includes a built-in programming language, namely, a dialect
1423 of Scheme. The argument to @code{\property}, @code{##f}, is an
1424 expression in that language. The first hash-mark signals that a piece
1425 of Scheme code follows. The second hash character is part of the
1426 boolean value true (@code{#t}). Values of other types may be
1429 @item a string, enclosed in double quotes, for example,
1431 \property Staff.instrument = #"French Horn"
1433 @item a boolean: either @code{#t} or @code{#f}, for true and false
1436 \property Voice.autoBeaming = ##f
1437 \property Score.skipBars = ##t
1440 @item a number, such as
1442 \property Score.currentBarNumber = #20
1445 @item a symbol, which is introduced by a quote character, as in
1447 \property Staff.crescendoSpanner = #'dashed-line
1450 @item a pair, which is also introduced by a quote character, like in
1451 the following statements, which set properties to the pairs (-7.5, 6)
1452 and (3, 4) respectively:
1455 \property Staff.minimumVerticalExtent = #'(-7.5 . 6)
1456 \property Staff.timeSignatureFraction = #'(3 . 4)
1459 @item a list, which is also introduced by a quote character. In the
1460 following example, the @code{breakAlignOrder} property is set to a
1463 \property Score.breakAlignOrder =
1464 #'(left-edge time-signature key-signatures)
1470 There are many different properties, and not all of them are listed in
1471 this manual. However, the program reference lists them all in the
1472 section @internalsref{Context-properties}, and most properties are
1473 demonstrated in one of the
1475 @uref{../../../input/test/out-www/collated-files.html,tips-and-tricks}
1483 @node Fine tuning layout
1484 @section Fine tuning layout
1486 Sometimes it is necessary to change music layout by hand. When music
1487 is formatted, layout objects are created for each symbol. For
1488 example, every clef and every note head is represented by a layout
1489 object. These layout objects also carry variables, which we call
1490 @emph{layout properties}. By changing these variables from their
1491 values, we can alter the look of a formatted score:
1493 @lilypond[verbatim,]
1495 \property Voice.Stem \override #'thickness = #3.0
1500 In the example shown here, the layout property @code{thickness} (a
1501 symbol) is set to 3 in the @code{Stem} layout objects of the current
1502 Voice. As a result, the notes following @code{\property} have thicker
1505 In most cases of manual overrides, only a single object must be
1506 changed. This can be achieved by prefixing @code{\once} to the
1507 @code{\property} statement, i.e.
1510 \once \property Voice.Stem \set #'thickness = #3.0
1515 \once \property Voice.Stem \set #'thickness = #3.0
1520 Some overrides are so common that predefined commands are provided as
1521 a short cut. For example, @code{\slurUp} and @code{\stemDown}. These
1522 commands are described in
1526 @ref{Notation manual}, under the sections for slurs and stems
1529 The exact tuning possibilities for each type of layout object are
1530 documented in the program reference of the respective
1531 object. However, many layout objects share properties, which can be
1532 used to apply generic tweaks. We mention a couple of these:
1535 @item The @code{extra-offset} property, which
1536 @cindex @code{extra-offset}
1537 has a pair of numbers as value, moves around objects in the printout.
1538 The first number controls left-right movement; a positive number will
1539 move the object to the right. The second number controls up-down
1540 movement; a positive number will move it higher. The unit of these
1541 offsets are staff-spaces. The @code{extra-offset} property is a
1542 low-level feature: the formatting engine is completely oblivious to
1545 In the following example, the second fingering is moved a little to
1546 the left, and 1.8 staff space downwards:
1548 @cindex setting object properties
1550 @lilypond[relative=1,verbatim]
1553 \once \property Voice.Fingering
1554 \set #'extra-offset = #'(-0.3 . -1.8)
1559 Setting the @code{transparent} property will make an object be printed
1560 in `invisible ink': the object is not printed, but all its other
1561 behavior is retained. The object still takes space, it takes part in
1562 collisions, and slurs, ties and beams can be attached to it.
1564 @cindex transparent objects
1565 @cindex removing objects
1566 @cindex invisible objects
1567 The following example demonstrates how to connect different voices
1568 using ties. Normally ties only happen between notes of the same
1569 voice. By introducing a tie in a different voice, and blanking a stem
1570 in that voice, the tie appears to cross voices:
1572 @lilypond[fragment,relative=1,verbatim]
1574 \once \property Voice.Stem \set #'transparent = ##t
1582 The @code{padding} property for objects with
1583 @cindex @code{padding}
1584 @code{side-position-interface} can be set to increase distance between
1585 symbols that are printed above or below notes. We only give an
1586 example; a more elaborate explanation is in @ref{Constructing a
1589 @lilypond[relative=1,verbatim]
1591 \property Voice.Script \set #'padding = #3
1597 More specific overrides are also possible. The notation manual
1598 discusses in depth how to figure out these statements for yourself, in
1599 @ref{Tuning output}.
1601 @node Organizing larger pieces
1602 @section Organizing larger pieces
1604 When all of the elements discussed earlier are combined to produce
1605 larger files, the @code{\score} blocks get a lot bigger, because the
1606 music expressions are longer, and, in the case of polyphonic and/or
1607 orchestral pieces, more deeply nested. Such large expressions can
1610 By using variables, also known as identifiers, it is possible to break
1611 up complex music expressions. An identifier is assigned as follows:
1614 namedMusic = \notes @{ @dots{}
1617 The contents of the music expression @code{namedMusic}, can be used
1618 later by preceding the name with a backslash, i.e. @code{\namedMusic}.
1619 In the next example, a two note motive is repeated two times by using
1620 variable substitution:
1622 @lilypond[raggedright,verbatim]
1631 The name of an identifier should have alphabetic characters only, and
1632 no numbers, underscores or dashes. The assignment should be outside of
1633 the @code{\score} block.
1635 It is possible to use variables for many other types of objects in the
1640 aFivePaper = \paper @{ paperheight = 21.0 \cm @}
1642 Depending on its contents, the identifier can be used in different
1643 places. The following example uses the above variables:
1646 \notes @{ c4^\name @}
1654 More information on the possible uses of identifiers is in the
1655 technical manual, in @ref{Scheme datatypes}.
1658 @node An orchestral part
1659 @section An orchestral part
1661 In orchestral music, all notes are printed twice: both in a part for
1662 the musicians, and in a full score for the conductor. Identifiers can
1663 be used to avoid double work: the music is entered once, and stored in
1664 variable. The contents of that variable is then used to generate
1665 both the part and the score.
1667 It is convenient to define the notes in a special file, for example,
1668 suppose that the @file{horn-music.ly} contains the following part of a
1671 hornNotes = \notes \relative c @{
1677 Then, an individual part is made by putting the following in a file:
1679 \include "horn-music.lyinc"
1681 instrument = "Horn in F"
1684 \notes \transpose f c' \hornNotes
1687 The @code{\include} command substitutes the contents of the file at
1688 this position in the file, so that @code{hornNotes} is defined
1689 afterwards. The code @code{\transpose f c'} indicates that the
1690 argument, being @code{\hornNotes}, should be transposed by a fifth
1691 downwards: sounding @code{f} is denoted by notated @code{c'}, which
1692 corresponds with tuning of a normal French Horn in F. The
1693 transposition can be seen in the following output:
1695 @lilypond[raggedright]
1697 \notes \transpose f c' \notes \relative c {
1704 In ensemble pieces, one of the voices often does not play for many
1705 measures. This is denoted by a special rest, the multi-measure
1706 rest. It is entered with a capital R, and followed by a duration (1
1707 for a whole note, 2 for a half note, etc.) By multiplying the
1708 duration, longer rests can be constructed. For example, the next rest
1709 takes 3 measures in 2/4 time:
1714 When printing the part, the following @code{skipBars} property must be
1715 set to false, to prevent the rest from being expanded in three one bar
1718 \property Score.skipBars = ##t
1720 Prepending the rest and the property setting above, leads to the
1723 @lilypond[raggedright]
1724 \score {\notes { \transpose f c' \relative c { \time 2/4
1725 \property Score.skipBars = ##t
1727 r4 f8 a cis4 f e d } }}
1730 The score is made by combining all of the music in a @code{\score}
1731 block, assuming that the other voice is in @code{bassoonNotes}, in the
1732 file @file{bassoon-music.ly}:
1734 \include "bassoon-music.lyinc"
1735 \include "horn-music.lyinc"
1739 \new Staff \hornNotes
1740 \new Staff \bassoonNotes
1744 This would lead to the simple score depicted below:
1746 @lilypond[raggedright]
1748 \notes \relative c \simultaneous {
1749 \new Staff { \time 2/4
1751 r4 f8 a cis4 f e d }
1752 \new Staff { \clef bass
1753 r4 d,8 f | gis4 c | b bes |
1754 a8 e f4 | g d | gis f }
1758 More in-depth information on preparing parts and scores is in the
1759 notation manual, in @ref{Orchestral music}.
1762 @node Integrating text and music
1763 @section Integrating text and music
1765 @cindex La@TeX{}, music in
1766 @cindex HTML, music in
1767 @cindex Texinfo, music in
1769 Sometimes you might want to use music examples in a text that you are
1770 writing (for example, a musicological treatise, a songbook, or (like us)
1771 the LilyPond manual). You can make such texts by hand, simply by
1772 importing a PostScript figure into your word processor. However,
1773 there is an automated procedure to reduce the amount of work.
1775 If you use HTML, La@TeX{}, or Texinfo, you can mix text and LilyPond
1776 code. A script called @code{lilypond-book} will extract the music
1777 fragments, run LilyPond on them, and put back the resulting notation.
1778 This program is fully described in @ref{lilypond-book manual}. Here
1779 we show a small example; since the example contains also explanatory
1780 text, we will not comment it further:
1783 \documentclass[a4paper]@{article@}
1786 In a lilypond-book document, you can freely mix music and text. For
1789 \score @{ \notes \relative c' @{
1790 c2 g'2 \times 2/3 @{ f8 e d @} c'2 g4
1794 If you have no \verb+\score+ block in the fragment,
1795 \texttt@{lilypond-book@} will supply one:
1801 In the example you see here, two things happened: a
1802 \verb+\score+ block was added, and the line width was set to natural
1803 length. You can specify options by putting them in brackets:
1805 \begin[staffsize=26,verbatim]@{lilypond@}
1809 If you want to include large examples into the text, it is more
1810 convenient to put it in a separate file:
1812 \lilypondfile@{screech-boink.ly@}
1817 Under Unix, you can view the results as follows:
1821 $ lilypond-book --output=out/ lilybook.tex
1822 lilypond-book (GNU LilyPond) 2.1.19
1823 Reading `input/tutorial/lilybook.tex'
1824 Reading `input/screech-boink6.ly'
1825 @var{lots of stuff deleted}
1826 Writing `out/lilybook.latex'
1828 $ latex lilybook.latex
1829 @var{lots of stuff deleted}
1833 To convert the file into a nice PDF document, run the following
1836 $ dvips -Ppdf -u +lilypond lilybook
1837 $ ps2pdf lilybook.ps
1841 Running lilypond-book and running latex creates a lot of temporary
1842 files, and you would not want those to clutter up your working
1843 directory. The @code{outdir} option to lilypond-book creates the
1844 temporary files in a separate subdirectory @file{out}.
1846 The result looks more or less like this:
1850 In a lilypond-book document, you can freely mix music and text. For
1854 \notes \relative c' {
1855 c2 g'2 \times 2/3 { f8 e d } c'2 g4
1863 If you have no @code{\score} block in the fragment,
1864 @code{lilypond-book} will supply one:
1870 In the example you see here, two things happened: a
1871 @code{score} block was added, and the line width was set to natural
1872 length. You can specify options by putting them in brackets:
1874 @lilypond[staffsize=26,verbatim]
1878 If you want to include large examples into the text, it is more
1879 convenient to put it in a separate file:
1881 @lilypondfile{screech-boink.ly}