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, by showing fragments of input and the
17 corresponding output. At the end of every section, a paragraph will
18 list where to find further information on the topics discussed.
20 Many people learn programs by trying and fiddling around with the
21 program. This is also possible with LilyPond. If you click on a
22 picture in the HTML version of this manual, you will see the exact
23 LilyPond input that was used to generate that image.
25 For example, consider the following input:
26 @c TODO: intertext fixme
27 @lilypond[relative 1,singleline,verbatim,intertext="with the following output:"]
28 c'^\markup { \bold \huge { Click on this image! } }
32 By cutting and pasting the full input into a test file, you have a
33 starting template for experiments. If you like learning in this way,
34 you will probably want to print out or bookmark
38 @ref{Cheat sheet}, which is a table listing all commands for quick
42 This tutorial starts with a short introduction to the LilyPond music
43 language. After this first contact, we will show you how to to
44 produce printed output, normally using the program @code{ly2dvi}. You
45 should then be able to create and print your first sheets of music.
48 * First steps:: Music language of LilyPond.
49 * Running LilyPond:: Printing music.
50 * More about pitches and accidentals::
52 * Combining music into compound expressions::
53 * Adding articulation marks to notes::
54 * Combining notes into chords::
57 * Listening to output::
59 * Single staff polyphony::
62 * Fine tuning layout::
63 * Organizing larger pieces::
64 * An orchestral part::
65 * Integrating text and music:: Integrating text and music.
72 We start off by showing how very simple music is entered in LilyPond:
73 you get a note simply by typing its note name, from @samp{a}
74 through @samp{g}. So if you enter
81 then the result looks like this:
84 @c \transpose c c' { c d e f g a b }
86 @c \property Score.timing = ##f
87 @lilypond[notime, relative=2]
91 The length of a note is specified by adding a number, @samp{1} for a
92 @rglos{whole note}, @samp{2} for a @rglos{half note}, and so on:
99 \property Score.timing = ##f
100 \property Staff.autoBeaming = ##f
101 \transpose c c' { a1 a2 a4 a16 a32 s16_" " }
104 If you do not specify a @rglos{duration}, the previous one is used:
111 \property Score.timing = ##f
112 \transpose c c' { a a a2 a s16_" " }
116 Rests are entered just like notes, but with the name ``@code{r}'':
125 \property Score.timing = ##f
126 \property Staff.Clef = \turnOff
127 \property Staff.TimeSignature = \turnOff
135 Add a dot @samp{.} after the duration to get a @rglos{dotted note}:
142 \property Score.timing = ##f
143 \transpose c c' { a2. a4 a8. a16 s16_" " }
147 The @rglos{meter} (or @rglos{time signature}) can be set with the
148 @code{\time} command:
156 @c a clef here may lead to confusion
158 \property Staff.Clef \set #'transparent = ##t
168 The @rglos{clef} can be set using the @code{\clef} command:
170 @c what is more common name treble or violin?
171 @c in Dutch, its violin.
172 @c in English its definitely treble.
181 \property Score.timing = ##f
192 Notes and commands like @code{\clef} and @code{\time} , are enclosed
193 in @code{\notes @{@dots{}@}}. This indicates that music (as opposed
194 to @rglos{lyrics}) follows:
204 Now the piece of music is almost ready to be printed. The final step is to
205 combine the music with a printing command.
207 The printing command is the so-called @code{\paper} block. The
208 @code{\paper} block is used to customize printing specifics, but we
209 accept the defaults for now. The music and the @code{\paper} block
210 are combined by enclosing them in @code{\score @{ ... @}}. The
211 following is a complete and valid input file.
234 linewidth = 55 * \staffspace
239 During the rest of the tutorial, we will often leave out @code{\score}
240 and @code{\paper}, for clarity. However, both must be present when
241 feeding the file to LilyPond.
243 More elaborate information on entering pitches and durations is in
244 @ref{Pitches} and @ref{Durations}. Clefs are fully explained in
245 @ref{Clef}. Time signatures and other timing commands are described
246 in @ref{Time signature}.
249 @node Running LilyPond
250 @section Running LilyPond
252 In the last section we explained what kind of things you could enter
253 in a LilyPond file. In this section we explain what commands to run
254 and how to view or print the output. If you have not used LilyPond
255 before, want to test your setup, or want to run an example file
256 yourself, read this section. The instructions that follow are for
257 Unix-like systems. Some additional instructions for Microsoft Windows
258 are given at the end of this section.
260 Begin by opening a terminal window and starting a text editor. For
261 example, you could open an xterm and execute
262 @code{joe}.@footnote{There are macro files for VIM addicts, and there
263 is a @code{LilyPond-mode} for Emacs addicts. If it has not been
264 installed already, then refer to the file @file{INSTALL.txt}}. In
265 your text editor, enter the following input and save the file as
271 \notes @{ c'4 e' g' @}
278 @c now this is weird, running ly2dvi to run LilyPond
279 @c (therefore name change proposal)
281 LilyPond is the program that computes the sheet music. All other
282 things, such as adding titles, page breaking and other page layout,
283 are done by a small wrapper program called
284 @code{ly2dvi}. @code{ly2dvi} calls LilyPond to render the music, and
285 then adds the titling and page layout instructions. To process
286 @file{test.ly} with @code{ly2dvi}, proceed as follows:
294 You will see something resembling:
299 Now processing: `/home/fred/ly/test.ly'
301 Interpreting music...[1]
302 @emph{ ... more interesting stuff ... }
303 PDF output to `test.pdf'...
304 DVI output to `test.dvi'...
308 @cindex Viewing music
311 The result of the ly2dvi is the file @file{test.pdf}.@footnote{For
312 @TeX{} afficionados, there is also a @file{test.dvi} file. It can be
313 viewed with @code{xdvi}. The DVI uses a lot of PostScript specials,
314 which do not show up in the magnifying glass. The specials also mean
315 that the DVI file cannot be processed with @code{dvilj}. Use
316 @code{dvips} for printing.
320 } One of the following commands should put the PDF on your
334 If the music on your screen looks good, you can print it by clicking
335 File/Print inside your viewing program.
339 @cindex Printing output
344 On Windows, the same procedure should work, the terminal is started by
345 clicking on the LilyPond or Cygwin icon. Any text editor (such as
346 NotePad, Emacs or Vim) may be used to edit the LilyPond file.
348 To view the PDF file, try the following:
351 If your system has a PDF viewer installed, open
352 @file{C:\Cygwin\home\@var{your-name}} in the explorer and double-click
355 If you prefer the keyboard, you can also try the list of commands
356 shown before. If none work, go to
357 @uref{http://www.cs.wisc.edu/~ghost/} to install the proper software.
360 The commands for formatting and printing music on all platforms are
361 detailed in @ref{Invoking LilyPond}.
363 @node More about pitches and accidentals
364 @section More about pitches and accidentals
366 A @rglos{sharp} (@texisharp{}) is made by adding @samp{is}, a
367 @rglos{flat} (@texiflat{}) by adding @samp{es}. As you might expect,
368 a @rglos{double sharp} or @rglos{double flat} is made by adding
369 @samp{isis} or @samp{eses}:@footnote{This syntax derived from note
370 naming conventions in Nordic and Germanic languages, like German and
378 \property Score.timing = ##f
379 \transpose c c' { cis1 ees fisis aeses s16_" " }
383 @cindex key signature, setting
385 The key signature is set with the command ``@code{\key}'', followed by
386 a pitch and @code{\major} or @code{\minor}:
396 \property Staff.TimeSignature = \turnOff
406 A tie is created by adding a tilde ``@code{~}'' to the first note
409 @lilypond[fragment,verbatim,relative 2]
415 This example shows the key signature, accidentals and ties in action:
426 fis4 fis8 fis8 eis4 a8 gis-~
435 \notes { \transpose c c' {
441 fis4 fis8 fis8 eis4 a8 gis-~
444 \paper { linewidth = #(* 50 staffspace) }
450 There are some interesting points to note in this example. Bar lines
451 and beams are drawn automatically. Line breaks are calculated
452 automatically; it does not matter where the lines breaks are in the
453 source file. Finally, the order of time, key and clef changes is not
454 relevant: in the printout, these are ordered according to standard
455 notation conventions.
457 Accidentals (sharps and flats) do not have to be marked explicitly:
458 you just enter the pitch of the note, and an accidental is printed
459 only when necessary. The flip side of this mechanism, is that you have
460 to mark notes as sharp or flat, even when they do not get accidentals.
461 For example, in this example:
464 \property Staff.TimeSignature = #'()
466 cis dis eis fis gis ais bis
468 no note gets an explicit accidental, but still you enter
472 cis dis eis fis gis ais bis
475 Adding all alterations explicitly might require some more effort when
476 typing, but the advantage is that transposing is easier. It also makes
477 it possible to use different conventions for when to print
480 @cindex beams, by hand
481 Beams are drawn automatically, but if you do not like where they are
482 put, they can be entered by hand. Mark the first note to be beamed
483 with @code{[} and the last one with @code{]}:
485 @lilypond[fragment,relative 1, verbatim]
491 Rests are described in full detail in @ref{Rests}.
493 The notation manual discusses ties in @ref{Ties}.
497 @section Octave entry
500 @c Tim wants to move this quotes example just before the: quotes-do not-work
501 @c score, but we'd need to remove quotes from the other two (key and
504 @c better to have this just before the `octaves are bad' snipped
505 @c but we'd need to remove the ', from \key and tie
506 To raise a note by an octave, add a high quote @code{'} (apostrophe) to
507 the note name, to lower a note one octave, add a ``low quote'' @code{,}
508 (a comma). Middle C is @code{c'}:
512 c'4 c'' c''' \clef bass c c,
516 \property Score.timing = ##f
517 \property Staff.TimeSignature = \turnOff
518 c'4 c'' c''' \clef bass c c,
523 An example of the use of quotes is in the following Mozart fragment:
524 @lilypond[singleline,fragment,verbatim]
527 cis''8. d''16 cis''8 e''4 e''8
528 b'8. cis''16 b'8 d''4 d''8
531 This example shows that music in a high register needs lots of quotes.
532 This makes the input less readable, and it is a source of errors. The
533 solution is to use ``relative octave'' mode. In practice, this is the
534 most convenient way to copy existing music. To use relative mode, add
535 @code{\relative} before the piece of music. You must also give a note
536 from which relative starts, in this case @code{c''}. If you do not
537 use octavation quotes (i.e. do not add ' or , after a note), relative
538 mode chooses the note that is closest to the previous one.
539 For example, @code{c f} goes up while @code{c g} goes down:
549 \property Score.timing = ##f
550 \property Staff.TimeSignature = \turnOff
559 Since most music has small intervals, in relative mode pieces can be
560 written almost without using octavation quotes. In relative mode, the
561 Mozart example is entered as
563 @lilypond[singleline,fragment,verbatim]
573 @c needed better, maybe even redundant explanation
574 @c added another example below.
575 @c grappig: Pa vond het heel logies, en slim toen-i eenmaal begreep.
576 @c in eerste instantie drong het `relative' niet door zonder extra uitleg.
577 Larger intervals are made by adding octavation quotes. Quotes or
578 commas do not determine the absolute height of a note; the height of a
579 note is relative to the previous one.
580 @c do not use commas or quotes in this sentence
581 For example: @code{c f,} goes down; @code{f, f} are both the same;
582 @code{c' c} are the same; and @code{c g'} goes up:
592 \property Score.timing = ##f
593 \property Staff.TimeSignature = \turnOff
602 Here is an example of the difference between relative mode and
603 ``normal'' (non-relative) mode:
614 \property Score.timing = ##f
615 \property Staff.TimeSignature = \turnOff
631 \property Score.timing = ##f
632 \property Staff.TimeSignature = \turnOff
647 @node Combining music into compound expressions
648 @section Combining music into compound expressions
650 To print more than one staff, each piece of music that makes up a
651 staff is marked by adding @code{\context Staff} before it. These
652 @code{Staff}'s are then grouped inside @code{\simultaneous @{} and
653 @code{@}}, as is demonstrated here:
656 @lilypond[fragment,verbatim]
658 \context Staff = staffA { \clef violin c'' }
659 \context Staff = staffB { \clef bass c }
665 In this example, @code{\simultaneous } indicates that both music
666 fragments happen at the same time, and must be printed stacked
667 vertically. The notation @code{< .. >} can also be used as a
668 shorthand for @code{\simultaneous @{ .. @}}.
670 @code{\context} introduces a ``notation context''. To understand this
671 concept, imagine that you are performing a piece of music. When you
672 perform the music, you combine the symbols printed at a certain point
673 with contextual information. For example, without knowing the current
674 clef, and the accidentals in the last measure, it would be impossible
675 to determine the pitch of a note. In other words, this information
676 forms context that helps you decipher a score. LilyPond produces
677 notation from music, so in effect, it does the inverse of reading
678 scores. Therefore, it also needs to keep track of contextual
679 information. This information is maintained in ``notation contexts.''
680 There are several types of contexts, e.g. @code{Staff}, @code{Voice}
681 and @code{Score}, but also @code{Lyrics} and
682 @code{ChordNames}. Prepending @code{\context} to a chunk of music
683 indicates what kind of context to use for interpreting it.
685 By specifying different names (in this case @code{staffA} and
686 @code{staffB}), two different contexts are created, leading to two
687 staves. It does not matter which names they are given, as long as they
688 are different. If they get the same name, the chunks of music are
689 assumed to belong on the same staff, and will be printed like that.
693 We can now typeset a melody with two staves:
696 @lilypond[verbatim,singleline]
699 < \context Staff = staffA {
706 \context Staff = staffB {
717 The example shows how small chunks of music, for example, the notes
718 @code{c2}, @code{e4}, etc. of the second staff, are combined to form a
719 larger chunk by enclosing it in braces. Again, a larger chunk is
720 formed by prefix @code{\context Staff} to it, and that chunk is
721 combined with @code{< >}. This mechanism is similar with mathematical
722 formulas: in a formula, a so-called expression is formed by combining
723 simpler expressions into larger expressions. For example,
732 ((1 + 2) * 3) / (4 * 5)
735 @cindex music expression
736 is a sequence of expressions, where each expression is contained in
737 the next one. The simplest expressions are numbers and operators
738 (like +, * and /). Parentheses are used to group expressions. In
739 LilyPond input, a similar mechanism is used. Here, the simplest
740 expressions are notes and rests. By enclosing expressions in @code{<
741 >} and @code{@{ @}}, more complex music is formed. The @code{\context}
742 also forms new expressions; prepending it to a music expression yields
745 Like mathematical expressions, music expressions can be nested
746 arbitrarily deep, e.g.
747 @lilypond[verbatim,relative 1]
749 < { e f } { c <b d> }
756 When spreading expressions over multiple lines, it is customary to use
757 an indent that indicates the nesting level. Formatting music like this
758 eases reading, and helps you insert the right amount of closing
759 braces at the end of an expression. For example,
776 @node Adding articulation marks to notes
777 @section Adding articulation marks to notes
783 Common accents can be added to a note using a dash (`@code{-}') and a
786 @lilypond[verbatim,relative 1]
787 c-. c-- c-> c-^ c-+ c-_
793 Similarly, fingering indications can be added to a note using a dash
794 (`@code{-}') and the digit to be printed:
796 @lilypond[verbatim,relative 1]
801 Dynamic signs are made by adding the markings to the note:
803 @lilypond[verbatim,relative 1]
813 Crescendi and decrescendi are started with the commands @code{\<} and
814 @code{\>}. The command @code{\!} finishes a crescendo on the note it
817 @lilypond[verbatim,relative 1]
818 c2\< c2\!\ff c2\> c2\!
827 A slur is drawn across many notes, and indicates bound articulation
828 (legato). The starting note and ending note are marked with a
829 ``@code{(}'' and a ``@code{)}'' respectively:
832 @lilypond[fragment,relative 1, verbatim]
833 d4( c16)( cis d e c cis d e)( d4)
837 @cindex slurs versus ties
838 A slur is different from a tie. A tie simply makes the first note
839 sound longer, and can only be used on pairs of notes with the same
840 pitch. Slurs indicate the articulations of notes, and can be used on
841 larger groups of notes. Slurs and ties are also nested in practice:
842 @lilypond[fragment, relative=1]
843 c2-~( c8 fis fis4 ~ fis2 g2)
846 @cindex phrasing slurs
847 If you need two slurs at the same time (one for articulation, one for
848 phrasing), you can also make a phrasing slur with @code{\(} and
852 @lilypond[fragment,relative 1, verbatim]
853 a8(\( ais b c) cis2 b'2 a4 cis, c\)
858 More information on fingering, articulation, slurs, phrasing slurs,
859 and dynamics can be found in @ref{Fingering instructions},
860 @ref{Articulations}, @ref{Slurs}, @ref{Phrasing slurs}, and @ref{Dynamics},
863 @node Combining notes into chords
864 @section Combining notes into chords
867 Chords can be made by
868 surrounding pitches with @code{<<} and @code{>}>:
870 @lilypond[relative 0, fragment,verbatim]
871 r4 <<c e g>>4 <<c f a>>8
877 You can combine beams and ties with chords. Beam and tie markings
878 must be placed outside the chord markers:
880 @lilypond[relative 0, fragment,verbatim]
881 r4 <<c e g>>8[ <<c f a>>]-~ <<c f a>>
887 r4 <<c e g>>8\>( <<c e g>> <<c e g>> <<c f a>>8\!)
889 @lilypond[relative 0, fragment]
891 r4 <<c e g>>8\>( <<c e g>> <<c e g>> <<c f a>>8\!)
899 * Basic rhythmical commands::
900 * Commenting input files::
903 @node Basic rhythmical commands
904 @subsection Basic rhythmical commands
909 @cindex partial measure
910 A pickup (or upstep) is entered with the keyword @code{\partial}. It
911 is followed by a duration: @code{\partial 4} is a quarter note upstep
912 and @code{\partial 8} an eighth note:
913 @lilypond[relative 1,verbatim,fragment]
920 Tuplets are made with the @code{\times} keyword. It takes two
921 arguments: a fraction and a piece of music. The duration of the piece
922 of music is multiplied by the fraction. Triplets make notes occupy
923 2/3 of their notated duration, so a triplet has 2/3 as its fraction:
925 @lilypond[relative 0,verbatim,fragment]
926 \times 2/3 { f8 g a }
932 Grace notes are also made by prefixing a note, or a set of notes with
933 a keyword. In this case, the keyword is @code{\grace}:
934 @lilypond[relative 1, verbatim,fragment]
936 \grace { d16( e } d4)
940 More information on grace notes, tuplets and upsteps are in @ref{Grace
941 notes}, @ref{Tuplets} and @ref{Partial measures}.
945 @node Commenting input files
946 @subsection Commenting input files
950 @cindex block comment
951 Comments are pieces of the input that are ignored. There are two
952 types of comments. A line comments is introduced by @code{%}: after
953 that, the rest of that line is ignored. Block comments span larger
954 sections of input. Anything that is enclosed in @code{%@{} and
955 @code{%@}} is ignored too. The following fragment shows possible uses
959 % notes for twinkle twinkle follow:
964 This line, and the notes below
965 are ignored, since they are in a
975 @node Printing lyrics
976 @section Printing lyrics
981 Lyrics are entered by separating each syllable with a space, and
982 surrounding them with @code{\lyrics @{ @dots{} @}}, for example,
984 \lyrics @{ I want to break free @}
987 Like notes, lyrics are also a form of music, but they must not be
988 printed on a staff, which is the default way to print music. To print
989 them as lyrics, they must be marked with @code{ \context Lyrics}:
991 \context Lyrics \lyrics @{ I want to break free @}
993 The melody for this song is as follows:
995 @lilypond[fragment,relative=1]
998 \times 2/3 { f4 g g } \times 2/3 { g4( a2) }
1001 The lyrics can be set to these notes, combining both with the
1002 @code{\addlyrics} keyword:
1005 \notes @{ @dots{} @}
1006 \context Lyrics @dots{}
1010 @lilypond[verbatim,linewidth=6.0cm]
1017 \times 2/3 { f g g } \times 2/3 { g4( a2) }
1019 \context Lyrics \lyrics { I want to break free }
1026 @cindex extender line
1028 This melody ends on a @rglos{melisma}, a single syllable (``free'')
1029 sung to more than one note. This is indicated with a @emph{extender
1030 line}. It is entered as two underscores, i.e.
1032 \lyrics @{ I want to break free __ @}
1041 \times 2/3 { f g g } \times 2/3 { g4( a2) }
1043 %% ugh, this is to deal with bugs in the extender implementation
1047 \context Lyrics \lyrics { I want to break free __ }
1049 \paper{ linewidth = 9.0 \cm }
1053 Similarly, hyphens between words can be entered as two dashes,
1054 resulting in a centered hyphen between two syllables:
1056 Twin -- kle twin -- kle
1058 @lilypond[singleline]
1060 \addlyrics \notes \relative f' { \time 2/4
1062 \context Lyrics \lyrics { Twin -- kle twin -- kle
1064 \paper { linewidth = 6.0 \cm }
1069 More options, like putting multiple lines of lyrics below a melody are
1070 discussed in @ref{Vocal music}.
1075 @section A lead sheet
1081 In popular music, it is common to denote accompaniment as chord-names.
1082 Using them in LilyPond has two parts, just like lyrics: entering the
1083 chords (with @code{\chords}), and printing them (with @code{\context
1086 Chord names are entered by starting chords mode (with @code{\chords}).
1087 In chords mode, you can enter chords with a letter (indicating the
1088 root of the chord), and a durations following that:
1091 \chords { c2 f4. g8 }
1095 The result of @code{\chords} is a list of chords, and is equivalent
1096 to entering chords with @code{<<@dots{}>>}.
1098 Other chords can be created by adding modifiers, after a colon. The
1099 following example shows a few common modifiers:
1102 \chords { c2 f4:m g4:maj7 gis1:dim7 }
1105 Printing chords is done by adding @code{\context ChordNames}
1106 before the chords thus entered:
1109 \context ChordNames \chords \chords { c2 f4.:m g4.:maj7 gis8:dim7 }
1113 When put together, chord names, lyrics and a melody form
1114 a lead sheet, for example,
1119 \context ChordNames \chords @{ @emph{chords} @}
1121 \notes @emph{the melody}
1122 \context Lyrics \lyrics @{ @emph{the text} @}
1130 \context ChordNames \chords { r8 c2:sus4 f }
1132 \notes \relative c' {
1135 \times 2/3 { f g g } \times 2/3 { g4( a2) } }
1136 \context Lyrics \lyrics { I want to break free __ }
1138 \paper{ raggedright = ##t }
1143 A complete list of modifiers, and other options for layout are in the
1144 reference manual section @ref{Chords}.
1146 @node Listening to output
1147 @section Listening to output
1152 MIDI (Musical Instrument Digital Interface) is a standard for
1153 connecting and recording digital instruments. A MIDI file is like a
1154 tape recording of a MIDI instrument. The @code{\midi} block makes the
1155 music go to a MIDI file, so you can listen to the music you entered.
1156 It is great for checking the music: octaves that are off, or
1157 accidentals that were mistyped, stand out very much when listening to
1158 the musical transcription.
1160 @code{\midi} can be used in similarly to @code{\paper @{ @}}, for
1165 \midi @{ \tempo 4=72 @}
1170 Here, the tempo is specified using the @code{\tempo} command. In this
1171 case the tempo of quarter notes is set to 72 beats per minute. More
1172 information on auditory output is in the @ref{Sound} section in the
1180 Bibliographic information is entered in a separate block, the
1181 @code{\header} block. The name of the piece, its composer, etc. are
1182 entered as assignment, within @code{\header @{ @dots{} @}}. For
1186 title = "Eight miniatures"
1187 composer = "Igor Stravinsky"
1188 tagline = "small is beautiful"
1191 \score @{ @dots{} @}
1194 @cindex bibliographic information
1200 When the file is processed by @code{ly2dvi}, the title and composer
1201 specified are printed above the music. The `tagline' is a short line
1202 printed at bottom of the last page, which normally says ``Lily was
1203 here, version @dots{}''. In the example above, it is replaced by the
1204 line ``small is beautiful''.
1206 Normally, the @code{\header} is put at the top of the file. However,
1207 for a document that contains multiple pieces (e.g. a etude book, or
1208 part with multiple movements), then the header can be put into the
1209 @code{\score} block as follows; in this case, the name of each piece
1210 will be printed before each movement:
1213 @cindex Lily was here
1214 @cindex signature line
1219 title = "Eight miniatures"
1220 composer = "Igor Stravinsky"
1221 tagline = "small is beautiful"
1225 \header @{ piece = "Adagio" @}
1228 \header @{ piece = "Menuetto" @}
1232 More information on titling can be found in @ref{Invoking ly2dvi}.
1235 @node Single staff polyphony
1236 @section Single staff polyphony
1239 @cindex multiple voices
1240 @cindex voices, more -- on a staff
1242 When different melodic lines are combined on a single staff, these are
1243 printed as polyphonic voices: each voice has its own stems, slurs
1244 and beams, and the top voice has the stems up, while the bottom voice
1247 Entering such parts is done by entering each voice as a sequence (with
1248 @code{@{ .. @}}), and combining those simultaneously, separating the
1249 voices with @code{\\}:
1252 < @{ a4 g2 f4-~ f4 @} \\
1255 @lilypond[relative 1]
1256 \context Staff < { a4 g2 f4-~ f4 } \\
1260 For polyphonic music typesetting, spacer rests can also be convenient: these
1261 are rests that do not print. It is useful for filling up voices that
1262 temporarily do not play:
1264 < @{ a4 g2 f4-~ f4 @} \\
1267 @lilypond[relative 1]
1268 \context Staff < { a4 g2 f4-~ f4 } \\
1272 Again, these expressions can be nested arbitrarily:
1276 \context Staff = staffA
1278 < { a4 g2 f4-~ f4 } \\
1280 \context Staff = staffB
1281 < { \clef bass <<c g>>1 } \\
1288 More features of polyphonic typesetting are in the notation manual
1292 @section Piano staves
1294 @cindex staff switch, manual
1295 @cindex cross staff voice, manual
1296 @cindex @code{\translator}
1298 Piano music is always typeset in two staves connected by a brace.
1299 Printing such a staff is done similar to the polyphonic example in
1300 @ref{Combining music into compound expressions}:
1302 < \context Staff = up @{ @dots{} @}
1303 \context Staff = down @{ @dots{} @}
1306 but now this entire expression must be interpreted as a
1309 \context PianoStaff < \context Staff @dots{} >
1312 Here is a full-fledged example:
1314 @lilypond[relative 0,fragment]
1316 < \context Staff = up { \time 2/4
1318 \context Staff = down {
1319 \clef bass c,, c' e c }
1323 More information on formatting piano music is in @ref{Piano music}.
1325 @node Setting variables
1326 @section Setting variables
1328 When the music is converted from notes to print, it is interpreted
1329 from left-to-right order, similar to what happens when we read
1330 music. During this step, context-sensitive information, such as the
1331 accidentals to print, and where barlines must be placed, are stored in
1332 variables. These variables are called @emph{translation properties}.
1333 The properties can also be manipulated from input files. Consider this input:
1335 \property Staff.autoBeaming = ##f
1337 It sets the property named @code{autoBeaming} in the current staff to
1338 @code{##f}, which means `false'. This property controls whether beams
1339 are printed automatically:
1340 @lilypond[relative 1,fragment,verbatim]
1342 \property Staff.autoBeaming = ##f
1347 LilyPond includes a built-in programming language, namely, a dialect
1348 of Scheme. The argument to @code{\property}, @code{##f}, is an
1349 expression in that language. The first hash-mark signals that a piece
1350 of Scheme code follows. The second hash character is part of the
1351 boolean value true (@code{#t}). Values of other types may be
1354 @item a string, enclosed in double quotes, for example,
1356 \property Staff.instrument = #"French Horn"
1358 @item a boolean: either @code{#t} or @code{#f}, for true and false
1361 \property Voice.autoBeaming = ##f
1362 \property Score.skipBars = ##t
1365 @item a number, such as
1367 \property Score.currentBarNumber = #20
1370 @item a symbol, which is introduced by a quote character, as in
1372 \property Staff.crescendoSpanner = #'dashed-line
1375 @item a pair, which is also introduced by a quote character, like in
1376 the following statements, which set properties to the pairs (-7.5, 6)
1377 and (3, 4) respectively:
1380 \property Staff.minimumVerticalExtent = #'(-7.5 . 6)
1381 \property Staff.timeSignatureFraction = #'(3 . 4)
1387 There are many different properties, and not all of them are listed in
1388 this manual. However, the internal documentation lists them all in the
1389 @internalsref{All translation properties}, and most properties
1390 are demonstrated in one of the
1392 @uref{../../../input/test/out-www/collated-files.html,tips-and-tricks}
1400 @node Fine tuning layout
1401 @section Fine tuning layout
1403 Sometimes it is necessary to change music layout by hand. When music
1404 is formatted, layout objects are created for each symbol. For
1405 example, every clef and every note head is represented by a layout
1406 object. These layout objects also carry variables, which we call
1407 @emph{layout properties}. By changing these variables from their
1408 values, we can alter the look of a formatted score:
1410 @lilypond[verbatim,relative 0]
1412 \property Voice.Stem \override #'thickness = #3.0
1417 In the example shown here, the layout property @code{thickness} (a
1418 symbol) is set to 3 in the @code{Stem} layout objects of the current
1419 Voice. As a result, the notes following @code{\property} have thicker
1422 In most cases of manual overrides, only a single object must be
1423 changed. This can be achieved by prefixing @code{\once} to the
1424 @code{\property} statement, i.e.
1427 \once \property Voice.Stem \set #'thickness = #3.0
1430 @lilypond[relative 0]
1432 \once \property Voice.Stem \set #'thickness = #3.0
1437 Some overrides are so common that predefined commands are provided as
1438 a short cut. For example, @code{\slurUp} and @code{\stemDown}. These
1439 commands are described in
1443 @ref{Notation manual}, under the sections for slurs and stems
1446 The exact tuning possibilities for each type of layout object are
1447 documented in the internal documentation of the respective
1448 object. However, many layout objects share properties, which can be
1449 used to apply generic tweaks. We mention a couple of these:
1452 @item The @code{extra-offset} property, which
1453 @cindex @code{extra-offset}
1454 has a pair of numbers as value, moves around objects in the printout.
1455 The first number controls left-right movement; a positive number will
1456 move the object to the right. The second number controls up-down
1457 movement; a positive number will move it higher. The unit of these
1458 offsets are staff-spaces. The @code{extra-offset} property is a
1459 low-level feature: the formatting engine is completely oblivious to
1462 In the following example example, the second fingering is moved a
1463 little to the left, and 1.8 staff space downwards:
1465 @cindex setting object properties
1467 @lilypond[relative 1,verbatim]
1470 \once \property Voice.Fingering
1471 \set #'extra-offset = #'(-0.3 . -1.8)
1476 Setting the @code{transparent} property will make an object be printed
1477 in `invisible ink': the object is not printed, but all its other
1478 behavior is retained. The object still takes space, it takes part in
1479 collisions, and slurs, ties and beams can be attached to it.
1481 @cindex transparent objects
1482 @cindex removing objects
1483 @cindex invisible objects
1484 The following example demonstrates how to connect different voices
1485 using ties. Normally ties only happen between notes of the same
1486 voice. By introducing a tie in a different voice, and blanking a stem
1487 in that voice, the tie appears to cross voices:
1489 @lilypond[fragment,relative 1,verbatim]
1491 \once \property Voice.Stem \set #'transparent = ##t
1499 The @code{padding} property for objects with
1500 @cindex @code{padding}
1501 @code{side-position-interface} can be set to increase distance between
1502 symbols that are printed above or below notes. We only give an
1503 example; a more elaborate explanation is in @ref{Constructing a
1506 @lilypond[relative 1]
1508 \property Voice.Script \set #'padding = #3
1514 More specific overrides are also possible. The notation manual
1515 discusses in depth how to figure out these statements for yourself, in
1516 @ref{Tuning output}.
1518 @node Organizing larger pieces
1519 @section Organizing larger pieces
1521 When all of the elements discussed earlier are combined to produce
1522 larger files, the @code{\score} blocks get a lot bigger, because the
1523 music expressions are longer, and, in the case of polyphonic and/or
1524 orchestral pieces, more deeply nested.
1526 By using variables, also known as identifiers, it is possible to break
1527 up complex music expressions.
1528 An identifier is assigned as follows:
1530 namedMusic = \notes @{ @dots{}
1533 The contents of the music expression @code{namedMusic}, can be used
1534 later by preceding the name with a backslash, i.e. @code{\namedMusic}.
1535 In the next example, a two note motive is repeated thrice by using
1536 variable substitution:
1538 @lilypond[singleline,verbatim]
1543 \seufzer \seufzer \seufzer
1547 The name of an identifier should only have alphabetic characters only,
1548 and no numbers, underscores or dashes. The assignment should be
1549 outside of the @code{\score} block.
1551 It is possible to use variables for many other types of objects in the
1556 aFivePaper = \paper @{ paperheight = 21.0 \cm @}
1558 Depending on its contents, the identifier can be used in different
1559 places. The following example uses the above variables:
1562 \notes @{ c4^\name @}
1570 More information on the possible uses of identifiers is in the
1571 technical manual, in @ref{Scheme datatypes}.
1574 @node An orchestral part
1575 @section An orchestral part
1577 In orchestral music, all notes are printed twice: both in a part for
1578 the musicians, and in a full score for the conductor. Identifiers can
1579 be used to avoid double work: the music is entered once, and stored in
1580 variable. The contents of that variable is then used to generate
1581 both the part and the score.
1583 It is convenient to define the notes in a special file, for example,
1584 suppose that the @file{horn-music.ly} contains the following part of a
1587 hornNotes = \notes \relative c @{
1593 Then, an individual part is made by putting the following in a file:
1595 \include "horn-music.ly"
1597 instrument = "Horn in F"
1600 \notes \transpose c' f \hornNotes
1603 The @code{\include} command substitutes the contents of the file at
1604 this position in the file, so that @code{hornNotes} is defined
1605 afterwards. The code @code{\transpose f c'} indicates that the
1606 argument, being @code{\hornNotes}, should be transposed by a fifth
1607 downwards: sounding @code{f} is denoted by notated @code{c'}, which
1608 corresponds with tuning of a normal French Horn in F. The
1609 transposition can be seen in the following output:
1611 @lilypond[singleline]
1613 \notes \transpose f c' \notes \relative c {
1620 In ensemble pieces, one of the voices often does not play for many
1621 measures. This is denoted by a special rest, the multi-measure
1622 rest. It is entered with a capital R, and followed by a duration (1
1623 for a whole note, 2 for a half note, etc.) By multiplying the
1624 duration, longer rests can be constructed. For example, the next rest
1625 takes 3 measures in 2/4 time:
1630 When printing the part, the following @code{skipBars} property must be
1631 set to false, to prevent the rest from being expanded in three one bar
1634 \property Score.skipBars = ##t
1636 Prepending the rest and the property setting above, leads to the
1639 @lilypond[singleline]
1640 \score {\notes { \transpose f c' \relative c { \time 2/4
1641 \property Score.skipBars = ##t
1643 r4 f8 a cis4 f e d } }}
1646 The score is made by combining all of the music in a @code{\score}
1647 block, assuming that the other voice is in @code{bassoonNotes}, in the
1648 file @file{bassoon-music.ly}:
1650 \include "bassoon-music.ly"
1651 \include "horn-music.ly"
1655 \context Staff = hornStaff \hornNotes
1656 \context Staff = bsnStaff \bassoonNotes
1660 This would lead to the simple score depicted below:
1662 @lilypond[singleline]
1664 \notes \relative c \simultaneous {
1665 \context Staff = hornStaff { \time 2/4
1667 r4 f8 a cis4 f e d }
1668 \context Staff = fagStaff { \clef bass
1669 r4 d,8 f | gis4 c | b bes |
1670 a8 e f4 | g d | gis f }
1674 More in-depth information on preparing parts and scores is in the
1675 notation manual, in @ref{Orchestral music}.
1678 @node Integrating text and music
1679 @section Integrating text and music
1681 @cindex La@TeX{}, music in
1682 @cindex HTML, music in
1683 @cindex Texinfo, music in
1685 Sometimes you might want to use music examples in a text that you are
1686 writing (for example, a musicological treatise, a songbook, or (like us)
1687 the LilyPond manual). You can make such texts by hand, simply by
1688 importing a PostScript figure into your word processor. However,
1689 there is an automated procedure to reduce the amount of work.
1691 If you use HTML, La@TeX{}, or Texinfo, you can mix text and LilyPond
1692 code. A script called @code{lilypond-book} will extract the music
1693 fragments, run LilyPond on them, and put back the resulting notation.
1694 This program is fully described in @ref{lilypond-book manual}. Here
1695 we show a small example; since the example contains also explanatory
1696 text, we will not comment it further:
1699 \documentclass[a4paper]@{article@}
1702 In a lilypond-book document, you can freely mix music and text. For
1705 \score @{ \notes \relative c' @{
1706 c2 g'2 \times 2/3 @{ f8 e d @} c'2 g4
1710 Notice that the music line length matches the margin settings of the
1713 If you have no \verb+\score+ block in the fragment,
1714 \texttt@{lilypond-book@} will supply one:
1720 In the example you see here, two things happened: a
1721 \verb+\score+ block was added, and the line width was set to natural
1722 length. You can specify options by putting them in brackets:
1724 \begin[26pt,verbatim]@{lilypond@}
1728 If you want to include large examples into the text, it is more
1729 convenient to put it in a separate file:
1731 \lilypondfile@{screech-boink.ly@}
1736 Under Unix, you can view the results as follows:
1740 $ lilypond-book --outdir=out/ lilbook.tex
1741 lilypond-book (GNU LilyPond) 1.7.23
1742 Reading `input/tutorial/lilbook.tex'
1743 Reading `input/screech-boink6.ly'
1744 @var{lots of stuff deleted}
1745 Writing `out/lilbook.latex'
1747 $ latex lilbook.latex
1748 @var{lots of stuff deleted}
1752 Running lilypond-book and running latex creates a lot of temporary
1753 files, and you would not want those to clutter up your working
1754 directory. The @code{outdir} option to lilypond-book creates the
1755 temporary files in a separate subdirectory @file{out}.
1757 The result looks more or less like this:
1761 In a lilypond-book document, you can freely mix music and text. For
1765 \notes \relative c' {
1766 c2 g'2 \times 2/3 { f8 e d } c'2 g4
1774 Notice that the music line length matches the margin settings of the
1777 If you have no @code{\score} block in the fragment,
1778 @code{lilypond-book} will supply one:
1784 In the example you see here, two things happened: a
1785 @code{score} block was added, and the line width was set to natural
1786 length. You can specify options by putting them in brackets:
1788 @lilypond[26pt,verbatim]
1792 If you want to include large examples into the text, it is more
1793 convenient to put it in a separate file:
1795 @lilypondfile{screech-boink.ly}