4 @c * LilyPond Lilypond lilypond (sometimes: the program)
5 @c * more details about running lilypond; error messages,
6 @c compiling/viewing (emacs?)
7 @c * where to go from First steps+More basics?
13 <!--- @@WEB-TITLE@@=Tutorial --->
17 * First steps:: Music language of LilyPond
18 * Running LilyPond:: Printing music
21 * A melody with chords ::
23 * More movements :: Joining separate pieces of music
24 * A piano excerpt:: Piano music
25 * Fine tuning a piece::
26 * An orchestral score:: Conductor's score and individual parts
27 * Integrating text and music:: Integrating text and music
30 Operating lilypond is done through text files: To print a piece of
31 music, you enter the music in a file. When you run lilypond (normally
32 using the program @code{ly2dvi}) on that file, the program produces
33 another file which contains sheet music that you can print or view.
35 This tutorial starts with a small introduction to the LilyPond music
36 language. After this first contact, we will show you how to run
37 LilyPond to produce printed output; you should then be able to create
38 your first sheets of music. The tutorial continues with more and more
45 We start off by showing how very simple music is entered in LilyPond:
46 you get a note simply by typing its @htmlref{note name}, from @samp{a}
47 through @samp{g}. So if you enter
54 then the result looks like this:
57 @c \transpose c c' { c d e f g a b }
59 @c \property Score.timing = ##f
60 @lilypond[notime, relative=2]
64 We will continue with this format: First we show a snippet of input,
65 then the resulting output.
67 The length of a note is specified by adding a number, @samp{1} for a
68 @rglos{whole note}, @samp{2} for a @rglos{half note}, and so on:
75 \property Score.timing = ##f
76 \property Staff.autoBeaming = ##f
77 \transpose c c' { a1 a2 a4 a16 a32 s16_" " }
80 If you do not specify a @rglos{duration}, the previous one is used:
87 \property Score.timing = ##f
88 \transpose c c' { a a a2 a s16_" " }
91 A @rglos{sharp} (@texisharp{}) is made by adding @samp{is}, a
92 @rglos{flat} (@texiflat{}) by adding @samp{es}. As you would expect,
93 a @rglos{double sharp} or @rglos{double flat} is made by adding
94 @samp{isis} or @samp{eses}:
101 \property Score.timing = ##f
102 \transpose c c' { cis1 ees fisis aeses s16_" " }
105 Add a dot @samp{.} after the duration to get a @rglos{dotted note}:
112 \property Score.timing = ##f
113 \transpose c c' { a2. a4 a8. a16 s16_" " }
116 The @rglos{meter} (or @rglos{time signature}) can be set with the
117 @code{\time} command:
125 @c a clef here may lead to confusion
127 \property Staff.Clef \set #'transparent = ##t
136 The @rglos{clef} can be set using the @code{\clef} command:
138 @c what is more common name treble or violin?
139 @c in Dutch, its violin.
140 @c in English its definitely treble.
149 \property Score.timing = ##f
160 When you enter these commands in a file, you must to enclose them in
161 @code{\notes @{@dots{}@}}. This lets LilyPond know that music (as
162 opposed to @rglos{lyrics}) follows:
172 Now the piece of music is almost ready to be printed. The final step is to
173 combine the music with a printing command.
175 The printing command is the so-called @code{\paper} block. Later on
176 you will see that the @code{\paper} block is used to customize
177 printing specifics. The music and the @code{\paper} block are combined by
178 enclosing them in @code{\score @{ ... @}}. This is what a full
179 LilyPond source file looks like:
202 linewidth = 55 * \staffspace
208 @node Running LilyPond
209 @section Running LilyPond
211 In the last section we explained what kind of things you could enter
212 in a lilypond file. In this section we explain how to run LilyPond
213 and how to view or print the output. If you have not used LilyPond
214 before, want to test your setup of LilyPond, or want to run an example
215 file yourself, read this section. The instructions that follow
216 are for running LilyPond on Unix-like systems. Some additional
217 instructions for running LilyPond on Windows are given at the end of
220 Begin by opening a terminal window and starting a text editor.
221 For example, you could open an xterm and execute @code{joe}. In your
222 text editor, enter the following input and save the file as
228 \notes @{ c'4 e' g' @}
235 @c now this is weird, running ly2dvi to run LilyPond
236 @c (therefore name change proposal)
238 LilyPond is the program that computes the sheet music. All other
239 things, such as adding titles, page breaking and other page layout,
240 are done by a small wrapper program called
241 @code{ly2dvi}. @code{ly2dvi} calls lilypond to render the music, and
242 then adds the titling and page layout instructions. To process
243 @file{test.ly} with @code{ly2dvi}, proceed as follows:
251 You will see the following on your screen:
256 Now processing: `/home/fred/ly/test.ly'
258 Interpreting music...[1]
259 @emph{ ... more interesting stuff ... }
260 PDF output to `test.pdf'...
261 DVI output to `test.dvi'...
265 @cindex Viewing music
268 The results of the ly2dvi run are two files, @file{test.dvi} and
269 @file{test.pdf}. The PDF file (@file{test.pdf}) is the one you can
270 print or view. For example, viewing PDF can be done with ghostview.
271 If a version of ghostview is installed on your system, one of these
272 commands will produce a window with some music notation on your
283 If the music on your screen looks good, you can print it by clicking
284 File/Print inside ghostview.
286 The DVI file (@file{test.dvi}) contains the same sheet music in a
287 different format. DVI files are more easily processed by the computer,
288 so viewing them usually is quicker. You can run @code{xdvi test.dvi} or
289 @code{kdvi test.dvi} to view the DVI file. In Xdvi, the mouse burtons
290 activate magnifying glasses. Unfortunately, variable symbols (such as
291 beams and slurs) are not displayed in the magnifying glasses.
296 @cindex Printing output
300 If you are familiar with @TeX{}, be warned: do not use other DVI
301 drivers like @code{dvilj}. The @TeX{} coming out of LilyPond uses
302 embedded PostScript code and will not render correctly if you use
303 anything other than @code{dvips}.
309 @unnumberedsubsec Windows users
310 Windows users can start the terminal by clicking on the LilyPond or
311 Cygwin icon. You can use any text editor (such as NotePad, Emacs or
312 Vim) to edit the LilyPond file. If you install the Cygwin's
313 @code{XFree86} X11 window system, @code{tetex-x11} and
314 @code{ghostscript-x11} packages too, you can view the @code{dvi}
315 output doing @code{xdvi test.dvi} as described above. If you have
316 installed a PostScript/PDF viewer, such as @code{GSView} from
317 @uref{http://www.cs.wisc.edu/~ghost}, viewing the PDF file can be done
321 @code{gsview32 test.pdf}
324 You can also print from the command line by executing:
327 @code{gsview32 /s test.pdf}
334 To run LilyPond, input a text file, then run the command @code{ly2dvi} on
335 that file. The resulting files are either DVI or PostScript, and can
336 be viewed with @code{xdvi} (Unix) and ghostview (Unix and Windows)
337 respectively. The following table summarizes the constructs that were
338 discussed in the previous two sections.
340 @multitable @columnfractions .3 .3 .4
346 @item @code{1 2 8 16}
349 @lilypond[relative 1, notime]
350 \property Staff.autoBeaming = ##f
351 \property Staff.Clef = \turnOff
356 @tab augmentation dots
358 @lilypond[relative 1, notime]
359 \property Staff.Clef = \turnOff
363 @item @code{c d e f g a b }
366 @lilypond[relative 1, notime]
367 \property Staff.Clef = \turnOff
371 @item @code{\clef treble \clef bass }
381 @item @code{\time 3/4 \time 4/4 }
385 \property Staff.Clef \set #'transparent = ##t
398 We continue with the introduction of the remaining musical constructs.
399 Normal rests are entered just like notes with the name ``@code{r}'':
407 \property Score.timing = ##f
408 \property Staff.Clef = \turnOff
409 \property Staff.TimeSignature = \turnOff
416 @c Tim wants to move this quotes example just before the: quotes-do not-work
417 @c score, but we'd need to remove quotes from the other two (key and
420 @c better to have this just before the `octaves are bad' snipped
421 @c but we'd need to remove the ', from \key and tie
422 To raise a note by an octave, add a high quote @code{'} (apostrophe) to
423 the note name, to lower a note one octave, add a ``low quote'' @code{,}
424 (a comma). Middle C is @code{c'}:
428 c'4 c'' c''' \clef bass c c,
432 \property Score.timing = ##f
433 \property Staff.TimeSignature = \turnOff
434 c'4 c'' c''' \clef bass c c,
439 A tie is created by adding a tilde ``@code{~}'' to the first note
442 @lilypond[fragment,verbatim]
447 A tie is different from a slur. A tie simply makes the first note
448 sound longer, and can only be used on pairs of notes with the same
449 pitch. Slurs indicate the articulations of notes, and can be used on
450 larger groups of notes. Slurs and ties are also nested in practice:
451 @lilypond[fragment, relative=1]
452 c2-~-( c8 fis fis4 ~ fis2 g2-)
456 The key signature is set with the command ``@code{\key}''. One
457 caution word of caution: you need to specify whether the key is
458 @code{\major} or @code{\minor}.
468 \property Staff.TimeSignature = \turnOff
477 @c bit on the long/complex/scary taste
478 @c cheating a bit: two lines makes for a friendlier look
479 This example shows notes, ties, octave marks, and rests in action.
488 r4 r8 d''8 cis''4 e''
490 cis''4 cis''8 cis'' bis'4 d''8 cis''-~
503 r4 r8 d''8 cis''4 e''
505 cis''4 cis''8 cis'' bis'4 d''8 cis''-~
508 \paper { linewidth = 50*\staffspace }
514 There are some interesting points to note in this example.
515 Accidentals (sharps and flats) do not have to be marked explicitly: you
516 just enter the note name, and LilyPond determines whether or not to
517 print an accidental. Bar lines and beams are drawn automatically.
518 LilyPond calculates line breaks for you; it does not matter where you
519 make new lines in the source file. Finally, the order of time, key and
520 clef changes is not relevant: lilypond will use standard notation
521 conventions for ordering these items.
523 The example also indicates that a piece of music written in a high
524 register needs lots of quotes. This makes the input less readable,
525 and is also a potential source of errors.
527 The solution is to use ``relative octave'' mode. In practice, this is
528 the most convenient way to copy existing music. To use relative mode,
529 add @code{\relative} before the piece of music. You must also give a
530 note from which relative starts, in this case @code{c''}. If you do not
531 use octavation quotes (ie do not add ' or , after a note), relative mode
532 chooses the note that is closest to the previous one. Since most music
533 has small intervals, you can write quite a lot in relative mode without
534 using octavation quotes.
535 @c do not use commas or quotes in this sentence
536 For example: @code{c f} goes up; @code{c g} goes down:
546 \property Score.timing = ##f
547 \property Staff.TimeSignature = \turnOff
556 @c needed better, maybe even redundant explanation
557 @c added another example below.
558 @c grappig: Pa vond het heel logies, en slim toen-i eenmaal begreep.
559 @c in eerste instantie drong het `relative' niet door zonder extra uitleg.
560 You can make larger intervals by adding octavation quotes. Note that
561 quotes or commas do not determine the absolute height of a note;
562 the height of a note is relative to the previous one.
563 @c do not use commas or quotes in this sentence
564 For example: @code{c f,} goes down; @code{f, f} are both the same;
565 @code{c' c} are the same; and @code{c g'} goes up:
575 \property Score.timing = ##f
576 \property Staff.TimeSignature = \turnOff
585 Here's an example of the difference between relative mode and
586 ``normal'' (non-relative) mode:
597 \property Score.timing = ##f
598 \property Staff.TimeSignature = \turnOff
614 \property Score.timing = ##f
615 \property Staff.TimeSignature = \turnOff
624 The following table summarizes the syntax in this section.
626 @c Is it possible to avoid page breaks directly after the
629 @multitable @columnfractions .3 .3 .4
638 @lilypond[relative 1, notime]
639 \property Staff.Clef = \turnOff
646 @lilypond[relative 1, notime]
647 \property Score.timing = ##f
648 \property Staff.autoBeaming = ##f
649 \property Staff.Clef = \turnOff
653 @item @code{\key es \major }
662 @item @var{note}@code{'}
665 @lilypond[relative 1, notime]
666 \property Score.timing = ##f
667 \property Staff.autoBeaming = ##f
668 \property Staff.Clef = \turnOff
672 @item @var{note}@code{,}
675 @lilypond[relative 1, notime]
676 \property Score.timing = ##f
677 \property Staff.autoBeaming = ##f
678 \property Staff.Clef = \turnOff
684 A slur is drawn across many notes, and indicates bound articulation
685 (legato). The starting note and ending note are marked with a
686 ``@code{(}'' and a ``@code{)}'' respectively:
689 @lilypond[fragment,relative 1, verbatim]
690 d4-( c16-)-( cis d e c cis d e-)-( d4-)
695 If you need two slurs at the same time (one for articulation, one for
696 phrasing), you can also make a phrasing slur with @code{\(} and
701 @c fragment of 1st hrn in Adams' The Chairman Dances, with creative
702 @c chromatic thing pasted in front. (admittedly the original does not
703 @c have a phrasing slur. The problem is that we do not want the slur
704 @c and the Phrasing slur to collide. We are trying to make a good
708 @lilypond[fragment,relative 1, verbatim]
709 a8-(-\( ais b c-) cis2 b'2 a4 cis, c-\)
714 Beams are drawn automatically, but if you do not like the choices, you
715 can enter beams by hand. Mark the first note to be beamed with
716 @code{[} and the last one with @code{]}:
718 @lilypond[fragment,relative 1, verbatim]
719 a8-[ ais-] d-[ es r d-]
724 To print more than one staff, each piece of music that makes up a staff
725 is marked by adding @code{\context Staff} before it. These
726 @code{Staff}'s are then grouped inside @code{<} and @code{>}, as is
730 @lilypond[fragment,verbatim]
732 \context Staff = staffA { \clef violin c'' }
733 \context Staff = staffB { \clef bass c }
738 In this example, @code{staffA} and @code{staffB} are names that are
739 given to the staves. It does not matter what names you give, as long
740 as each staff has a different name. If you give them the same name,
741 LilyPond will assume that you only want one staff, and will but both
742 pieces of music on the same staff.
747 We can now typeset a melody with two staves:
750 @lilypond[verbatim,singleline]
753 < \context Staff = staffA {
757 e2-( d4 c2 b4 a8-[ a-]
758 b-[ b-] g-[ g-] a2.-) }
760 \context Staff = staffB {
771 Notice that the time signature is specified in one melody staff only
772 (the top staff), but is printed on both. LilyPond knows that the time
773 signature should be the same for all staves.
777 Common accents can be added to a note using @code{-.}, @code{--}, @code{->}:
779 @lilypond[verbatim,relative 1]
785 Dynamic signs are made by adding the markings to the note:
787 @lilypond[verbatim,relative 1]
793 Crescendi and decrescendi are started with the commands @code{\<} and
794 @code{\>}. The command @code{\!} finishes a crescendo on the note it
797 @lilypond[verbatim,relative 1]
798 c2-\< c2-\!-\ff c2-\> c2-\!
803 Chords can be made by surrounding notes with @code{<<} and @code{>>}:
805 @lilypond[relative 0, fragment,verbatim]
806 r4 <<c e g>>4 <<c f a>>8
812 You can combine beams and ties with chords. Beam and tie markings
813 must be placed outside the chord markers:
815 @lilypond[relative 0, fragment,verbatim]
816 r4 <<c e g>>8-[ <<c f a>>-]-~ <<c f a>>
821 When you want to combine chords with slurs and dynamics, technical
822 detail crops up: you have type these commands next to the notes, which
823 means that they have to be inside the @code{< >}. Do Not get confused
824 by the chord @code{< >} and the dynamic @code{\< \>}!
829 r4 <<c e g>>8-\>-( <<c e g>> <<c e g>> <<c f a>>8-\!-\)
831 @lilypond[relative 0, fragment]
833 r4 <<c e g>>8-\>-( <<c e g>> <<c e g>> <<c f a>>8-\!-\)
841 @multitable @columnfractions .3 .3 .4
851 @lilypond[fragment, relative 1]
852 \property Score.timing = ##f
853 \property Staff.TimeSignature = \turnOff
854 \property Staff.autoBeaming = ##f
855 \property Staff.Clef = \turnOff
863 @lilypond[fragment, relative 1]
864 \property Score.timing = ##f
865 \property Staff.TimeSignature = \turnOff
866 \property Staff.autoBeaming = ##f
867 \property Staff.Clef = \turnOff
875 @lilypond[fragment, relative 1]
876 \property Score.timing = ##f
877 \property Staff.TimeSignature = \turnOff
878 \property Staff.autoBeaming = ##f
879 \property Staff.Clef = \turnOff
884 @item @code{< \context Staff ... >}
888 < \context Staff = SA { c'1 }
889 \context Staff = SB { c'1 } >
896 @lilypond[fragment, relative 1]
897 \property Staff.TimeSignature = \turnOff
898 \property Staff.Clef = \turnOff
903 @item @code{-\mf -\sfz}
906 @lilypond[fragment, relative 1]
907 \property Staff.TimeSignature = \turnOff
908 \property Staff.Clef = \turnOff
916 @lilypond[fragment, relative 1]
917 \property Score.timing = ##f
918 \property Staff.TimeSignature = \turnOff
919 \property Staff.autoBeaming = ##f
920 \property Staff.Clef = \turnOff
927 @lilypond[fragment, relative 1]
928 \property Score.timing = ##f
929 \property Staff.TimeSignature = \turnOff
930 \property Staff.autoBeaming = ##f
931 \property Staff.Clef = \turnOff
939 @lilypond[fragment, relative 1]
945 Now you know the basic ingredients of a music file, so this is the
946 right moment to experiment and try your at hand typing some simple
949 When you are comfortable with the basics, you might want to read the
950 rest of this chapter. It continues in tutorial-style, but it is much
951 more in-depth, dealing with more advanced topics such as lyrics,
952 chords, orchestral scores and parts, fine tuning of output, polyphonic
953 music, and integrating text and music.
957 @node Printing lyrics
958 @section Printing lyrics
961 In this section we shall explain how to typeset the following
962 fragment of The Free Software Song:
964 @lilypond[singleline]
965 \score { \notes { \addlyrics
966 \notes \relative c' {
968 d'2 c4 b16-( a g a b a b c-) a2
969 b2 c4 b8-( a16 g a4-) g2 }
970 \context Lyrics \lyrics {
972 share the soft -- ware; }
974 \paper { raggedright = ##t }
980 @cindex @code{\lyrics}
983 Lyrics are a form of music. To get them printed, you must do two
984 things: indicate that lyrics are entered with @code{\lyrics}, and
985 indicate that this type of music must be interpreted as texts (and not
986 notes). This is done with @code{\context Lyrics}.
988 You can enter lyrics in a special input mode of LilyPond. This mode is
989 called Lyrics mode, and it is introduced by the keyword
990 @code{\lyrics}. In this mode you can enter lyrics, with punctuation
991 and accents without any hassle. Syllables are entered like notes, but
992 with pitches replaced by text. For example,
996 enters four syllables. Spaces can be introduced into a lyric either
997 by using quotes: @code{"He could" not} or by using an underscore
998 without quotes: @code{He_could not}.
1000 These are the lyrics for the free software song:
1005 share the soft -- ware; @}
1008 Extender lines are entered as @code{__}. This will create an
1009 extender, which is a line that extends over the entire duration of the
1010 lyric. This line will run all the way to the start of the next lyric,
1011 so you may want to shorten it by using a blank lyric (using @code{_}).
1014 You can use ordinary hyphens at the end of a syllable, i.e.
1018 but then the hyphen will be attached to the end of the first syllable.
1020 If you want them centered between syllables you can use the special
1021 `@code{-}@code{-}' lyric as a separate word between syllables. The
1022 hyphen will have variable length depending on the space between
1023 the syllables and it will be centered between the syllables.
1025 Normally the notes that you enter are transformed into note heads.
1026 Note heads alone make no sense. They need surrounding information: a
1027 key signature, a clef, staff lines, etc. They need @emph{context}.
1028 In LilyPond, these symbols are created by objects called
1029 `interpretation contexts'. Interpretation contexts exist for
1030 generating notation (`notation context') and for generating sound
1031 (`performance context'). These objects only exist while LilyPond is
1032 executing. For lyrics, the command
1036 must be used to interpret a set of syllables as lyrics.
1040 @cindex interpretation context
1041 @cindex notation context
1045 The melody and the lyrics can be combined with the @code{\addlyrics}:
1048 \notes \relative c' @dots{}
1049 \context Lyrics \lyrics @dots{}
1052 The lyrics are also music expressions, similar to notes. Each lyric
1053 syllable is put under a note of the melody. The complete file is
1057 \score @{ \notes @{ \addlyrics
1058 \notes \relative c' @{
1060 d'2 c4 b16 ( a g a b a b ) c a2
1061 b2 c4 b8 ( a16 g ) a4 g2 @}
1062 \context Lyrics \lyrics @{
1064 share the soft -- ware; @}
1066 \paper @{ raggedright = ##t @}
1072 @node A melody with chords
1073 @section A melody with chords
1075 In this section we show how to typeset a melody with chord
1076 accompaniment. This file is included in
1077 @inputfileref{input/tutorial,flowing.ly}.
1079 @lilypondfile[verbatim,intertext="the result looks like"]{flowing.ly}
1085 \include "paper16.ly"
1088 Smaller size (suitable for inclusion in a book).
1092 melody = \notes \relative c' @{
1095 The structure of the file will be the same as the previous one: a
1096 @code{\score} block with music in it. To keep things readable, we will
1097 give different names to the different parts of music, and use the names
1098 to construct the music within the score block.
1105 @cindex @code{\partial}
1107 The piece starts with an anacrusis (or ``pickup'') of one eighth.
1113 c4 c8 d [es () d] c4 | f4 f8 g [es() d] c g |
1114 c4 c8 d [es () d] c4 | d4 es8 d c4.
1119 @cindex manual beaming
1120 @cindex automatic beaming, turning off
1121 We use explicit beaming. Since this is a song, we turn automatic
1122 beams off and use explicit beaming where needed.
1129 This ends the definition of @code{melody}.
1138 @cindex identifier assignment
1139 @cindex syllables, entering
1140 This defines the lyrics, similar to what we have seen before.
1145 accompaniment =\chords @{
1149 @cindex mode, chords
1150 We will put chords over the music. To enter them, we use a special mode
1151 analogous to @code{\lyrics} and @code{\notes} mode, where you can give
1152 the names of the chords you want instead of listing the notes
1153 comprising the chord.
1160 There is no accompaniment during the anacrusis.
1169 @cindex chord modifier
1170 @cindex modifier, chord
1171 This is a c minor chord, lasting for a half note. Chords are entered using
1172 the tonic. Notes can be changed to create different chords. In this case,
1173 a lowered third is used (making a C major chord into a C minor chord).
1174 The code for this is @code{3-}.
1180 Similarly, @code{7} modifies (adds) a seventh, which is small by
1181 default to create the @code{f a c es} chord. Multiple modifiers must be
1189 Some modifiers have predefined names, e.g. @code{min} is the same as
1190 @code{3-}, so @code{d-min} is a minor @code{d} chord.
1194 c2:min f:min7 g:7^3.5 c:min @}
1197 @cindex named modifier
1199 A named modifier @code{min} and a normal modifier @code{7} do not have
1200 to be separated by a dot. Tones from a chord are removed with chord
1201 subtractions. Subtractions are started with a caret, and they are
1202 also separated by dots. In this example, @code{g:7^3.5} produces a
1203 minor seventh (a G7 chord without the third or the fifth). The
1204 brace ends the sequential music.
1212 We assemble the music in the @code{\score} block. Melody, lyrics and
1213 accompaniment have to sound at the same time, so they should be
1214 @code{\simultaneous}.
1215 @cindex @code{\simultaneous}
1217 To print chords as chords names, they have to be interpreted as
1218 such. This is done with the following command: The following command
1219 explicitly creates an interpretation context of @code{ChordNames} type
1220 to interpret the music @code{\accompaniment}.
1223 \context ChordNames \accompaniment
1234 We place the melody on a staff.
1238 \property Staff.autoBeaming = ##f
1242 @cindex context variables
1243 @cindex setting context variables
1244 An interpretation context has variables that tune its behavior. These
1245 variables are also called @emph{properties}. The @code{autoBeaming}
1246 variable in a @code{Staff} controls whether 8th and shorter notes are
1247 beamed automatically. Setting the variable to @code{##f}, which is the
1248 boolean value @var{false}, turns it off.
1258 Finally, we put the melody on the current staff. Note that the
1259 @code{\property} directives and @code{\melody} are grouped in sequential
1260 music, so the property settings are done before the melody is
1266 \midi @{ \tempo 4=72@}
1269 MIDI (Musical Instrument Digital Interface) is a standard for
1270 connecting and recording digital instruments. A MIDI file is like a
1271 tape recording of a MIDI instrument. The @code{\midi} block makes the
1272 music go to a MIDI file, so you can listen to the music you entered.
1273 It is great for checking the music. Whenever you hear something
1274 weird, you probably hear a typing error.
1276 @code{\midi} is similar to @code{\paper @{ @}}, since it also
1277 specifies an output method. You can specify the tempo using the
1278 @code{\tempo} command, in this case the tempo of quarter notes is set
1279 to 72 beats per minute.
1283 \paper @{ linewidth = 10.0\cm @}
1286 We also want notation output. The linewidth is short so that the piece
1287 will be set in two lines.
1290 @section More stanzas
1295 If you have multiple stanzas printed underneath each other, the vertical
1296 groups of syllables should be aligned around punctuation. LilyPond can
1297 do this if you tell it which lyric lines belong to which melody.
1298 We show how you can do this by showing how you could print a frivolous
1299 fragment of a fictional Sesame Street duet.
1301 @lilypond[singleline,verbatim]
1304 \notes \relative c'' \context Voice = duet { \time 3/4
1306 \lyrics \context Lyrics <
1307 \context LyricsVoice = "duet-1" {
1308 \property LyricsVoice . stanza = "Bert"
1309 Hi, my name is bert. }
1310 \context LyricsVoice = "duet-2" {
1311 \property LyricsVoice . stanza = "Ernie"
1312 Ooooo, ch\'e -- ri, je t'aime. }
1317 To this end, give the Voice context an identity, and set the
1318 LyricsVoice to a name starting with that identity followed by a dash.
1319 In the following example, the Voice identity is @code{duet},
1321 \context Voice = duet @{
1326 identities of the LyricsVoices are @code{duet-1} and @code{duet-2}.
1328 \context LyricsVoice = "duet-1" @{
1329 Hi, my name is bert. @}
1330 \context LyricsVoice = "duet-2" @{
1331 Ooooo, ch\'e -- ri, je t'aime. @}
1333 The convention for naming @code{LyricsVoice} and @code{Voice} must
1334 also be used to get melismata on rests correct.
1337 We add the names of the singers. This can be done by setting
1338 @code{LyricsVoice.Stanza} (for the first system) and
1339 @code{LyricsVoice.stz} for the following systems. Note that you must
1340 surround dots with spaces in @code{\lyrics} mode.
1343 \property LyricsVoice . stanza = "Bert"
1345 \property LyricsVoice . stanza = "Ernie"
1349 @node More movements
1350 @section More movements
1352 The program @code{lilypond} only produces sheet music. Titles,
1353 subtitles, and the composer's name are created by a separate program,
1354 called use @code{ly2dvi}. @code{ly2dvi} creates the titles, then
1355 calls @code{lilypond} to format the sheet music. In this section, we
1356 show you how to create titles like this:
1358 @center @strong{Two miniatures}
1368 \paper { raggedright = ##t }
1380 \paper { linewidth = -1.0 }
1384 For example, consider the following file (@file{miniatures.ly})
1389 title = "Two miniatures"
1390 composer = "F. Bar Baz"
1391 tagline = "small is beautiful" @}
1393 \paper @{ raggedright = ##t @}
1397 Mental note: discuss Schenkerian analysis of these key pieces.
1402 \notes @{ c'4 d'4 @}
1408 \notes @{ d'4 c'4 @}
1416 The information for the global titling is in a so-called header block.
1417 The information in this block is not used by LilyPond, but it is
1418 passed into @code{ly2dvi}, which uses this information to print titles
1421 @cindex identifier assignment
1422 the @code{\header} block contains assignments. In each assignment, a
1423 variable is set to a value. The header block for this file looks like
1425 @cindex @code{\header}
1428 title = "Two miniatures"
1429 composer = "F. Bar Baz"
1430 tagline = "small is beautiful"
1434 When you process a file with ly2dvi, a signature line is printed at
1435 the bottom of the last page. Many people find the default (``Lily was
1436 here'' with a version number) too droll. If that is the case, you can
1437 change @code{tagline} in the @code{\header}, as shown above.
1439 @cindex Lily was here
1440 @cindex signature line
1446 raggedright = ##t @}
1449 A paper block at top level (i.e. not in a @code{\score} block) sets
1450 the default page layout. The following @code{\score} blocks do not
1451 have @code{\paper} sections so the settings of this block are used.
1453 When @code{raggedright} is set, the spacing is set to natural length:
1454 a short phrase takes up little space, a longer phrase takes more
1455 space, all on the same line.
1460 Mental note: discuss Schenkerian analysis of these key pieces.
1465 Mental notes to yourself can be put into comments. There are two types
1466 of comments. Line comments are introduced by @code{%}, and block
1467 comments are delimited by @code{%@{} and @code{%@}}.
1472 \notes @{ c'4 d'4 @}
1475 In previous examples, most notes were specified in relative octaves
1476 (i.e. each note was put in the octave that is closest to its preceding
1477 note). This is convenient when copying existing music: you have to do
1478 less typing, and errors are easily spotted.
1480 There is also absolute octave specification, which you get when you do
1481 not include @code{\relative} in your input file. In this input mode,
1482 the middle C is denoted by @code{c'}. Going down, you get @code{c}
1483 @code{c,} @code{c,,} etc. Going up, you get @code{c''} @code{c'''}
1484 etc. Absolute octaves are convenient when you write LilyPond input
1485 directly, either by hand (i.e. composing) or by computer.
1492 The @code{\header} is normally at the top of the file, where it sets
1493 values for the rest of the file. If you want to typeset different
1494 pieces from one file (for example, if there are multiple movements, or
1495 if you are making an exercise book), you can put different
1496 @code{\score} blocks into the input file. @code{ly2dvi} will assemble
1497 all LilyPond output files into a one document. The contents of
1498 @code{\header} blocks specified within each score is used for the
1499 title of that movement.
1505 For example, the Opus number is put at the right, and the "piece" string
1506 will be at the left.
1513 title = "Two miniatures"
1514 composer = "F. Bar Baz"
1515 tagline = "small is beautiful" @}
1517 \paper @{ raggedright = ##t @}
1520 \notes @{ c'4 d'4 @}
1526 \notes @{ d'4 c'4 @}
1536 scoreA = \score @{ \deelA @}
1537 scoreB = \score @{ \deelA @}
1539 % \score @{ \scoreA @}
1540 \score @{ \scoreB @}
1548 Lilypond and its language are still under development, and
1549 occasionally details of the syntax are changed. The @code{version}
1550 fragment indicates which version of lilypond the input file was written
1551 for. When you compile this file, the version number will be checked
1552 and you will get a warning when the file is too old. This version
1553 number is also used by the @code{convert-ly} program (See
1554 @ref{Invoking convert-ly}), which can used to update the file to the
1555 latest lily version.
1558 @node A piano excerpt
1559 @section A piano excerpt
1561 Our eighth subject is a piece of piano music. The fragment in the
1562 input file is a piano reduction of the G major Sinfonia by Giovanni
1563 Battista Sammartini, composed around 1740. It's in the source
1564 package under the name @inputfileref{input/tutorial,sammartini.ly}.
1566 @lilypondfile[smallverbatim]{sammartini.ly}
1568 As you can see, this example features multiple voices on one staff. To
1569 make room for those voices, their notes should be stemmed in opposite
1576 viola = \notes \relative c' \context Voice = viola @{
1578 In this example you see multiple parts on a staff. Each part is
1579 associated with one notation context. This notation context handles
1580 stems and dynamics (among other things). The type name of this
1581 context is @code{Voice}. For each part we have to make sure that
1582 there is precisely one @code{Voice} context, so we give it a unique
1583 name (`@code{viola}').
1587 <<c g' c>>4-\arpeggio
1589 The delimiters @code{<<} and @code{>>} enclose the pitches of a chord.
1590 @code{\arpeggio} typesets an arpeggio sign (a wavy vertical line)
1603 Relative octaves work a little differently with chords. The starting
1604 point for the note following a chord is the first note of the chord. So
1605 the @code{g} gets an octave up quote: it is a fifth above the starting
1606 note of the previous chord (the central C).
1612 @code{s} is a spacer rest. It does not print anything, but it does have
1613 the duration of a rest. It is useful for filling up voices that
1614 temporarily do not play. In this case, the viola does not come until one
1615 and a half measure later.
1619 oboes = \notes \relative c'' \context Voice = oboe @{
1621 Now comes a part for two oboes. They play homophonically, so we
1622 print the notes as one voice that makes chords. Again, we insure that
1623 these notes are indeed processed by precisely one context with
1627 s4 g8. b,16 c8 r <<e' g>>8. <<f a>>16
1630 The oboes should have stems up to keep them from interfering with
1631 the staff-jumping bass figure. To do that, we use @code{\voiceOne}.
1635 \grace <<e g>>-( <<d f>>4-) <<c e>>2
1637 @cindex @code{\grace}
1640 @code{\grace} introduces grace notes. It takes one argument, in this
1641 case a chord. A slur is introduced starting from the @code{\grace}
1642 ending on the following chord.
1650 Tuplets are made with the @code{\times} keyword. It takes two
1651 arguments: a fraction and a piece of music. The duration of the piece
1652 of music is multiplied by the fraction. Triplets make notes occupy 2/3
1653 of their notated duration, so in this case the fraction is 2/3.
1656 @{ <<d f>>8 <<e g>> <<f a>> @}
1658 The piece of music to be `tripletted' is sequential music containing
1665 At this point, the homophonic music splits into two rhythmically
1666 different parts. We cannot use a sequence of chords to enter this, so
1667 we make a "chord of sequences" to do it. We start with the upper
1668 voice, which continues with upward stems:
1671 @{ \times 2/3 @{ a8 g c @} c2 @}
1678 The easiest way to enter multiple voices is demonstrated
1679 here. Separate the components of the voice (single notes or entire
1680 sequences) with @code{\\} in a simultaneous music expression. The
1681 @code{\\} separators split first voice, second voice, third voice, and
1684 As far as relative mode is concerned, the previous note is the
1685 @code{c'''2} of the upper voice, so we have to go an octave down for
1693 This ends the two-part section.
1696 \grace <<c, e>>8-( <<b d>>8.-\trill <<c e>>16 |
1701 The bass has a little hoom-pah melody to demonstrate parts switching
1702 between staves. Since it is repetitive, we use repeats:
1705 hoomPah = \repeat unfold 8
1707 @cindex unfolded @code{\repeat}
1708 The unfolded repeat prints the notes in its argument as if they were
1709 written out in full eight times.
1712 \notes \transpose c c' @{
1715 @cindex relative mode and transposing
1717 Transposing can be done with @code{\transpose}, which takes two arguments.
1718 The first specifies what central C should be transposed to. The second
1719 is the to-be-transposed music. As you can see, in this case, the
1720 transposition has no effect, as central C stays at central C.
1722 The purpose of this no-op is to protect it from being interpreted as
1723 relative notes. Relative mode cannot be used together with
1724 transposition, so @code{\relative} will leave the contents of
1725 @code{\hoomPah} alone. We can use it without having to worry about
1726 getting the motive in a wrong octave. Conversely, if you want to
1727 transpose a fragment of music entered with @code{\relative}, then you
1728 should make sure that @code{\transpose} comes before @code{\relative}.
1731 @cindex staff switch, manual
1732 @cindex cross staff voice, manual
1733 @cindex @code{\translator}
1736 \translator Staff = down
1739 \translator Staff = up
1743 Voices can switch between staves. Here you see two staff switching
1744 commands. The first one moves to the lower staff, the second one to
1745 the lower one. If you set the stem directions explicitly
1746 (using the identifiers @code{\stemUp} and @code{\stemDown}, the notes
1747 can be beamed together (despite jumping between staffs).
1751 bassvoices = \notes \relative c' @{
1753 \autochange Staff \hoomPah \context Voice
1758 \translator Staff = down
1760 @cindex staff switch
1761 @cindex cross staff voice
1762 We want the remaining part of this melody on the lower staff, so we do a
1763 manual staff switch here.
1772 A special context is needed to get cross staff beaming right. This
1773 context is called @code{PianoStaff}.
1776 \context Staff = bottom < \time 2/2 \clef bass
1778 The bottom staff must have a different clef.
1783 To make some more room on the line, the first (in this case the only)
1784 line is not indented. The line still looks very cramped, but that is due
1785 to the page layout of this document.
1791 * font-size, multi-stanza.
1793 * Simple part combining in a Hymn
1797 @node Fine tuning a piece
1798 @section Fine tuning a piece
1800 In this section we show some ways to fine tune the final output of a
1801 piece. We do so using a single measure of a moderately complex piano
1802 piece: a Brahms intermezzo (opus 119, no. 1). Both fragments (the
1803 tuned and the untuned versions) are in @file{input/tutorial/}.
1805 The code for the untuned example shows us some new things.
1807 @lilypondfile[verbatim]{brahms-original.ly}
1816 @cindex fingering instructions
1819 Fingering indications are entered with @code{-@var{N}}, where
1822 Now that we have the basic piece of music entered, we want to fine
1823 tune it so that we get something that resembles the original printed
1824 edition by Schott/Universal Edition:
1826 @lilypondfile{brahms-tweaked.ly}
1828 @cindex tuning graphical objects
1830 Fine tuning involves overriding the defaults of the printing system.
1831 We do this by setting variables which control how Lilypond prints
1832 symbols. Printed symbols are called graphical objects (often
1833 abbreviated to @emph{grob}). Each object is described by a bunch of
1834 settings. Every setting is a variable: it has a name and a value
1835 which you can change. These values determine the fonts, offsets,
1836 sub-routines to be called on the object, etc. The initial values of
1837 these settings are set in the Scheme file
1838 @file{scm/grob-description.scm}.
1840 @cindex slur attachments
1842 We start with the slur in the upper part, running from F sharp to A. In
1843 the printed edition, this slur runs from stem to stem; in our version,
1844 the slur begins at the note head of the F sharp. The following property
1845 setting forces all slurs to run from stem to stem (not from or to note
1849 \property Voice.Slur \set #'attachment = #'(stem . stem)
1852 More precisely, this command modifies the definition of the @code{Slur}
1853 object in the current @code{Voice}. The variable @code{attachment} is
1854 set to the pair of symbols @code{'(stem . stem)}.
1856 @cindex internal documentation
1857 @cindex finding graphical objects
1858 @cindex graphical object descriptions
1860 This command fixes one particular problem with a slur. The rest of
1861 this section explains how to figure out which properties to tune for
1862 your own scores. To discover this, you must have a copy of the
1863 internals document. This is a set of HTML pages which should be
1864 included if you installed a binary distribution. [TODO: revise for
1865 new site.] These HTML pages are also available on the web: go to the
1866 lilypond website, click ``Documentation: Index'' on the side bar, look
1867 in the ``Information for uses'' section, and click on ``Documentation
1870 You might want to bookmark either the HTML files on your disk, or the
1871 one on the web (the HTML on your hard drive will load much faster than
1872 the ones on the web!). One word of caution: the internals
1873 documentation is generated from the definitions that the program uses.
1874 Hence, the internals documentation is strongly tied to the version you
1875 use. Before you proceed, make sure that the program and documentation
1876 have matching version numbers.
1878 @c TODO: the quote is incorrect, although that shouldn't be a big
1879 @c problem for the reader.
1880 Suppose that you wanted to tune the behavior of the slur. The first
1881 step is to get some general information on slurs in lilypond. Turn to
1882 the index, and look up ``slur''. The section on slurs says
1884 The grob for this object is @internalsref{Slur}, generally in
1885 @internalsref{Voice} context.
1888 So the graphical object for this object is called @code{Slur}, and
1889 slurs are created in the @code{Voice} context. If you are reading
1890 this tutorial in the HTML version, then you can simply click Slur,
1891 otherwise, you should look it up the internal documentation: click
1892 ``grob overview'' and select ``slur'' (the list is alphabetical).
1894 Now you get a list of all the properties that the slur object
1895 supports, along with their default values. Among the properties we
1896 find the @code{attachment} property with its default setting.
1897 The property documentation explains that the following setting will
1898 produce the desired effect:
1900 \property Voice.Slur \set #'attachment = #'(stem . stem)
1903 @c this is a long section, and adding an extra space here helps to
1904 @c break it into smaller subsections and thus is easier to understand.
1907 Next we want to move the fingering `3'. In the printed edition it is
1908 not above the stem, but a little lower and slightly left of the stem.
1909 From the user manual we find that the associated graphical object is
1910 called @code{Fingering}, but how do we know if we should use
1911 @code{Voice} or @code{Staff}? In many cases, @code{Voice} is a safe
1912 bet, but you can also deduce this information from the internals
1913 documentation: if you visit the documentation of @code{Fingering}, you
1916 Fingering grobs are created by: Fingering_engraver
1919 Clicking @code{Fingering_engraver} will show you the documentation of
1920 the module responsible for interpreting the fingering instructions and
1921 translating them to a @code{Fingering} object. Such a module is called
1922 an @emph{engraver}. The documentation of the @code{Fingering_engraver}
1925 Fingering_engraver is part of contexts: Voice and TabVoice
1927 so tuning the settings for Fingering should be done using either
1929 \property Voice.Fingering \set @dots{}
1933 \property TabVoice.Fingering \set @dots{}
1936 Since the @code{TabVoice} is only used for tab notation, we see that
1937 the first guess @code{Voice} was indeed correct.
1939 @cindex setting object properties
1940 @cindex @code{extra-offset}
1942 For shifting the fingering, we use the property @code{extra-offset}.
1943 The following command manually adds an offset to the object. We move
1944 it a little to the left, and 1.8 staff space downwards.
1946 \once \property Voice.Fingering \set #'extra-offset = #'(-0.3 . -1.8)
1948 The @code{extra-offset} is a low-level feature: it moves around
1949 objects in the printout; the formatting engine is completely oblivious
1950 to these offsets. The unit of these offsets are staff-spaces. The
1951 first number controls left-right movement; a positive number will move
1952 the object to the right. The second number controls up-down movement;
1953 a positive number will move it higher.
1954 We only want to offset a single object, so this statement is adorned
1957 @cindex property types
1958 @cindex translator properties
1959 @cindex grob properties
1960 @cindex music properties
1963 There are three different types of variables in LilyPond, something
1964 which can be confusing at first (and for some people it stays
1965 confusing). Variables such as @code{extra-offset} and
1966 @code{attachment} are called grob properties. They are not the same
1967 as translator properties, like @code{autoBeaming}. Finally, music
1968 expressions are internally stored using properties (so-called music
1969 properties). You will encounter music properties if you run Scheme
1970 functions on music using @code{\apply}.
1972 The second fingering instruction should be moved up a little to avoid
1973 a collision with the slur. This could be achieved with
1974 @code{extra-offset}, but in this case, a simpler mechanism also
1975 works. We insert an empty text between the 5 and the note. The empty
1976 text pushes the fingering instruction away:
1978 a-)^" "^\markup @{ \finger "5" @}
1981 A fingering instruction, which would be entered as @code{^5}, is put
1982 as close to the notes as possible, closer than the space entered to
1983 push away the 5. Hence, the 5 is entered as a normal text, with the
1984 formatting of fingering instructions.
1988 Normally one would specify all dynamics in the same voice, so that
1989 dynamics (such as @b{f} and @b{p}) will be aligned with hairpins. But
1990 in this case, we do not want the decrescendo to be aligned with the
1991 piano sign. We achieve this by putting the dynamic markings in different
1992 voices. The crescendo should be above the upper staff. This can be
1993 forced by using the precooked command
1998 However, if you do that the decrescendo will be too close to the upper
1999 voice and collide with the stems. Looking at the manual for dynamics,
2000 we notice that ``Vertical positioning of these symbols is handled by
2001 the @internalsref{DynamicLineSpanner} grob.''. If we turn to the
2002 documentation of @code{DynamicLineSpanner}, we find that
2003 @code{DynamicLineSpanner} supports several so-called `interfaces'.
2004 This object not only puts objects next to the staff
2005 (@code{side-position-interface}), but it also groups dynamic objects
2006 (@code{axis-group-interface}), is considered a dynamic sign itself
2007 (@code{dynamic-interface}), and is an spanning object
2008 (@code{spanner-interface}). It also has the standard
2009 @code{grob-interface} with all the variables that come with it.
2011 For the moment we are interested in side positioning:
2013 side-position-interface
2015 Position a victim object (this one) next to other objects (the
2016 support). In this case, the direction signifies where to put the
2017 victim object relative to the support (left or right, up or down?)
2019 Between the object and its support (in this case, the descending
2020 notes), there should be more space. This space is controlled by
2021 @code{padding}, so we increase it.
2023 \property Voice.DynamicLineSpanner \override #'padding = #5.0
2026 This command resembles the one for setting slur attachments, but
2027 subtly differs in its details. Grob properties can be manipulated
2028 with two commands: @code{\override} extends the definition of a grob
2029 with one setting, and @code{\revert} releases this setting. This has
2030 a theoretical appeal: the operations are simple and symmetric. For
2031 practical use, it can be cumbersome. The commands act like
2032 parentheses: you should carefully balance the use of @code{\override}
2033 and @code{\revert}. The @code{\set} command is more friendly: it
2034 first does a @code{\revert} followed by @code{\override}.
2038 Brahms uses music notation is a slightly unorthodox way. Ties
2039 usually happen only within one voice. In this piece, the composer
2040 gladly produces ties that jump voices. We deal with this by faking
2041 these ties: whenever we need such a tie, we insert a notehead in a
2042 different voice, and blank the stem. This is done in the following
2045 @cindex transparent objects
2046 @cindex removing objects
2047 @cindex invisible objects
2049 \property Voice.Stem \set #'transparent = ##t
2052 Blanking the stem should be done for only one object. One of the ways
2053 to achieve that, is by setting the property before a note. Reverting
2054 it afterwards is tedious, so for setting a property only once, we have
2055 the syntax @code{\once}: it reverts the property directly before
2056 proceeding to the next step in time.
2058 The @code{\once} keyword is added to @code{\property}.
2061 Finally, the last tie is forced up using @code{\tieUp}.
2065 Here's the complete ``fine tuned'' version, which includes all the
2066 modifications we discussed in this section:
2068 @lilypondfile[verbatim]{brahms-tweaked.ly}
2071 @node An orchestral score
2072 @section An orchestral score
2076 * Extracting an individual part::
2080 Our next two examples demonstrate one way to create an orchestral score
2081 in LilyPond. When typesetting a piece for several instruments, you'll
2082 want to create a full score (for the conductor) along with several
2083 individual parts (for the players).
2085 We will declare the music for each instrument individually, giving
2086 the music of each instrument its own name. These pieces of music are
2087 then combined in different @code{\score} blocks to produce different
2088 combinations of instruments (for example, one @code{\score} block may
2089 only include the cello part; another @code{\score} block may be for
2090 all the strings, and yet another @code{\score} block may be for all
2093 This orchestral score example consists of three input files. In the
2094 first file, @file{os-music.ly}, we define the music for all
2095 instruments. This file will be used for producing the score and the
2096 separate parts, but the file does not produce any sheet music itself.
2097 Other files reference it by stating @code{\include "os-music.ly"}.
2102 title = "Zo, goed lieverd?"
2103 subtitle = "How's, this babe?"
2112 Key = \notes \key as \major
2113 flautoI = \notes\relative c'' @{
2115 bes as bes as bes as bes as
2117 flautoII = \notes\relative c'' @{
2118 as8 bes as bes R1 d4 ~ d
2120 tromboI = \notes\relative c'' @{
2121 c4. c8 c8 c4. es4 r as, r
2123 tromboII = \notes\relative c'' @{
2124 as4. as8 as8 as4. R1*1/2 as4 es'
2126 timpani = \notes\relative c, @{
2127 \times 2/3 @{ f4 f f @}
2128 \times 4/5 @{ as8 as as as as @}
2131 corno = \notes\relative c' @{
2132 bes4 d f, bes d f, bes d
2136 We will not examine this example line by line, since you already know
2137 most of it. We'll examine a few lines which contain new elements.
2148 This declares settings to be used globally. The @code{\skip} command
2149 produces no output, but moves forward in time: in this case, the
2150 duration of a half note (@code{2}), and that four times (@code{*4}).
2151 This brings us to the end of the piece, and we can set the end bar.
2152 You can use @code{s} as a shortcut for @code{\skip} (the last line of
2153 this section would be @code{s2*4 \bar"|."}).
2157 Key = \notes \key as \major
2159 This declares the key signature of the piece and assign it to the
2160 identifier @var{Key}. Later on we will use @code{\Key} for all staves
2161 except those for transposing instruments.
2163 @node The full score
2164 @subsection The full score
2167 The second file, @inputfileref{input/tutorial,os-score.ly}, reads the
2168 definitions of the first (@inputfileref{input/tutorial,os-music.ly}), and
2169 defines the @code{\score} block for the full conductor's score.
2174 \include "os-music.ly"
2175 \include "paper13.ly"
2177 textFlat = \markup @{\smaller \musicglyph #"accidentals--1"@}
2181 \property Score.BarNumber \override #'padding = #3
2182 \context StaffGroup = woodwind <
2183 \context Staff = flauti <
2184 \property Staff.midiInstrument = #"flute"
2185 \property Staff.instrument = "2 Flauti"
2186 \property Staff.instr = "Fl."
2188 \context Voice=one @{ \voiceOne \flautoI @}
2189 \context Voice=two @{ \voiceTwo \flautoII @}
2192 \context StaffGroup = timpani <
2193 \context Staff = timpani <
2194 \property Staff.midiInstrument = #"timpani"
2195 \property Staff.instrument = \markup @{ \column << "Timpani" "(C-G)" >> @}
2196 \property Staff.instr = #"Timp."
2202 \context StaffGroup = brass <
2203 \context Staff = trombe <
2204 \property Staff.midiInstrument = #"trumpet"
2205 \property Staff.instrument = \markup @{ \column << "2 Trombe" "(C)" >> @}
2206 \property Staff.instr = \markup@{ \column << "Tbe." "(C)">> @}
2208 \context Voice=one \partcombine Voice
2209 \context Thread=one \tromboI
2210 \context Thread=two \tromboII
2212 \context Staff = corni <
2213 \property Staff.midiInstrument = #"french horn"
2214 \property Staff.instrument
2215 = \markup @{ \column << "Corno" @{ "(E" \textFlat ")" @} >> @}
2216 \property Staff.instr =
2217 \markup @{ \column << "Cor." @{ "(E" \textFlat ")" @} >> @}
2218 \property Staff.transposing = #3
2219 \notes \key bes \major
2220 \context Voice=one \corno
2225 indent = 15 * \staffspace
2226 linewidth = 60 * \staffspace
2227 textheight = 90 * \staffspace
2230 \consists "Multi_measure_rest_engraver"
2233 \HaraKiriStaffContext
2234 \remove "Multi_measure_rest_engraver"
2243 @center @strong{Zo, goed lieverd?}
2245 @center How's, this babe?
2253 @lilypondfile{os-score.ly}
2257 \include "os-music.ly"
2259 First we need to include the music definitions we made in
2264 [TODO: mention in a more relevant place]
2268 #(ly:set-point-and-click 'line-column)
2271 This piece of Scheme code executes the function
2272 @code{ly:set-point-and-click} with the argument
2273 @code{line-column}. Editing input files can be complicated if you are
2274 working with large files: if you are digitizing existing music, you have
2275 to synchronize the .ly file, the sheet music on your lap and the sheet
2276 music on the screen. The point-and-click mechanism makes it easy to
2277 find the origin of an error in the LY file: when you view the file with
2278 Xdvi and click on a note, your editor will jump to the spot where that
2279 note was entered. For more information, see @ref{Point and click}.
2285 #(define text-flat '((font-relative-size . -2)
2286 (music "accidentals--1")))
2289 To name the transposition of the french horn, we will need a piece of
2290 text with a flat sign. LilyPond has a mechanism for font selection and
2291 kerning called Scheme markup text (See @ref{Text markup}). The flat
2292 sign is taken from the music font, and its name is @code{accidentals--1}
2293 (The natural sign is called @code{accidentals-0}). The default font is
2294 too big for text, so we select a relative size of @code{-2}.
2301 All staves are simultaneous and use the same global settings.
2305 \property Score.BarNumber \override #'padding = #3
2307 LilyPond prints bar numbers at the start of each line, but
2308 unfortunately they end up a bit too close to the staff in this
2309 example. In LilyPond, a bar number is called @var{BarNumber}.
2310 BarNumber objects can be manipulated through their
2311 @var{side-position-interface}. One of the properties of a
2312 @var{side-position-interface} that can be tweaked is @var{padding}:
2313 the amount of extra space that is put between this and other objects.
2314 We set the padding to three staff spaces.
2316 You can find information on all these kind of properties in LilyPond's
2317 automatically generated documentation in
2319 @ref{ (lilypond-internals)lilypond-internals, LilyPond Internals}
2320 or in @ref{Fine tuning a piece}.
2323 the online documentation or in the previous section of the tutorial.
2330 \context StaffGroup = woodwind <
2331 \context Staff = flauti <
2333 A new notation context: the @code{StaffGroup}. @code{StaffGroup} can
2334 hold one or more @code{Staff}'s, and will print a big bracket at the
2335 left of the score. This starts a new staff group for the woodwind
2336 section (just the flutes in this case). Immediately after that, we
2337 start the staff for the two flutes, who also play simultaneously.
2341 \property Staff.midiInstrument = #"flute"
2343 Specify the instrument for MIDI output (see @ref{MIDI instrument
2348 \property Staff.instrument = "2 Flauti"
2349 \property Staff.instr = "Fl."
2351 This defines the instrument names to be printed in the
2352 margin. @code{instrument} specifies the name for the first line
2353 of the score, @code{instr} is used for the rest of the score.
2359 The flutes play in the default key.
2363 \context Voice=one @{ \voiceOne \flautoI @}
2364 \context Voice=two @{ \voiceTwo \flautoII @}
2366 Last come the actual flute parts. Remember that we are still in
2367 simultaneous mode. We name both voices differently, so that LilyPond
2368 will create two Voice contexts. The flute parts are simple, so
2369 we specify manually which voice is which: @code{\voiceOne} forces the
2370 direction of stems, beams, slurs and ties up, @code{\voiceTwo} sets
2378 Close the flutes staff and woodwind staff group.
2382 \property Staff.instrument = #'(lines "Timpani" "(C-G)")
2384 The timpani staff demonstrates a new piece of scheme markup, it sets two
2389 \context Voice=one \partcombine Voice
2390 \context Thread=one \tromboI
2391 \context Thread=two \tromboII
2393 You have seen the notation contexts Staff and Voice, but here's a new
2394 one: Thread. One or more Threads can be part of a Voice. Thread
2395 takes care of note heads and rests; Voice combine note heads onto a
2398 For the trumpets we use the automatic part combiner (see @ref{Automatic
2399 part combining}) to combine the two simultaneous trumpet parts onto the
2400 trumpet staff. Each trumpet gets its own Thread context, which must be
2401 named @code{one} and @code{two}). The part combiner makes these two
2402 threads share a Voice when they are similar, and splits the threads up
2403 when they are different.
2407 \property Staff.instrument = #`(lines "Corno"
2408 (columns "(E" ,text-flat ")"))
2410 The french horn (``Corno'') has the most complex scheme markup name, made
2411 up of two lines of text. The second line has three elements (columns) --
2412 the @code{(E}, the flat sign @code{text-flat} that we defined previously,
2413 and a final @code{")"}. Note that we use a backquote instead of an
2414 ordinary quote at the beginning of the Scheme expression to be able to
2415 access the @code{text-flat} identifier, `unquoting' it with a ``@code{,}''.
2419 \property Staff.transposing = #3
2421 The french horn is to be tuned in E-flat, so we tell the MIDI back-end to
2422 transpose this staff by three steps.
2424 Note how we can choose different tunings for the text input, sheet music
2425 output and, and MIDI output, using @code{\transpose} and the MIDI Staff
2426 property @var{transposing}.
2430 \notes \key bes \major
2432 Since the horn is transposing, it is in a different key.
2436 indent = 15 * \staffspace
2437 linewidth = 55 * \staffspace
2439 We specify a big indent for the first line and a small linewidth for this
2444 Usually LilyPond's default setup of notation contexts (Thread,
2445 Voice, Staff, Staffgroup, Score) is just fine. But in this case we
2446 want a different type of Staff context.
2450 \HaraKiriStaffContext
2454 In orchestral scores it often happens that one instrument only has
2455 rests during one line of the score. @code{HaraKiriStaffContext} can
2456 be used as a regular @code{StaffContext} drop-in and will take care of
2457 the automatic removing of empty staves -- so if the strings are the
2458 only instruments playing for a line, LilyPond will only print the string
2459 parts for that line of the score. This reduces the number of page turns
2460 (and the number of dead trees!) required in a score.
2462 @node Extracting an individual part
2463 @subsection Extracting an individual part
2465 The third file, @file{os-flute-2.ly} also reads the definitions of the
2466 first (@file{os-music.ly}), and defines the @code{\score} block for the
2470 \include "os-music.ly"
2471 \include "paper16.ly"
2475 \property Score.skipBars = ##t
2476 \property Staff.midiInstrument = #"flute"
2482 instrument = "Flauto II"
2485 linewidth = 80 * \staffspace
2486 textheight = 200 * \staffspace
2494 @center @strong{Zo, goed lieverd?}
2496 @center How's, this babe?
2497 @center @emph{Flauto II}
2504 @lilypondfile{os-flute-2.ly}
2507 Because we separated the music definitions from the @code{\score}
2508 instantiations, we can easily define a second score with the music of
2509 the second flute. This is the part for the second flute player. Of
2510 course, we would make separate parts for all individual instruments if
2511 we were preparing the score for an orchestra.
2517 In this individual part the second flute has a whole staff for itself,
2518 so we do not want to force stem or tie directions.
2523 instrument = "Flauto II"
2526 The @code{\header} definitions were also read from @file{os-music.ly},
2527 but we need to set the instrument for this particular score.
2531 \property Score.skipBars = ##t
2533 In the conductor's full score, all bars with rests are printed, but for
2534 the individual parts, we want to print one multimeasure rest instead of
2535 many consecutive empty bars. LilyPond will do this if
2536 @code{Score.skipBars} is set to true (@code{##t}).
2539 @node Integrating text and music
2540 @section Integrating text and music
2543 @cindex La@TeX{}, music in
2544 @cindex HTML, music in
2545 @cindex Texinfo, music in
2547 Sometimes you might want to use music examples in a text that you are
2548 writing (for example a musicological treatise, a songbook, or (like us)
2549 the LilyPond manual). You can make such texts by hand, simply by
2550 importing a PostScript figure into your word processor. However,
2551 there is an automated procedure to reduce the amount of work.
2553 If you use HTML, La@TeX{}, or Texinfo, you can mix text and LilyPond
2554 code. A script called @code{lilypond-book} will extract the music
2555 fragments, run LilyPond on them, and put back the resulting notation.
2556 This program is fully described in @ref{Integrating text and music
2557 with lilypond-book}. Here we show a small example. Since the example
2558 also contains explanatory text, we will not comment it further.
2561 \documentclass[a4paper]@{article@}
2564 In a lilypond-book document, you can freely mix music and text. For
2567 \score @{ \notes \relative c' @{
2568 c2 g'2 \times 2/3 @{ f8 e d @} c'2 g4
2572 Notice that the music line length matches the margin settings of the
2575 If you have no \verb+\score+ block in the fragment,
2576 \texttt@{lilypond-book@} will supply one:
2582 In the example you see here, two things happened: a
2583 \verb+\score+ block was added, and the line width was set to natural
2584 length. You can specify many more options using \LaTeX style options
2587 \begin[verbatim,11pt,singleline,
2588 fragment,relative,intertext="hi there!"]@{lilypond@}
2592 The option \texttt@{verbatim@} prints the LilyPond code in addition to
2593 the graphical score, \texttt@{11pt@} selects the default music size,
2594 \texttt@{fragment@} adds a score block, \texttt@{relative@} uses
2595 relative mode for the fragment, and \texttt@{intertext@} specifies
2596 what to print between the \texttt@{verbatim@} code and the music.
2598 If you want to include large examples into the text, it may be more
2599 convenient to put the example in a separate file:
2601 \lilypondfile[printfilename]@{sammartini.ly@}
2603 The \texttt@{printfilename@} option adds the file name to the output.
2608 Under Unix, you can view the results as follows.
2612 $ lilypond-book --outdir=out/ lilbook.tex
2613 lilypond-book (GNU LilyPond) 1.7.16
2614 Reading `input/tutorial/lilbook.tex'
2615 Reading `input/tutorial/sammartini.ly'
2616 @var{lots of stuff deleted}
2617 Writing `out/lilbook.latex'
2619 $ latex lilbook.latex
2620 @var{lots of stuff deleted}
2624 Notice the @code{outdir} option to lilypond-book. Running lilypond-book
2625 and running latex creates a lot of temporary files, and you would not want
2626 those to clutter up your working directory. Hence, we have them created
2627 in a separate subdirectory.
2629 The result looks more or less like this:
2633 In a lilypond-book document, you can freely mix music and text. For
2637 \notes \relative c' {
2638 c2 g'2 \times 2/3 { f8 e d } c'2 g4
2646 Notice that the music line length matches the margin settings of the
2649 If you have no @code{\score} block in the fragment,
2650 @code{lilypond-book} will supply one:
2656 In the example you see here, a number of things happened: a
2657 @code{\score} block was added, and the line width was set to natural
2658 length. You can specify many more options using La@TeX{} style options
2661 @lilypond[verbatim,11pt,singleline,
2662 fragment,relative,intertext="hi there!"]
2666 The option @code{verbatim} also shows the LilyPond code, @code{11pt} selects
2667 the default music size, @code{fragment} adds a score block,
2668 @code{relative} uses relative mode for the fragment, and
2669 @code{intertext} specifies what to print between the
2670 @code{verbatim} code and the music.
2672 If you include large examples into the text, it may be more convenient
2673 to put the example in a separate file:
2675 @lilypondfile[printfilename]{sammartini.ly}
2677 The @code{printfilename} option adds the file name to the output.
2679 [TODO: include excercises? ]