4 @c * more details about running lilypond; error messages,
5 @c compiling/viewing (emacs?)
6 @c * where to go from First steps+More basics?
12 <!--- @@WEB-TITLE@@=Tutorial --->
16 * First steps:: Music language of LilyPond.
17 * Running LilyPond:: Printing music.
18 * More about pitches and accidentals::
20 * Relative octave entry::
21 * Combining music into compound expressions::
22 * Adding articulation marks to notes ::
23 * Combining notes into chords::
26 * Listening to output::
28 * Single staff polyphony ::
31 * Fine tuning layout::
32 * Organizing larger pieces::
33 * An orchestral part::
34 * Integrating text and music:: Integrating text and music.
37 Using LilyPond comes down to encoding music in an input file. After
38 entering the music, the program is run on the file producing output
39 which can be viewed or printed. In this tutorial, we will show step
40 by step how to enter such files, by showing fragments of input and the
41 corresponding output. At the end of every section, a paragraph will
42 list where to find further information on the topics discussed.
44 Many people learn programs by trying and fiddling around with the
45 program. This is also possible with LilyPond. If you click on a
46 picture in the HTML version of this manual, you will see the exact
47 LilyPond input that was used to generate that image.
49 For example, consider the following input
50 @c TODO: intertext fixme
51 @lilypond[relative 1,singleline,verbatim,intertext="with the following output"]
52 c'^\markup { \bold \huge { Click on this image! } }
54 If you click it, you can see that the input shown is simplified a
55 little. This has been done for reasons of space and clarity. If you
56 want to fiddle, you need the full input, otherwise LilyPond will not
59 By cutting and pasting the full input into a test file, you have a
60 starting template for experiments. If you like learning in this way,
61 you will probably want to print out or bookmark
65 @ref{Cheat sheet}, which is a table listing all commands for quick
69 This tutorial starts with a short introduction to the LilyPond music
70 language. After this first contact, we will show you how to to
71 produce printed output, normally using the program @code{ly2dvi}. You
72 should then be able to create and print your first sheets of music.
78 We start off by showing how very simple music is entered in LilyPond:
79 you get a note simply by typing its @htmlref{note name}, from @samp{a}
80 through @samp{g}. So if you enter
87 then the result looks like this:
90 @c \transpose c c' { c d e f g a b }
92 @c \property Score.timing = ##f
93 @lilypond[notime, relative=2]
97 The length of a note is specified by adding a number, @samp{1} for a
98 @rglos{whole note}, @samp{2} for a @rglos{half note}, and so on:
105 \property Score.timing = ##f
106 \property Staff.autoBeaming = ##f
107 \transpose c c' { a1 a2 a4 a16 a32 s16_" " }
110 If you do not specify a @rglos{duration}, the previous one is used:
117 \property Score.timing = ##f
118 \transpose c c' { a a a2 a s16_" " }
122 Rests are entered just like notes, but with the name ``@code{r}'':
131 \property Score.timing = ##f
132 \property Staff.Clef = \turnOff
133 \property Staff.TimeSignature = \turnOff
141 Add a dot @samp{.} after the duration to get a @rglos{dotted note}:
148 \property Score.timing = ##f
149 \transpose c c' { a2. a4 a8. a16 s16_" " }
153 The @rglos{meter} (or @rglos{time signature}) can be set with the
154 @code{\time} command:
162 @c a clef here may lead to confusion
164 \property Staff.Clef \set #'transparent = ##t
174 The @rglos{clef} can be set using the @code{\clef} command:
176 @c what is more common name treble or violin?
177 @c in Dutch, its violin.
178 @c in English its definitely treble.
187 \property Score.timing = ##f
198 Notes and commands like @code{\clef} and @code{\time} , are enclosed
199 in @code{\notes @{@dots{}@}}. This indicates that music (as opposed
200 to @rglos{lyrics}) follows:
210 Now the piece of music is almost ready to be printed. The final step is to
211 combine the music with a printing command.
213 The printing command is the so-called @code{\paper} block. The
214 @code{\paper} block is used to customize printing specifics, but we
215 accept the defaults for now. The music and the @code{\paper} block
216 are combined by enclosing them in @code{\score @{ ... @}}. The
217 following is a complete and valid input file.
240 linewidth = 55 * \staffspace
245 During the rest of the tutorial, we will often leave out @code{\score}
246 and @code{\paper}, for clarity. However, both must be present when
247 feeding the file to LilyPond.
249 More elaborate information on entering pitches and durations is in
250 @ref{Pitches} and @ref{Durations}. Clefs are fully explained in
251 @ref{Clef}. Time signatures and other timing commands are described
252 in @ref{Time signature}.
255 @node Running LilyPond
256 @section Running LilyPond
258 In the last section we explained what kind of things you could enter
259 in a LilyPond file. In this section we explain what commands to run
260 and how to view or print the output. If you have not used LilyPond
261 before, want to test your setup, or want to run an example file
262 yourself, read this section. The instructions that follow are for
263 Unix-like systems. Some additional instructions for Microsoft Windows
264 are given at the end of this section.
266 Begin by opening a terminal window and starting a text editor.
267 For example, you could open an xterm and execute @code{joe}. In your
268 text editor, enter the following input and save the file as
274 \notes @{ c'4 e' g' @}
281 @c now this is weird, running ly2dvi to run LilyPond
282 @c (therefore name change proposal)
284 LilyPond is the program that computes the sheet music. All other
285 things, such as adding titles, page breaking and other page layout,
286 are done by a small wrapper program called
287 @code{ly2dvi}. @code{ly2dvi} calls LilyPond to render the music, and
288 then adds the titling and page layout instructions. To process
289 @file{test.ly} with @code{ly2dvi}, proceed as follows:
297 You will see something resembling:
302 Now processing: `/home/fred/ly/test.ly'
304 Interpreting music...[1]
305 @emph{ ... more interesting stuff ... }
306 PDF output to `test.pdf'...
307 DVI output to `test.dvi'...
311 @cindex Viewing music
314 The result of the ly2dvi is the file @file{test.pdf}.@footnote{ For
315 @TeX{} afficionados, there is also a (@file{test.dvi}) file. It can be
316 viewed with @code{xdvi}. The DVI uses a lot of PostScript specials,
317 which do not show up in the magnifying glass. The specials also mean
318 that the DVI file cannot be processed with @code{dvilj}. Use
319 @code{dvips} for printing.
323 } One the following commands should put the PDF on your
337 If the music on your screen looks good, you can print it by clicking
338 File/Print inside your viewing program.
342 @cindex Printing output
347 On Windows, the terminal is started by clicking on the LilyPond or
348 Cygwin icon. Any text editor (such as NotePad, Emacs or Vim) may be
349 used to edit the LilyPond file. If you have a PDF viewer installed,
350 use that for viewing the PDF
351 @c where on file system for double-click people?
352 If you have no viewer, then you can download @code{GSView} from
353 @uref{http://www.cs.wisc.edu/~ghost}. With @code{GSView},
354 the PDF file can viewed with
357 @code{gsview32 test.pdf}
360 Printing may be done with
363 @code{gsview32 /s test.pdf}
367 The commands for formatting and printing music are detailed in
368 @ref{Invoking LilyPond}.
370 @node More about pitches and accidentals
371 @section More about pitches and accidentals
373 A @rglos{sharp} (@texisharp{}) is made by adding @samp{is}, a
374 @rglos{flat} (@texiflat{}) by adding @samp{es}. As you might expect,
375 a @rglos{double sharp} or @rglos{double flat} is made by adding
376 @samp{isis} or @samp{eses}:@footnote{This syntax derived from note
377 naming conventions in Nordic and Germanic languages, like German and
385 \property Score.timing = ##f
386 \transpose c c' { cis1 ees fisis aeses s16_" " }
390 @cindex key signature, setting
392 The key signature is set with the command ``@code{\key}'', followed by
393 a pitch and @code{\major} or @code{\minor}:
403 \property Staff.TimeSignature = \turnOff
413 A tie is created by adding a tilde ``@code{~}'' to the first note
416 @lilypond[fragment,verbatim,relative 2]
422 This example shows the key signature, accidentals and ties in action.
433 fis4 fis8 fis8 eis4 a8 gis-~
442 \notes { \transpose c c' {
448 fis4 fis8 fis8 eis4 a8 gis-~
451 \paper { linewidth = #(* 50 staffspace) }
457 There are some interesting points to note in this example. Bar lines
458 and beams are drawn automatically. Line breaks are calculated
459 automatically; it does not matter where the lines breaks are in the
460 source file. Finally, the order of time, key and clef changes is not
461 relevant: in the printout, these are ordered according to standard
462 notation conventions.
464 Accidentals (sharps and flats) do not have to be marked explicitly:
465 you just enter the pitch of the note, and an accidental is printed
466 only when necessary. The flip side of this mechanism, is that you have
467 to mark notes as sharp or flat, even when they do not get accidentals.
468 For example, in this example,
471 \property Staff.TimeSignature = #'()
473 cis dis eis fis gis ais bis
475 no note gets an explicit accidental, but still you enter
479 cis dis eis fis gis ais bis
482 Adding all alterations explicitly might require some more effort when
483 typing, but the advantage is that transposing is easier. It also makes
484 it possible to use different conventions for when to print
488 @section Octave entry
491 @c Tim wants to move this quotes example just before the: quotes-do not-work
492 @c score, but we'd need to remove quotes from the other two (key and
495 @c better to have this just before the `octaves are bad' snipped
496 @c but we'd need to remove the ', from \key and tie
497 To raise a note by an octave, add a high quote @code{'} (apostrophe) to
498 the note name, to lower a note one octave, add a ``low quote'' @code{,}
499 (a comma). Middle C is @code{c'}:
503 c'4 c'' c''' \clef bass c c,
507 \property Score.timing = ##f
508 \property Staff.TimeSignature = \turnOff
509 c'4 c'' c''' \clef bass c c,
514 An example of the use of quotes is in the following Mozart fragment.
515 @lilypond[singleline,fragment,verbatim]
518 cis''8. d''16 cis''8 e''4 e''8
519 b'8. cis''16 b'8 d''4 d''8
522 This example shows that music in a high register needs lots of quotes.
523 This makes the input less readable, and it is a source of errors. The
524 solution is to use ``relative octave'' mode. In practice, this is the
525 most convenient way to copy existing music. To use relative mode, add
526 @code{\relative} before the piece of music. You must also give a note
527 from which relative starts, in this case @code{c''}. If you do not
528 use octavation quotes (i.e. do not add ' or , after a note), relative
529 mode chooses the note that is closest to the previous one.
530 For example, @code{c f} goes up while @code{c g} goes down.
540 \property Score.timing = ##f
541 \property Staff.TimeSignature = \turnOff
550 Since most music has small intervals, in relative mode pieces can be
551 written almost without using octavation quotes. In relative mode, the
552 Mozart example is entered as
554 @lilypond[singleline,fragment,verbatim]
564 @c needed better, maybe even redundant explanation
565 @c added another example below.
566 @c grappig: Pa vond het heel logies, en slim toen-i eenmaal begreep.
567 @c in eerste instantie drong het `relative' niet door zonder extra uitleg.
568 Larger intervals are made by adding octavation quotes. Quotes or
569 commas do not determine the absolute height of a note; the height of a
570 note is relative to the previous one.
571 @c do not use commas or quotes in this sentence
572 For example: @code{c f,} goes down; @code{f, f} are both the same;
573 @code{c' c} are the same; and @code{c g'} goes up:
583 \property Score.timing = ##f
584 \property Staff.TimeSignature = \turnOff
593 Here is an example of the difference between relative mode and
594 ``normal'' (non-relative) mode:
605 \property Score.timing = ##f
606 \property Staff.TimeSignature = \turnOff
622 \property Score.timing = ##f
623 \property Staff.TimeSignature = \turnOff
633 @node Relative octave entry
634 @section Relative octave entry
638 @c fragment of 1st hrn in Adams' The Chairman Dances, with creative
639 @c chromatic thing pasted in front. (admittedly the original does not
640 @c have a phrasing slur. The problem is that we do not want the slur
641 @c and the Phrasing slur to collide. We are trying to make a good
645 @lilypond[fragment,relative 1, verbatim]
646 a8-(-\( ais b c-) cis2 b'2 a4 cis, c-\)
651 @cindex beams, by hand
652 Beams are drawn automatically, but if you do not like where they are
653 put, they can be entered by hand. Mark the first note to be beamed
654 with @code{[} and the last one with @code{]}:
656 @lilypond[fragment,relative 1, verbatim]
657 a8-[ ais-] d-[ es r d-]
662 Rests are described in full detail in @ref{Rests}.
664 The notation manual discusses ties in @ref{Ties}.
669 @node Combining music into compound expressions
670 @section Combining music into compound expressions
672 To print more than one staff, each piece of music that makes up a
673 staff is marked by adding @code{\context Staff} before it. These
674 @code{Staff}'s are then grouped inside @code{\simultaneous @{} and
675 @code{@}}, as is demonstrated here:
678 @lilypond[fragment,verbatim]
680 \context Staff = staffA { \clef violin c'' }
681 \context Staff = staffB { \clef bass c }
687 In this example, @code{\simultaneous } indicates that both music
688 fragments happen at the same time, and must be printed stacked
689 vertically. The notation @code{< .. >} can also be used as a
690 shorthand for @code{\simultaneous @{ .. @}}.
692 @code{\context} introduces a ``notation context''. To understand this
693 concept, imagine that you are performing a piece of music. When you
694 perform the music, you combine the symbols printed at a certain point
695 with contextual information. For example, without knowing the current
696 clef, and the accidentals in the last measure, it would be impossible
697 to determine the pitch of a note. In other words, this information
698 forms context that helps you decipher a score. LilyPond produces
699 notation from music, so in effect, it does the inverse of reading
700 scores. Therefore, it also needs to keep track of contextual
701 information. This information is maintained in ``notation contexts.''
702 There are several types of contexts, e.g. @code{Staff}, @code{Voice}
703 and @code{Score}, but also @code{Lyrics} and
704 @code{ChordNames}. Prepending @code{\context} to a chunk of music
705 indicates what kind of context to use for interpreting it.
707 By specifying different names (in this case @code{staffA} and
708 @code{staffB}), two different contexts are created, leading to two
709 staves. It does not matter which names they are given, as long as they
710 are different. If they get the same name, the chunks of music are
711 assumed to belong on the same staff, and will be printed like that.
715 We can now typeset a melody with two staves:
718 @lilypond[verbatim,singleline]
721 < \context Staff = staffA {
725 e2-( d4 c2 b4 a8-[ a-]
726 b-[ b-] g-[ g-] a2.-) }
728 \context Staff = staffB {
739 The example shows how small chunks of music, for example the notes
740 @code{c2}, @code{e4}, etc. of the second staff, are combined to form a
741 larger chunk by enclosing it in braces. Again, a larger chunk is
742 formed by prefix @code{\context Staff} to it, and that chunk is
743 combined with @code{< >}. This mechanism is similar with mathematical
744 formulas: in a formula, a so-called expression is formed by combining
745 simpler expressions into larger expressions. For example,
754 ((1 + 2) * 3) / (4 * 5)
757 @cindex music expression
758 is a sequence of expressions, where each expression is contained in
759 the next one. The simplest expressions are numbers and operators
760 (like +, * and /). Parentheses are used to group expressions. In
761 LilyPond input, a similar mechanism is used. Here, the simplest
762 expressions are notes and rests. By enclosing expressions in @code{<
763 >} and @code{@{ @}}, more complex music is formed. The @code{\context}
764 also forms new expressions; prepending it to a music expression yields
767 Like mathematical expressions, music expressions can be nested
768 arbitrarily deep, e.g.
769 @lilypond[verbatim,relative 1]
771 < { e f } { c <b d> }
778 When spreading expressions over multiple lines, it is customary to use
779 an indent that indicates the nesting level. Formatting music like this
780 eases reading, and helps you insert the right amount of closing
781 braces at the end of an expression. For example
798 @node Adding articulation marks to notes
799 @section Adding articulation marks to notes
805 Common accents can be added to a note using a dash (`@code{-}') and a
808 @lilypond[verbatim,relative 1]
809 c-. c-- c-> c-^ c-+ c-_
815 Similarly, fingering indications can be added to a note using a dash
816 (`@code{-}') and the digit to be printed.
818 @lilypond[verbatim,relative 1]
823 Dynamic signs are made by adding the markings to the note:
825 @lilypond[verbatim,relative 1]
835 Crescendi and decrescendi are started with the commands @code{\<} and
836 @code{\>}. The command @code{\!} finishes a crescendo on the note it
839 @lilypond[verbatim,relative 1]
840 c2-\< c2-\!-\ff c2-\> c2-\!
849 A slur is drawn across many notes, and indicates bound articulation
850 (legato). The starting note and ending note are marked with a
851 ``@code{(}'' and a ``@code{)}'' respectively:
854 @lilypond[fragment,relative 1, verbatim]
855 d4-( c16-)-( cis d e c cis d e-)-( d4-)
859 @cindex slurs versus ties
860 A slur is different from a tie. A tie simply makes the first note
861 sound longer, and can only be used on pairs of notes with the same
862 pitch. Slurs indicate the articulations of notes, and can be used on
863 larger groups of notes. Slurs and ties are also nested in practice:
864 @lilypond[fragment, relative=1]
865 c2-~-( c8 fis fis4 ~ fis2 g2-)
868 @cindex phrasing slurs
869 If you need two slurs at the same time (one for articulation, one for
870 phrasing), you can also make a phrasing slur with @code{\(} and
873 More information on fingering, articulation, slurs, phrasing slurs,
874 and dynamics can be found in @ref{Fingering instructions},
875 @ref{Articulations}, @ref{Slurs}, @ref{Phrasing slurs} @ref{Dynamics}
878 @node Combining notes into chords
879 @section Combining notes into chords
882 Chords can be made by
883 surrounding pitches with @code{<<} and @code{>}>:
885 @lilypond[relative 0, fragment,verbatim]
886 r4 <<c e g>>4 <<c f a>>8
892 You can combine beams and ties with chords. Beam and tie markings
893 must be placed outside the chord markers:
895 @lilypond[relative 0, fragment,verbatim]
896 r4 <<c e g>>8-[ <<c f a>>-]-~ <<c f a>>
902 r4 <<c e g>>8-\>-( <<c e g>> <<c e g>> <<c f a>>8-\!-)
904 @lilypond[relative 0, fragment]
906 r4 <<c e g>>8-\>-( <<c e g>> <<c e g>> <<c f a>>8-\!-)
914 * Basic rhythmical commands::
915 * Commenting input files::
918 @node Basic rhythmical commands
919 @subsection Basic rhythmical commands
924 @cindex partial measure
925 A pickup (or upstep) is entered with the keyword @code{\partial}. It
926 is followed by a duration: @code{\partial 4} is a quarter note upstep
927 and @code{\partial 8} an eighth note.
928 @lilypond[relative 1,verbatim,fragment]
935 Tuplets are made with the @code{\times} keyword. It takes two
936 arguments: a fraction and a piece of music. The duration of the piece
937 of music is multiplied by the fraction. Triplets make notes occupy
938 2/3 of their notated duration, so a triplet has 2/3 as its fraction.
940 @lilypond[relative 0,verbatim,fragment]
941 \times 2/3 { f8 g a }
947 Grace notes are also made by prefixing a note, or a set of notes with
948 a keyword. In this case, the keyword is @code{\grace}.
949 @lilypond[relative 1, verbatim,fragment]
951 \grace { d16-( e } d4-)
955 More information on grace notes, tuplets and upsteps are in @ref{Grace
956 notes}, @ref{Tuplets} and @ref{Partial measures}.
960 @node Commenting input files
961 @subsection Commenting input files
965 @cindex block comment
966 Comments are pieces of the input that are ignored. There are two
967 types of comments. A line comments is introduced by @code{%}: after
968 that, the rest of that line is ignored. Block comments span larger
969 sections of input. Anything that is enclosed in @code{%@{} and
970 @code{%@}} is ignored too. The following fragment shows possible uses
974 % notes for twinkle twinkle follow:
979 This line, and the notes below
980 are ignored, since they are in a
990 @node Printing lyrics
991 @section Printing lyrics
996 Lyrics are entered by separating each syllable with a space, and
997 surrounding them with @code{\lyrics @{ @dots{} @}}, for example
999 \lyrics @{ I want to break free @}
1002 Like notes, lyrics are also a form of music, but they must not be
1003 printed on a staff, which is the default way to print music. To print
1004 them as lyrics, they must be marked with @code{ \context Lyrics}:
1006 \context Lyrics \lyrics @{ I want to break free @}
1008 The melody for this song is as follows
1010 @lilypond[fragment,relative=1]
1013 \times 2/3 { f4 g g } \times 2/3 { g4-( a2-) }
1016 The lyrics can be set to these notes, combining both with the
1017 @code{\addlyrics} keyword:
1020 \notes @{ @dots{} @}
1021 \context Lyrics @dots{}
1025 @lilypond[verbatim,linewidth=6.0cm]
1032 \times 2/3 { f g g } \times 2/3 { g4-( a2-) }
1034 \context Lyrics \lyrics { I want to break free }
1041 @cindex extender line
1043 This melody ends on a @rglos{melisma}, a single syllable (``free'')
1044 sung to more than one note. This is indicated with a @emph{extender
1045 line}. It is entered as two underscores, i.e.,
1047 \lyrics @{ I want to break free __ @}
1056 \times 2/3 { f g g } \times 2/3 { g4-( a2-) }
1058 %% ugh, this is to deal with bugs in the extender implementation
1062 \context Lyrics \lyrics { I want to break free __ }
1064 \paper{ linewidth = 9.0 \cm }
1068 Similarly, hyphens between words can be entered as two dashes,
1069 resulting in a centered hyphen between two syllables.
1071 Twin -- kle twin -- kle
1073 @lilypond[singleline]
1075 \addlyrics \notes \relative f' { \time 2/4
1077 \context Lyrics \lyrics { Twin -- kle twin -- kle
1079 \paper { linewidth = 6.0 \cm }
1084 More options, like putting multiple lines of lyrics below a melody are
1085 discussed in @ref{Vocal music}.
1090 @section A lead sheet
1096 In popular music, it is common to denote accompaniment as chord-names.
1097 Using them in LilyPond has two parts, just like lyrics: entering the
1098 chords (with @code{\chords}), and printing them (with @code{\context
1101 Chord names are entered by starting chords mode (with @code{\chords}).
1102 In chords mode, you can enter chords with a letter (indicating the
1103 root of the chord), and a durations following that.
1106 \chords { c2 f4. g8 }
1110 The result of @code{\chords} is a list of chords, and is equivalent
1111 to entering chords with @code{<<@dots{}>>}.
1113 Other chords can be created by adding modifiers, after a colon. The
1114 following example shows a few common modifiers
1117 \chords { c2 f4:m g4:maj7 gis1:dim7 }
1120 Printing chords is done by adding @code{\context ChordNames}
1121 before the chords thus entered:
1124 \context ChordNames \chords \chords { c2 f4.:m g4.:maj7 gis8:dim7 }
1128 When put together, chord names, lyrics and a melody form
1129 a lead sheet, for example,
1134 \context ChordNames \chords @{ @emph{chords} @}
1136 \notes @emph{the melody}
1137 \context Lyrics \lyrics @{ @emph{the text} @}
1145 \context ChordNames \chords { r8 c2:sus4 f }
1147 \notes \relative c' {
1150 \times 2/3 { f g g } \times 2/3 { g4-( a2-) } }
1151 \context Lyrics \lyrics { I want to break free __ }
1153 \paper{ raggedright = ##t }
1158 A complete list of modifiers, and other options for layout are in the
1159 reference manual section @ref{Chords}.
1161 @node Listening to output
1162 @section Listening to output
1167 MIDI (Musical Instrument Digital Interface) is a standard for
1168 connecting and recording digital instruments. A MIDI file is like a
1169 tape recording of a MIDI instrument. The @code{\midi} block makes the
1170 music go to a MIDI file, so you can listen to the music you entered.
1171 It is great for checking the music: octaves that are off, or
1172 accidentals that were mistyped, stand out very much when listening to
1173 the musical transcription.
1175 @code{\midi} can be used in similarly to @code{\paper @{ @}}, for
1180 \midi @{ \tempo 4=72 @}
1185 Here, the tempo is specified using the @code{\tempo} command. In this
1186 case the tempo of quarter notes is set to 72 beats per minute. More
1187 information on auditory output is in the @ref{Sound} section in the
1195 Bibliographic information is entered in a separate block, the
1196 @code{\header} block. The name of the piece, its composer, etc. are
1197 entered as assignment, within @code{\header @{ @dots{} @}}. For
1201 title = "Eight miniatures"
1202 composer = "Igor Stravinsky"
1203 tagline = "small is beautiful"
1206 \score @{ @dots{} @}
1209 @cindex bibliographic information
1215 When the file is processed by @code{ly2dvi}, the title and composer
1216 specified are printed above the music. The `tagline' is a short line
1217 printed at bottom of the last page, which normally says ``Lily was
1218 here, version @dots{}''. In the example above, it is replaced by the
1219 line ``small is beautiful.''
1221 Normally, the @code{\header} is put at the top of the file. However,
1222 for a document that contains multiple pieces (e.g. a etude book, or
1223 part with multiple movements), then the header can be put into the
1224 @code{\score} block as follows In this case, the name of each piece
1225 will be printed before each movement.
1228 @cindex Lily was here
1229 @cindex signature line
1234 title = "Eight miniatures"
1235 composer = "Igor Stravinsky"
1236 tagline = "small is beautiful"
1240 \header @{ piece = "Adagio" @}
1243 \header @{ piece = "Menuetto" @}
1247 More information on titling can be found in @ref{Invoking ly2dvi}.
1250 @node Single staff polyphony
1251 @section Single staff polyphony
1254 @cindex multiple voices
1255 @cindex voices, more -- on a staff
1257 When different melodic lines are combined on a single staff, these are
1258 printed as polyphonic voices: each voice has its own stems, slurs
1259 and beams, and the top voice has the stems up, while the bottom voice
1262 Entering such parts is done by entering each voice as a sequence (with
1263 @code{@{ .. @}}), and combining those simultaneously, separating the
1264 voices with @code{\\}:
1267 < @{ a4 g2 f4-~ f4 @} \\
1270 @lilypond[relative 1]
1271 \context Staff < { a4 g2 f4-~ f4 } \\
1275 For polyphonic music typesetting, spacer rests can also be convenient: these
1276 are rests that do not print. It is useful for filling up voices that
1277 temporarily do not play:
1279 < @{ a4 g2 f4-~ f4 @} \\
1282 @lilypond[relative 1]
1283 \context Staff < { a4 g2 f4-~ f4 } \\
1287 Again, these expressions can be nested arbitrarily.
1291 \context Staff = staffA
1293 < { a4 g2 f4-~ f4 } \\
1295 \context Staff = staffB
1296 < { \clef bass <<c g>>1 } \\
1303 More features of polyphonic typesetting are in the notation manual
1307 @section Piano staffs
1309 @cindex staff switch, manual
1310 @cindex cross staff voice, manual
1311 @cindex @code{\translator}
1313 Piano music is always typeset in two staffs connected by a brace.
1314 Printing such a staff is done similar to the polyphonic example in
1315 @ref{Combining music into compound expressions}:
1317 < \context Staff = up @{ @dots{} @}
1318 \context Staff = down @{ @dots{} @}
1321 but now this entire expression must be interpreted as a
1324 \context PianoStaff < \context Staff @dots{} >
1327 Here is a full-fledged example:
1329 @lilypond[relative 0,fragment]
1331 < \context Staff = up { \time 2/4
1333 \context Staff = down {
1334 \clef bass c,, c' e c }
1338 More information on formatting piano music is in @ref{Piano music}.
1340 @node Setting variables
1341 @section Setting variables
1343 When the music is converted from notes to print, it is interpreted
1344 from left-to-right order, similar to what happens when we read
1345 music. During this step, context-sensitive information, such as the
1346 accidentals to print, and where barlines must be placed, are stored in
1347 variables. These variables are called @emph{translation properties}.
1348 The properties can also be manipulated from input files. Consider this input:
1350 \property Staff.autoBeaming = ##f
1352 It sets the property named @code{autoBeaming} in the current staff to
1353 @code{##f}, which means `false'. This property controls whether beams
1354 are printed automatically:
1355 @lilypond[relative 1,fragment,verbatim]
1357 \property Staff.autoBeaming = ##f
1362 LilyPond includes a built-in programming language, namely, a dialect
1363 of Scheme. The argument to @code{\property}, @code{##f}, is an
1364 expression in that language. The first hash-mark signals that a piece
1365 of Scheme code follows. The second hash character is part of the
1366 boolean value true (@code{#t}). Values of other types may be
1369 @item a string, enclosed in double quotes, for example
1371 \property Staff.instrument = #"French Horn"
1373 @item a boolean: either @code{#t} or @code{#f}, for true and false
1376 \property Voice.autoBeaming = ##f
1377 \property Score.skipBars = ##t
1382 \property Score.currentBarNumber = #20
1385 @item a symbol, which is introduced by a quote character,
1387 \property Staff.crescendoSpanner = #'dashed-line
1390 @item a pair, which is also introduced by a quote character.
1391 The following statements set properties to the pairs (-7.5, 6) and
1392 (3, 4) respectively.
1395 \property Staff.minimumVerticalExtent = #'(-7.5 . 6)
1396 \property Staff.timeSignatureFraction = #'(3 . 4)
1402 There are many different properties, and not all of them are listed in
1403 this manual. However, the internal documentation lists them all in the
1404 @internalsref{All translation properties}, and most properties
1405 are demonstrated in one of the
1407 @uref{../../../input/test/out-www/collated-files.html,tips-and-tricks}
1415 @node Fine tuning layout
1416 @section Fine tuning layout
1418 Sometimes it is necessary to change music layout by hand. When music
1419 is formatted, layout objects are created for each symbol. For
1420 example, every clef and every note head is represented by a layout
1421 object. These layout objects also carry variables, which we call
1422 @emph{layout properties}. By changing these variables from their
1423 values, we can alter the look of a formatted score.
1425 @lilypond[verbatim,relative 0]
1427 \property Voice.Stem \override #'thickness = #3.0
1432 In the example shown here, the layout property @code{thickness} (a
1433 symbol) is set to 3 in the @code{Stem} layout objects of the current
1434 Voice. As a result, the notes following @code{\property} have thicker
1437 In most cases of manual overrides, only a single object must be
1438 changed. This can be achieved by prefixing @code{\once} to the
1439 @code{\property} statement, i.e.,
1442 \once \property Voice.Stem \set #'thickness = #3.0
1445 @lilypond[relative 0]
1447 \once \property Voice.Stem \set #'thickness = #3.0
1452 Some overrides are so common that predefined commands are provided as
1453 a short cut. For example, @code{\slurUp} and @code{\stemDown}. These
1454 commands are described in
1458 @ref{Notation manual}, under the sections for slurs and stems
1461 The exact tuning possibilities for each type of layout object are
1462 documented in the internal documentation of the respective
1463 object. However, many layout objects share properties, which can be
1464 used to apply generic tweaks. We mention a couple of these:
1467 @cindex @code{extra-offset}
1468 @item The @code{extra-offset} property, which
1469 has a pair of numbers as value, moves around objects in the printout.
1470 The first number controls left-right movement; a positive number will
1471 move the object to the right. The second number controls up-down
1472 movement; a positive number will move it higher. The unit of these
1473 offsets are staff-spaces. The @code{extra-offset} property is a
1474 low-level feature: the formatting engine is completely oblivious to
1477 In the following example example, the second fingering is moved a
1478 little to the left, and 1.8 staff space downwards.
1480 @cindex setting object properties
1482 @lilypond[relative 1,verbatim]
1485 \once \property Voice.Fingering
1486 \set #'extra-offset = #'(-0.3 . -1.8)
1491 Setting the @code{transparent} property will make an object be printed
1492 in `invisible ink': the object is not printed, but all its other
1493 behavior is retained. The object still takes space, it takes part in
1494 collisions, and slurs, ties and beams can be attached to it.
1496 @cindex transparent objects
1497 @cindex removing objects
1498 @cindex invisible objects
1499 The following example demonstrates how to connect different voices
1500 using ties. Normally ties only happen between notes of the same
1501 voice. By introducing a tie in a different voice, and blanking a stem
1502 in that voice, the tie appears to cross voices.
1504 @lilypond[fragment,relative 1,verbatim]
1506 \once \property Voice.Stem \set #'transparent = ##t
1514 The @code{padding} property for objects with
1515 @code{side-position-interface} can be set to increase distance between
1516 symbols that are printed above or below notes. We only give an
1517 example; a more elaborate explanation is in @ref{Constructing a
1519 @lilypond[relative 1]
1521 \property Voice.Script \set #'padding = #3
1527 More specific overrides are also possible. The notation manual
1528 discusses in depth how to figure out these statements for yourself, in
1529 @ref{Tuning output}.
1531 @node Organizing larger pieces
1532 @section Organizing larger pieces
1534 When all of the elements discussed earlier are combined to produce
1535 larger files, the @code{\score} blocks get a lot bigger, because the
1536 music expressions are longer, and, in the case of polyphonic and/or
1537 orchestral pieces, more deeply nested.
1539 By using variables, also known as identifiers, it is possible to break
1540 up complex music expressions.
1541 An identifier is assigned as follows
1543 namedMusic = \notes @{ @dots{}
1546 The contents of the music expression @code{namedMusic}, can be used
1547 later by preceding the name with a backslash, i.e. @code{\namedMusic}.
1548 In the next example, a two note motive is repeated thrice by using
1549 variable substitution:
1551 @lilypond[singleline,verbatim]
1556 \seufzer \seufzer \seufzer
1560 The name of an identifier should only have alphabetic characters only,
1561 and no numbers, underscores or dashes. The assignment should be
1562 outside of the @code{\score} block.
1564 It is possible to use variables for many other types of objects in the
1569 aFivePaper = \paper @{ paperheight = 21.0 \cm @}
1571 Depending on its contents, the identifier can be used in different
1572 places. The following example uses the above variables:
1575 \notes @{ c4^\name @}
1583 More information on the possible uses of identifiers is in the
1584 technical manual, in @ref{Scheme datatypes}.
1587 @node An orchestral part
1588 @section An orchestral part
1590 In orchestral music, all notes are printed twice: both in a part for
1591 the musicians, and in a full score for the conductor. Identifiers can
1592 be used to avoid double work: the music is entered once, and stored in
1593 variable. The contents of that variable is then used to generate
1594 both the part and the score.
1596 It is convenient to define the notes in a special file, for example,
1597 suppose that the @file{horn-music.ly} contains the following part of a
1600 hornNotes = \notes \relative c @{
1606 Then, an individual part is made by putting the following in a file
1608 \include "horn-music.ly"
1610 instrument = "Horn in F"
1613 \notes \transpose c' f \hornNotes
1616 The @code{\include} command substitutes the contents of the file at
1617 this position in the file, so that @code{hornNotes} is defined
1618 afterwards. Since the horn is tuned in F, the @code{\transpose}
1619 command is used. The code @code{\transpose c' f} indicates that the
1620 argument, being @code{\hornNotes}, should be transposed by a fifth
1621 downwards: the @code{c'} becomes a @code{f}. The transposition can be
1622 seen in the following output:
1624 @lilypond[singleline]
1626 \notes \transpose c' f \notes \relative c' {
1633 In ensemble pieces, one of the voices often does not play for many
1634 measures. This is denoted by a special rest, the multi-measure
1635 rest. It is entered with a capital R, and followed by a duration (1
1636 for a whole note, 2 for a half note, etc.) By multiplying the
1637 duration, longer rests can be constructed. For example, the next rest
1638 takes 3 measures in 2/4 time.
1643 When printing the part, the following @code{skipBars} property must be
1644 set to false, to prevent the rest from being expanded in three one bar
1647 \property Score.skipBars = ##t
1649 Prepending the rest and the property setting above, leads to the
1652 @lilypond[singleline]
1653 \score {\notes { \transpose c' f \relative c' { \time 2/4
1654 \property Score.skipBars = ##t
1656 r4 f8 a cis4 f e d } }}
1659 The score is made by combining all of the music in a @code{\score}
1660 block, assuming that the other voice is in @code{bassoonNotes}, in the
1661 file @file{bassoon-music.ly}:
1663 \include "bassoon-music.ly"
1664 \include "horn-music.ly"
1668 \context Staff = hornStaff \hornNotes
1669 \context Staff = bsnStaff \bassoonNotes
1673 This would lead to the simple score depicted below.
1675 @lilypond[singleline]
1677 \notes \relative c \simultaneous {
1678 \context Staff = hornStaff { \time 2/4
1680 r4 f8 a cis4 f e d }
1681 \context Staff = fagStaff { \clef bass
1682 r4 d,8 f | gis4 c | b bes |
1683 a8 e f4 | g d | gis f }
1687 More in-depth information on preparing parts and scores is in the
1688 notation manual, in @ref{Orchestral music}.
1691 @node Integrating text and music
1692 @section Integrating text and music
1694 @cindex La@TeX{}, music in
1695 @cindex HTML, music in
1696 @cindex Texinfo, music in
1698 Sometimes you might want to use music examples in a text that you are
1699 writing (for example a musicological treatise, a songbook, or (like us)
1700 the LilyPond manual). You can make such texts by hand, simply by
1701 importing a PostScript figure into your word processor. However,
1702 there is an automated procedure to reduce the amount of work.
1704 If you use HTML, La@TeX{}, or Texinfo, you can mix text and LilyPond
1705 code. A script called @code{lilypond-book} will extract the music
1706 fragments, run LilyPond on them, and put back the resulting notation.
1707 This program is fully described in @ref{lilypond-book manual}. Here
1708 we show a small example. Since the example also contains explanatory
1709 text, we will not comment it further.
1712 \documentclass[a4paper]@{article@}
1715 In a lilypond-book document, you can freely mix music and text. For
1718 \score @{ \notes \relative c' @{
1719 c2 g'2 \times 2/3 @{ f8 e d @} c'2 g4
1723 Notice that the music line length matches the margin settings of the
1726 If you have no \verb+\score+ block in the fragment,
1727 \texttt@{lilypond-book@} will supply one:
1733 In the example you see here, two things happened: a
1734 \verb+\score+ block was added, and the line width was set to natural
1735 length. You can specify options by putting them in brackets:
1737 \begin[26pt,verbatim]@{lilypond@}
1741 If you want to include large examples into the text, it is more
1742 convenient to put it in a separate file:
1744 \lilypondfile@{screech-boink.ly@}
1749 Under Unix, you can view the results as follows.
1753 $ lilypond-book --outdir=out/ lilbook.tex
1754 lilypond-book (GNU LilyPond) 1.7.23
1755 Reading `input/tutorial/lilbook.tex'
1756 Reading `input/screech-boink6.ly'
1757 @var{lots of stuff deleted}
1758 Writing `out/lilbook.latex'
1760 $ latex lilbook.latex
1761 @var{lots of stuff deleted}
1765 Running lilypond-book and running latex creates a lot of temporary
1766 files, and you would not want those to clutter up your working
1767 directory. The @code{outdir} option to lilypond-book creates the
1768 temporary files in a separate subdirectory @file{out}.
1770 The result looks more or less like this:
1774 In a lilypond-book document, you can freely mix music and text. For
1778 \notes \relative c' {
1779 c2 g'2 \times 2/3 { f8 e d } c'2 g4
1787 Notice that the music line length matches the margin settings of the
1790 If you have no @code{\score} block in the fragment,
1791 @code{lilypond-book} will supply one:
1797 In the example you see here, two things happened: a
1798 @code{score} block was added, and the line width was set to natural
1799 length. You can specify options by putting them in brackets:
1801 @lilypond[26pt,verbatim]
1805 If you want to include large examples into the text, it is more
1806 convenient to put it in a separate file:
1808 @lilypondfile{screech-boink.ly}