3 @c TODO: LilyPond LilyPond LilyPond
9 <!--- @@WEB-TITLE@@=Tutorial --->
13 * First steps:: Music language of LilyPond
14 * Running LilyPond:: Printing music
17 * A melody with chords ::
19 * More movements :: Joining separate pieces of music
20 * A piano excerpt:: Piano music
21 * Fine tuning a piece::
22 * An orchestral score:: Conductor's score and individual parts
23 * Integrating text and music:: Integrating text and music
24 * End of tutorial:: The end
27 Operating lilypond is done through text files: to print a piece of
28 music, you enter the music in a file. When you run lilypond on that
29 file, the program produces another file which contains sheet music that
30 you can print or view.
32 This tutorial starts with a small introduction to the LilyPond music
33 language. After this first contact, we will show you how to run
34 LilyPond to produce printed output; you should then be able to create
35 your first sheets of music. The tutorial continues with more and more
41 We start off by showing how very simple music is entered in
42 LilyPond: you get a note simply by typing its note name, from
43 @code{a} through @code{g}. So if you enter
49 then the result looks like this:
52 \property Score.timing = ##f
53 \property Staff.TimeSignature = \turnOff
54 \transpose c'' { c d e f g a b }
59 We will continue with this format: first we show a snippet of input,
60 then the resulting output.
62 The length of a note is specified by adding a number, ``@code{1}'' for a
63 whole note, ``@code{2}'' for a half note, and so on:
70 @c missing clef seems to raise more questions than actual pitch of notes,
71 @c as these are snippets anyway
73 \property Score.timing = ##f
74 \property Staff.TimeSignature = \turnOff
75 \property Staff.autoBeaming = ##f
76 %\property Staff.Clef = \turnOff
77 \transpose c'' { a1 a2 a4 a16 a32 }
83 If you don't specify a duration, the previous one is used:
89 @c missing clef seems to raise more questions than actual pitch of notes,
90 @c as these are snippets anyway
92 \property Score.timing = ##f
93 \property Staff.TimeSignature = \turnOff
94 %\property Staff.Clef = \turnOff
95 \transpose c'' { a a a2 a }
101 A sharp (@texisharp{}) is made by adding ``@code{is}'', a flat
102 (@texiflat{}) by adding ``@code{es}''. As you would expect, a
103 double-sharp or double-flat is made by adding ``@code{isis}'' or
112 \property Score.timing = ##f
113 \property Staff.TimeSignature = \turnOff
114 \transpose c'' { cis1 ees fisis aeses }
120 Add a dot ``@code{.}'' after the duration to get a dotted note:
126 @c missing clef seems to raise more questions than actual pitch of notes,
127 @c as these are snippets anyway
129 \property Score.timing = ##f
130 \property Staff.TimeSignature \set #'transparent = ##t
131 %\property Staff.Clef = \turnOff
132 \transpose c'' { a2. a4 a8. a16 }
138 The meter (or time signature) can be set with the @code{\time} command:
147 @c a clef here may lead to confusion
149 \property Staff.Clef \set #'transparent = ##t
160 The clef can be set using the ``@code{\clef}'' command:
162 @c what is more common name treble or violin?
163 @c in Dutch, its violin.
164 @c in English its definately treble.
174 \property Score.timing = ##f
175 \property Staff.TimeSignature = \turnOff
188 @c From these commands and notes, a piece of music can be formed. A piece
189 @c of music is made by enclosing it in ``@code{\notes @{ ... @}}''.
191 With these commands you can now write a piece of music. The next step
192 is to enclose your music inside ``@code{\notes @{ .. @}}''.
193 This lets LilyPond know that music (and not lyrics, for example) follows:
207 Now the piece of music is almost ready to be printed. The final step is to
208 combine the music with a printing command.
210 The printing command is the so-called ``@code{\paper}'' block. Later on
211 you will see that the @code{\paper} block is used to customize
212 printing specifics. The music and the @code{\paper} block are combined by
213 enclosing them in ``@code{\score @{ ... @}}''. This is what a full
214 LilyPond source file looks like:
237 \paper { linewidth = 60 * \staffspace }
244 @node Running LilyPond
245 @section Running LilyPond
247 In the last section we explained what kind of things you could enter
248 in a lilypond file. In this section we explain how to run LilyPond
249 and how view or print the output. If you have not used LilyPond
250 before, want to test your setup of LilyPond, or want to run an example
251 file yourself, read this section. Most of the instructions that follow
252 are for running LilyPond on Unix-like systems. Some additional
253 instructions for running LilyPond on Windows are given at the end of
256 Begin by opening a terminal window and starting a text editor.
257 For example, you could open an xterm and execute @code{joe}. In your
258 text editor, enter the following input and save the file as
264 \notes @{ c'4 e' g' @}
271 @c now this is weird, running ly2dvi to run LilyPond
272 @c (therefore name change proposal)
274 LilyPond is the program that computes the sheet music. All other
275 things, such as adding titles, page breaking and other page layout,
276 are done by a small wrapper program called
277 @code{ly2dvi}. @code{ly2dvi} calls lilypond to render the music, and
278 then adds the titling and page layout instructions. To process
279 @file{test.ly} with ly2dvi, proceed as follows:
287 You will see the following on your screen:
292 Now processing: `/home/fred/ly/test.ly'
294 Interpreting music...[1]
295 @emph{ ... more interesting stuff ... }
296 PS output to `test.ps'...
297 DVI output to `test.dvi'...
301 @cindex Viewing music
304 The results of the ly2dvi run are two files, @file{test.dvi} and
305 @file{test.ps}. The PS file (@file{test.ps}) is the one you can print.
306 You can view the PS file using the program ghostview. If a version of
307 ghostview is installed on your system, one of these commands will
308 produce a window with some music notation on your screen:
318 If the music on your screen looks good, you can print it by clicking
319 File/Print inside ghostview.
321 The DVI file (@file{test.dvi}) contains the same sheet music in a
322 different format. DVI files are more easily processed by the computer,
323 so viewing them usually is quicker. You can run @code{xdvi test.dvi} or
324 @code{kdvi test.dvi} to view the DVI file. In Xdvi, the mouse buttons
325 activate magnifying glasses. Unfortunately, variable symbols (such as
326 beams and slurs) are not displayed in the magnifying glasses.
328 If your DVI viewer does not have a "Print" button, you can print the
329 file by executing @code{lpr test.ps}.
331 @c volgende alinea schrappen?
333 If your system does not support printing PostScript files, then you
334 can install GhostScript, a PostScript emulator. Refer to
335 GhostScript's website at @uref{http://www.ghostscript.com}.
339 @cindex Printing output
343 A final option is to use the popular PDF format. You can get a PDF
344 file by running @code{ly2dvi --pdf test.ly}. With @code{--pdf}
345 you will get DVI, PS and PDF files. Viewers for PS files also
346 accept PDF files, but there are also many other applications for
349 If you are familiar with @TeX{}, be warned: do not use other
350 DVI drivers like @code{dvilj}. The @TeX{} coming out of LilyPond
351 uses embedded PostScript code and will not render correctly if
352 you use anything other than @code{dvips}.
358 @unnumberedsubsec Windows users
359 Windows users can start the terminal by clicking on the LilyPond or
360 Cygwin icons. You can use any text editor (such as Notepad) to edit
361 the LilyPond file. Viewing the PS file can be done with:
364 @code{gsview32 test.ps}
367 You can also print from the command line by executing:
370 @code{gsview32 /s test.ps}
377 To run LilyPond, input a text file, then run the command @code{ly2dvi} on
378 that file. The resulting files are either DVI or PostScript, and can
379 be viewed with @code{xdvi} (unix) and ghostview (unix and windows)
380 respectively. The following table summarizes the constructs that were
381 discussed in the previous two sections.
383 @multitable @columnfractions .3 .3 .4
389 @item @code{1 2 8 16}
392 @lilypond[fragment, relative 1]
393 \property Staff.TimeSignature = \turnOff
394 \property Staff.autoBeaming = ##f
395 \property Staff.Clef = \turnOff
400 @tab augmentation dots
402 @lilypond[fragment, relative 1]
403 \property Staff.TimeSignature = \turnOff
404 \property Staff.Clef = \turnOff
408 @item @code{c d e f g a b }
411 @lilypond[fragment, relative 1]
412 \property Staff.TimeSignature = \turnOff
413 \property Staff.Clef = \turnOff
417 @item @code{\clef treble \clef bass }
421 \property Staff.TimeSignature \set #'transparent = ##t
428 @item @code{\time 3/4 \time 4/4 }
432 \property Staff.Clef \set #'transparent = ##t
445 We continue with the introduction of the remaining musical constructs.
446 Normal rests are entered just like notes, but use the name
455 \property Score.timing = ##f
456 \property Staff.Clef = \turnOff
457 \property Staff.TimeSignature = \turnOff
464 @c Tim wants to move this quotes example just before the: quotes-don't-work
465 @c score, but we'd need to remove quotes from the other two (key and
468 @c better to have this just before the `octaves are bad' snipped
469 @c but we'd need to remove the ', from \key and tie
470 To raise a note by an octave, add a high quote @code{'} (apostrophe) to
471 the note name, to lower a note one octave, add a ``low quote'' @code{,}
472 (a comma). Middle C is @code{c'}:
476 c'4 c'' c''' \clef bass c c,
480 \property Score.timing = ##f
481 \property Staff.TimeSignature = \turnOff
482 c'4 c'' c''' \clef bass c c,
487 A tie is created by entering a tilde ``@code{~}'' between the notes to
488 be tied. A tie between two notes means that the second note must not be
489 played separately; it just makes the first note sound longer:
492 @lilypond[fragment,verbatim]
498 The key signature is set with the command ``@code{\key}'':
508 \property Staff.TimeSignature = \turnOff
517 @c bit on the long/complex/scary taste
518 @c cheating a bit: two lines makes for a friendlier look
519 This example shows notes, ties, octave marks, and rests in action.
528 r4 r8 d''8 cis''4 e''
530 cis''4 cis''8 cis'' bis'4 d''8 cis'' ~
543 r4 r8 d''8 cis''4 e''
545 cis''4 cis''8 cis'' bis'4 d''8 cis'' ~
548 \paper { linewidth = 50*\staffspace }
554 There are some interesting points to note in this example.
555 Accidentals (sharps and flats) don't have to be marked explicitly: you
556 just enter the note name, and LilyPond determines whether or not to
557 print an accidental. Bar lines and beams are drawn automatically.
558 LilyPond calculates line breaks for you; it doesn't matter where you
559 make new lines in the source file. Finally, the order of time, key and
560 clef changes is not relevant: lilypond will use standard notation
561 conventions for ordering these items.
563 The example also indicates that a piece of music written in a high
564 register needs lots of quotes. This makes the input less readable,
565 and is therefore also a potential source of errors.
567 The solution is to use ``relative octave'' mode. In practice, this is
568 the most convenient way to copy existing music. To use relative mode,
569 add @code{\relative} before the piece of music. You must also give a
570 note from which relative starts, in this case @code{c''}. If you don't
571 use octavation quotes (ie don't add ' or , after a note), relative mode
572 chooses the note that is closest to the previous one. Since most music
573 has small intervals, you can write quite a lot in relative mode without
574 using octavation quotes.
575 @c don't use commas or quotes in this sentence
576 For example: @code{c f} goes up; @code{c g} goes down:
586 \property Score.timing = ##f
587 \property Staff.TimeSignature = \turnOff
596 @c needed better, maybe even redundant explanation
597 @c added another example below.
598 @c grappig: Pa vond het heel logies, en slim toen-i eenmaal begreep.
599 @c in eerste instantie drong het `relative' niet door zonder extra uitleg.
600 You can make larger intervals by adding octavation quotes. Note that
601 quotes or commas do not determine the absolute height of a note;
602 the height of a note is relative to the previous one.
603 @c don't use commas or quotes in this sentence
604 For example: @code{c f,} goes down; @code{f, f} are both the same;
605 @code{c c'} are the same; and @code{c g'} goes up:
615 \property Score.timing = ##f
616 \property Staff.TimeSignature = \turnOff
625 Here's an example of the difference between relative mode and
626 ``normal'' (non-relative) mode:
637 \property Score.timing = ##f
638 \property Staff.TimeSignature = \turnOff
654 \property Score.timing = ##f
655 \property Staff.TimeSignature = \turnOff
664 The following table summarizes the syntax learned so far in this section.
666 @multitable @columnfractions .3 .3 .4
675 @lilypond[fragment, relative 1]
676 \property Staff.TimeSignature = \turnOff
677 \property Staff.Clef = \turnOff
685 @lilypond[fragment, relative 1]
686 \property Score.timing = ##f
687 \property Staff.TimeSignature = \turnOff
688 \property Staff.autoBeaming = ##f
689 \property Staff.Clef = \turnOff
694 @item @code{\key es \major }
698 \property Staff.TimeSignature \set #'transparent = ##t
707 @lilypond[fragment, relative 1]
708 \property Score.timing = ##f
709 \property Staff.TimeSignature = \turnOff
710 \property Staff.autoBeaming = ##f
711 \property Staff.Clef = \turnOff
718 @lilypond[fragment, relative 1]
719 \property Score.timing = ##f
720 \property Staff.TimeSignature = \turnOff
721 \property Staff.autoBeaming = ##f
722 \property Staff.Clef = \turnOff
728 A slur is drawn across many notes, and indicates bound articulation
729 (legato). The starting note and ending note are marked with a
730 ``@code{(}'' and a ``@code{)}'' respectively:
733 @lilypond[fragment,relative 1, verbatim]
734 d4( )c16( cis d e c cis d )e( )d4
739 If you need two slurs at the same time (one for articulation, one for
740 phrasing), you can also make a phrasing slur with @code{\(} and
745 @c fragment of 1st hrn in Adams' The Chairman Dances, with creative
746 @c chromatic thing pasted in front. (admittedly the original doesn't
747 @c have a phrasing slur. The problem is that we don't want the slur
748 @c and the Phrasing slur to collide. We're trying to make a good
752 @lilypond[fragment,relative 1, verbatim]
753 a8(\( ais b ) c cis2 b'2 a4 cis, \) c
758 Beams are drawn automatically, but if you don't like the choices, you
759 can enter beams by hand. Surround the notes to be grouped with @code{[}
762 @lilypond[fragment,relative 1, verbatim]
768 To print more than one staff, each piece of music that makes up a staff
769 is marked by adding @code{\context Staff} before it. These
770 @code{Staff}'s can be grouped inside @code{<} and @code{>}, as is
774 @lilypond[fragment,verbatim]
776 \context Staff = staffA { \clef violin c'' }
777 \context Staff = staffB { \clef bass c }
782 In this example, @code{staffA} and @code{staffB} are names that are
783 given to the staves. It doesn't matter what names you give, as long
784 as each staff has a unique name.
788 We can typeset a melody with two staves now:
791 @lilypond[verbatim,singleline]
794 < \context Staff = staffA {
797 \relative c'' { e2 ( d4 c2 b4 [a8 a] [b b] [g g] )a2. }
799 \context Staff = staffB {
810 Notice that the time signature is specified in one melody staff only
811 (the top staff), but is printed on both. LilyPond knows that the time
812 signature should be the same for all staves.
816 Common accents can be added to a note using @code{-.}, @code{--}, @code{->}:
818 @lilypond[verbatim,relative 1]
824 Dynamic signs are made by adding the markings to the note:
826 @lilypond[verbatim,relative 1]
832 Crescendi are started with the commands @code{\<} and @code{\>}. The
833 command @code{\!} finishes a crescendo on the following note.
835 @lilypond[verbatim,relative 1]
836 c2\< \!c2-\ff \>c2 \!c2
841 Chords can be made by surrounding notes with @code{<} and @code{>}:
843 @lilypond[relative 0, fragment,verbatim]
851 @c hmm, te losjes, iig
852 In general, @code{ < @var{stuff} > } is used when @var{stuff} all
853 happens at the same time, like in chords, or (like in the two-staff
854 example above) in a bunch of stacked staves.
857 You can combine beams and ties with chords. Notice that
858 beam and tie markings must be placed outside the chord markers:
860 @lilypond[relative 0, fragment,verbatim]
861 r4 [<c8 e g> <c8 f a>] ~ <c8 f a>
865 When you want to combine chords with slurs and dynamics, technical
866 detail crops up: you have type these commands next to the notes, which
867 means that they have to be inside the @code{< >}. Don't get confused
868 by the chord @code{< >} and the dynamic @code{\< \>}!
873 r4 <c8 e g \> ( > <c e g> <c e g> < ) \! c8 f a>
875 @lilypond[relative 0, fragment]
877 r4 <c8 e g \> ( > <c e g> <c e g> < ) \! c8 f a>
882 @c this example is a bit too strongly worded -- there's nothing wrong
883 @c with starting a piece with a chord; you just have to be careful when
884 @c you do so. I've rephrased this example below.
885 @c There is one golden rule that you should keep in mind when writing
888 @c @strong{DO NOT START A PIECE WITH A CHORD}
890 @c Of course, it is a allowed, but the result might not be what you expect:
892 @c rephrased "don't start with a chord"
893 There is one caution when using chords: if you use a chord at the very
894 beginning of the piece, LilyPond might not understand what you want:
897 @lilypond[verbatim,singleline]
898 \score { \notes <c'2 e'2> }
903 If you have a piece that begins with a chord, you must explicitly
904 state that the notes of the chord are to be put on the same staff, in
905 the same voice. This is done by specifying @code{\context Staff} or
906 @code{\context Voice} for the notes:
909 @lilypond[verbatim,singleline]
910 \score { \notes \context Voice <c'2 e'2> }
918 @multitable @columnfractions .3 .3 .4
928 @lilypond[fragment, relative 1]
929 \property Score.timing = ##f
930 \property Staff.TimeSignature = \turnOff
931 \property Staff.autoBeaming = ##f
932 \property Staff.Clef = \turnOff
940 @lilypond[fragment, relative 1]
941 \property Score.timing = ##f
942 \property Staff.TimeSignature = \turnOff
943 \property Staff.autoBeaming = ##f
944 \property Staff.Clef = \turnOff
952 @lilypond[fragment, relative 1]
953 \property Score.timing = ##f
954 \property Staff.TimeSignature = \turnOff
955 \property Staff.autoBeaming = ##f
956 \property Staff.Clef = \turnOff
961 @item @code{< \context Staff ... >}
965 < \context Staff = SA { c'1 }
966 \context Staff = SB { c'1 } >
973 @lilypond[fragment, relative 1]
974 \property Staff.TimeSignature = \turnOff
975 \property Staff.Clef = \turnOff
980 @item @code{-\mf -\sfz}
983 @lilypond[fragment, relative 1]
984 \property Staff.TimeSignature = \turnOff
985 \property Staff.Clef = \turnOff
993 @lilypond[fragment, relative 1]
994 \property Score.timing = ##f
995 \property Staff.TimeSignature = \turnOff
996 \property Staff.autoBeaming = ##f
997 \property Staff.Clef = \turnOff
1004 @lilypond[fragment, relative 1]
1005 \property Score.timing = ##f
1006 \property Staff.TimeSignature = \turnOff
1007 \property Staff.autoBeaming = ##f
1008 \property Staff.Clef = \turnOff
1016 @lilypond[fragment, relative 1]
1017 \context Voice <c e>
1022 Now you know the basic ingredients of a music file, so this is the right
1023 moment to try your at hand at doing it yourself: try typing some
1024 simple examples, and experiment a little.
1026 When you're comfortable with the basics, you might want to read
1027 the rest of this chapter. It continues in tutorial-style, but it
1028 is much more in-depth, dealing with more advanced topics such as
1029 lyrics, chords, orchestral scores and parts, fine tuning of output,
1030 polyphonic music, and integrating text and music.
1036 @node Printing lyrics
1037 @section Printing lyrics
1040 In this section we shall explain how to typeset the following
1041 fragment of The Free Software Song:
1043 @lilypond[singleline]
1044 \score { \notes { \addlyrics
1045 \notes \relative c' {
1047 d'2 c4 b16 ( a g a b a b ) c a2
1048 b2 c4 b8 ( a16 g ) a4 g2 }
1049 \context Lyrics \lyrics {
1051 share the soft -- ware; }
1053 \paper { linewidth = -1. }
1059 @cindex @code{\lyrics}
1062 To print lyrics, you must enter them, and then instruct lilypond to
1063 handle the lyrics by printing them.
1064 You can enter lyrics in a special input mode of LilyPond. This mode is
1065 called Lyrics mode, and it is introduced by the keyword @code{\lyrics}.
1066 The purpose of this mode is that you can enter lyrics as plain text,
1067 punctuation and accents without any hassle.
1069 Syllables are entered like notes, with pitches replaced by text. For
1070 example, @code{Twin- kle twin- kle} enters four syllables. Note that
1071 the hyphen has no special meaning for lyrics, and does not introduce
1074 Spaces can be introduced into a lyric either by using quotes:
1075 @code{"He could"4 not4} or by using an underscore without quotes:
1076 @code{He_could4 not4}. All unquoted underscores are converted to
1079 These are the lyrics for the free software song:
1084 share the soft -- ware; @}
1087 As you can see, extender lines are entered as @code{__}. This will
1088 create an extender, a line that extends over the entire duration of
1089 the lyric. This line will run all the way to the start of the next
1090 lyric, so you may want to shorten it by using a blank lyric (using
1094 If you can use have hyphens at the end of a syllable, i.e.
1098 but then the hyphen will be attached to the to the end of the first
1101 If you want them centered between syllables you can use the special
1102 `@code{-}@code{-}' lyric as a separate word between syllables. The
1103 hyphen will have variable length depending on the space between
1104 syllables. It will be centered between the syllables.
1106 Normally, the notes that you enter are transformed into note heads.
1107 Note heads alone make no sense, they need surrounding information: a key
1108 signature, a clef, staff lines, etc. They need @emph{context}. In
1109 LilyPond, these symbols are created by objects called `interpretation
1110 contexts'. Interpretation contexts exist for generating notation
1111 (`notation context') and for generating sound (`performance
1112 context'). These objects only exist during a run of LilyPond.
1114 When LilyPond interprets music, it will create a Staff context.
1115 We don't want that default here, because we want lyric. The
1120 explicitly creates an interpretation context of
1121 @code{Lyrics} type to interpret the song text that we entered.
1123 The melody of the song doesn't offer anything new:
1125 \notes \relative c' @{
1127 d'2 c4 b16 ( a g a b a b ) c a2
1128 b2 c4 b8 ( a16 g ) a4 g2 @}
1131 Both can be combined with the @code{\addlyrics}:
1134 \notes \relative c' @dots{}
1135 \context Lyrics \lyrics @dots{}
1138 The lyrics are also music expressions, similar to notes. What happens
1139 here, is that each syllable of the lyrics is put under the a note of
1141 The complete file is listed here:
1144 \score @{ \notes @{ \addlyrics
1145 \notes \relative c' @{
1147 d'2 c4 b16 ( a g a b a b ) c a2
1148 b2 c4 b8 ( a16 g ) a4 g2 @}
1149 \context Lyrics \lyrics @{
1151 share the soft -- ware; @}
1153 \paper @{ linewidth = -1. @}
1159 @node A melody with chords
1160 @section A melody with chords
1162 In this section we show how to typeset a melody with chord
1163 accompaniment. This file is included as @file{input/tutorial/flowing.ly}.
1166 \include "paper16.ly"
1167 melody = \notes \relative c' @{
1171 c4 c8 d [es () d] c4 | f4 f8 g [es() d] c g |
1172 c4 c8 d [es () d] c4 | d4 es8 d c4.
1176 accompaniment =\chords @{
1178 c2:3- f:3-.7 d:min es4 c8:min r8
1179 c2:min f:min7 g:7^3.5 c:min @}
1184 \context ChordNames \accompaniment
1185 \context Staff = mel @{
1190 \midi @{ \tempo 4=72 @}
1191 \paper @{ linewidth = 10.0\cm @}
1196 The result would look this.
1199 \include "paper16.ly"
1200 melody = \notes \relative c' {
1204 c4 c8 d [es () d] c4 | f4 f8 g [es() d] c g |
1205 c4 c8 d [es () d] c4 | d4 es8 d c4.
1209 accompaniment =\chords {
1211 c2:3- f:3-.7 d:min es4 c8:min r8
1212 c2:min f:min7 g:7^3.5 c:min }
1217 \context ChordNames \accompaniment
1219 \context Staff = mel {
1220 \property Staff.autoBeaming = ##f
1224 \midi { \tempo 4=72 }
1225 \paper { linewidth = 10.0\cm }
1229 Again, we will dissect the file line by line.
1234 \include "paper16.ly"
1237 Smaller size for inclusion in a book.
1241 melody = \notes \relative c' @{
1244 The structure of the file will be the same as the previous one, a
1245 @code{\score} block with music in it. To keep things readable, we will
1246 give names to the different parts of music, and use the names to
1247 construct the music within the score block.
1254 @cindex @code{\partial}
1256 The piece starts with an anacrusis of one eighth.
1261 The key is C minor: we have three flats.
1266 c4 c8 d [es () d] c4 | f4 f8 g [es() d] c g |
1267 c4 c8 d [es () d] c4 | d4 es8 d c4.
1272 @cindex manual beaming
1273 @cindex automatic beaming, turning off
1274 We use explicit beaming. Since this is a song, we turn automatic
1275 beams off, and use explicit beaming where needed.
1282 This ends the definition of @code{melody}.
1291 @cindex identifier assignment
1292 @cindex syllables, entering
1297 accompaniment =\chords @{
1301 @cindex mode, chords
1302 We'll put chords over the music. To enter them, there is a special mode
1303 analogous to @code{\lyrics} and @code{\notes} mode, where you can give
1304 the names of the chords you want, instead of listing the notes
1305 comprising the chord.
1312 There is no accompaniment during the anacrusis.
1321 @cindex chord modifier
1322 @cindex modifier, chord
1323 This is a c minor chord, lasting half a note. Chord are entered by
1324 entering the tonic. Then notes can be changed. In this case, a small third
1325 is used. The cod for this is @code{3-}.
1331 Similarly, @code{7} modifies (adds) a seventh, which is small by
1332 default to create the @code{f a c es} chord. Multiple modifiers must be
1340 Some modifiers have predefined names, e.g. @code{min} is the same as
1341 @code{3-}, so @code{d-min} is a minor @code{d} chord.
1345 c2:min f:min7 g:7^3.5 c:min @}
1348 @cindex named modifier
1350 A named modifier @code{min} and a normal modifier @code{7} do not have
1351 to be separated by a dot. Tones from a chord are removed with chord
1352 subtractions. Subtractions are started with a caret, and they are
1353 also separated by dots. In this example, @code{g:7^3.5} produces a
1354 minor seventh. The brace ends the sequential music.
1362 We assemble the music in the @code{\score} block. Melody, lyrics and
1363 accompaniment have to sound at the same time, so they should be
1364 @code{\simultaneous}.
1365 @cindex @code{\simultaneous}
1372 Chord mode generates notes grouped in @code{\simultaneous} music. If
1373 you remove the comment sign, you can see the chords in normal
1374 notation: they will be printed as note heads on a separate
1375 staff. To print them as chords names, they have to be interpreted as
1376 being chords, not notes. This is done with the following command:
1380 \context ChordNames \accompaniment
1384 @cindex interpretation context
1385 @cindex notation context
1388 Normally, the notes that you enter are transformed into note heads.
1389 Note heads alone make no sense, they need surrounding information: a key
1390 signature, a clef, staff lines, etc. They need @emph{context}. In
1391 LilyPond, these symbols are created by objects called `interpretation
1392 contexts'. Interpretation contexts exist for generating notation
1393 (`notation context') and for generating sound (`performance
1394 context'). These objects only exist during a run of LilyPond.
1396 When LilyPond interprets music, it will create a Staff context. If
1397 the @code{%} sign in the previous line were removed, you could see
1398 that mechanism in action.
1400 We don't want that default here, because we want chord names. The
1401 command above explicitly creates an interpretation context of
1402 @code{ChordNames} type to interpret the music @code{\accompaniment}.
1407 \context Staff = mel @{
1411 We place the melody on a staff called @code{mel}. We give it a name to
1412 differentiate it from the one that would contain note heads for the
1413 chords, if you would remove the comment before the ``note heads''
1414 version of the accompaniment. By giving this staff a name, it is
1415 forced to be different.
1419 \property Staff.autoBeaming = ##f
1423 @cindex context variables
1424 @cindex setting context variables
1425 An interpretation context has variables, called properties, that tune
1426 its behavior. One of the variables is @code{autoBeaming}. Setting
1427 this @code{Staff}'s property to @code{##f}, which is the boolean value
1428 @var{false}, turns the automatic beaming mechanism off for the current
1439 Finally, we put the melody on the current staff. Note that the
1440 @code{\property} directives and @code{\melody} are grouped in sequential
1441 music, so the property settings are done before the melody is
1447 \midi @{ \tempo 4=72@}
1450 MIDI (Musical Instrument Digital Interface) is a standard for
1451 connecting and recording digital instruments. So a MIDI file is like a
1452 tape recording of an instrument. The @code{\midi} block makes the
1453 music go to a MIDI file, so you can listen to the music you entered. It
1454 is great for checking the music. Whenever you hear something weird, you
1455 probably hear a typing error.
1457 Syntactically, @code{\midi} is similar to @code{\paper @{ @}}, since it
1458 also specifies an output method. You can specify the tempo using the
1459 @code{\tempo} command, in this case the tempo of quarter notes is set to
1460 72 beats per minute.
1464 \paper @{ linewidth = 10.0\cm @}
1467 We also want notation output. The linewidth is short so the piece
1468 will be set in two lines.
1471 @section More stanzas
1476 If you have multiple stanzas printed underneath each other, the vertical
1477 groups of syllables should be aligned around punctuation. LilyPond can
1478 do this if you tell it which lyric lines belong to which melody.
1479 We show how you can do this by showing how you could print a frivolous
1480 fragment of a fictional Sesame Street duet.
1482 @lilypond[singleline,verbatim]
1485 \notes \relative c'' \context Voice = duet { \time 3/4
1487 \lyrics \context Lyrics <
1488 \context LyricsVoice = "duet-1" {
1489 \property LyricsVoice . stanza = "Bert"
1490 Hi, my name is bert. }
1491 \context LyricsVoice = "duet-2" {
1492 \property LyricsVoice . stanza = "Ernie"
1493 Ooooo, ch\'e -- ri, je t'aime. }
1498 To this end, give the Voice context an identity, and set the
1499 LyricsVoice to a name starting with that identity followed by a dash.
1500 In the following example, the Voice identity is @code{duet},
1502 \context Voice = duet @{
1507 identities of the LyricsVoices are @code{duet-1} and @code{duet-2}.
1509 \context LyricsVoice = "duet-1" @{
1510 Hi, my name is bert. @}
1511 \context LyricsVoice = "duet-2" @{
1512 Ooooo, ch\'e -- ri, je t'aime. @}
1515 We add the names of the singers. This can be done by setting
1516 @code{LyricsVoice.Stanza} (for the first system) and
1517 @code{LyricsVoice.stz} for the following systems. Notice how you must
1518 surround dots with spaces in @code{\lyrics} mode.
1521 \property LyricsVoice . stanza = "Bert"
1523 \property LyricsVoice . stanza = "Ernie"
1526 The convention for naming @code{LyricsVoice} and @code{Voice} must
1527 also be used to get melismata on rests correct.
1531 @node More movements
1532 @section More movements
1534 LilyPond only handles formatting sheet music. It doesn't concern
1535 itself with producing titles. This is the jobs of a simple wrapper
1536 program called ly2dvi. @code{ly2dvi} calls LilyPond to do the
1537 sheet music formatting. Then it produces titles, and ties together all
1538 inputs into a single @file{dvi} file. In this section, we show some of
1539 the options for titling. We will show how you can produce a file
1540 that looks like this:
1542 @center @strong{Two miniatures}
1552 \paper { linewidth = -1.0 }
1564 \paper { linewidth = -1.0 }
1568 For example, consider the following file (@file{miniatures.ly})
1573 title = "Two miniatures"
1574 composer = "F. Bar Baz"
1575 tagline = "small is beautiful" @}
1577 \paper @{ linewidth = -1.0 @}
1581 Mental note: discuss Schenkerian analysis of these key pieces.
1587 \notes @{ c'4 d'4 @}
1593 \notes @{ d'4 c'4 @}
1600 The information for the global titling is in a so-called header block.
1601 The information in this block is not used by
1602 LilyPond, but it is passed into the output. @file{ly2dvi} uses this
1603 information to print titles above the music.
1605 @cindex identifier assignment
1606 the @code{\header} block contains assignments. In each assignment, a
1607 variable is set to a value. The header block for this file looks like
1609 @cindex @code{\header}
1612 title = "Two miniatures"
1613 composer = "F. Bar Baz"
1614 tagline = "small is beautiful"
1618 When you process a file with ly2dvi, a signature line is printed at
1619 the bottom of the last page. This signature is produced from the
1620 @code{tagline} field of @code{\header}. The default "Lily was here,
1621 @var{version number}" is convenient for us programmers. Archived
1622 the layout of different versions can be compared using archived
1623 print-outs (that include a version number).
1625 @cindex Lily was here
1626 @cindex signature line
1629 Many people find the default tagline (``Lily was here'') too droll.
1630 If that is the case, assign something else to @code{tagline}, as shown
1639 A paper block at top level, i.e. not in a @code{\score} block sets the
1640 default page layout. The following @code{\score} blocks don't have
1641 @code{\paper} sections, so the settings of this block are substituted:
1643 The variable @code{linewidth} normally sets the length of the systems
1644 on the page. However, a negative value has a special meaning. If
1645 @code{linewidth} is less than 0, no line breaks are inserted into the
1646 score, and the spacing is set to natural length: a short phrase takes
1647 up little space, a longer phrase more space.
1652 Mental note: discuss Schenkerian analysis of these key pieces.
1657 Mental notes to yourself can be put into comments. There are two types
1658 of comments. Line comments are introduced by @code{%}, and block
1659 comments are delimited by @code{%@{} and @code{%@}}.
1664 \notes @{ c'4 d'4 @}
1667 In previous examples, notes were specified in relative octaves,
1668 i.e. each note was put in the octave that is closest to its
1669 predecessor. Besides relative, there is also absolute octave
1670 specification, which you get when you don't specify @code{\relative}. In
1671 this input mode, the central C is denoted by @code{c'}. Going down, you
1672 get @code{c} @code{c,} @code{c,,} etc. Going up, you get @code{c''}
1675 When you're copying music from existing sheet music, relative octaves
1676 are probably the easiest to use: it's less typing work and errors are
1677 easily spotted. However, if you write LilyPond input directly, either by
1678 hand (i.e. composing) or by computer, absolute octaves may be easier to use.
1686 The @code{\header} is normally at the top of the file, where it sets
1687 values for the rest of the file. If you want to typeset different pieces
1688 from one file (for example, if there are multiple movements, or if
1689 you're making an exercise book), you can put different @code{\score}
1690 blocks into the input file. ly2dvi will assemble all LilyPond output
1691 files into a big document. The contents of \header blocks specified
1692 within each score, are used for the titling of each movement.
1698 For example, the Opus number is put at the right, and the piece string
1699 will be at the left.
1706 title = "Two miniatures"
1707 composer = "F. Bar Baz"
1708 tagline = "small is beautiful" @}
1710 \paper @{ linewidth = -1.0 @}
1713 \notes @{ c'4 d'4 @}
1719 \notes @{ d'4 c'4 @}
1731 Lilypond and its language are still under development, and
1732 occasionally, details of the syntax are changed. This fragment
1733 indicates for which version the input file was written. When you
1734 compile this file, the version number will be checked, and you will
1735 get a warning when the file is too old. This version number is also
1736 used by the @code{convert-ly} program (See @ref{Older
1737 LilyPond versions}), which is used to update the file to the latest
1741 @node A piano excerpt
1742 @section A piano excerpt
1744 Our fourth subject is a piece of piano music. The fragment in the
1745 input file is a piano reduction of the G major Sinfonia by Giovanni
1746 Battista Sammartini. It was composed around 1740. It's in the source
1747 package under the name @file{input/tutorial/sammartini.ly}.
1749 @lilypondfile[smallverbatim]{sammartini.ly}
1751 As you can see, this example features multiple voices on one staff. To
1752 make room for those voices, their notes have to be stemmed in opposite
1755 LilyPond includes the identifiers @code{\stemUp}, @code{\stemDown} along
1756 with some other commonly used formatting instructions, but to explain how
1757 it works, we wrote our own here. Of course, you should use predefined
1758 identifiers like these if possible: then you will be affected less by
1759 the implementation changes we occasionally make.
1763 viola = \notes \relative c' \context Voice = viola @{
1765 In this example, you can see multiple parts on a staff. Each part is
1766 associated with one notation context. This notation context handles
1767 stems and dynamics (among others). The type name of this context is
1768 @code{Voice}. For each part we have to make sure that there is
1769 precisely one @code{Voice} context, so we give it a unique name
1776 The delimiters @code{<} and @code{>} are shorthands for
1777 @code{\simultaneous @{} and @code{@}}. The expression enclosed in
1778 @code{<} and @code{>} is a chord.
1782 @code{\arpeggio} typesets an arpeggio sign (a wavy vertical line) before
1790 We want the viola to have stems down, and have all the other
1791 characteristics of a second voice. This is enforced using the
1792 @code{\voiceTwo} command: it inserts instructions that makes stem,
1793 ties, slurs, etc. go down.
1801 Relative octaves work a little differently with chords. The starting
1802 point for the note following a chord is the first note of the chord. So
1803 the @code{g} gets an octave up quote: it is a fifth above the starting
1804 note of the previous chord (the central C).
1810 @code{s} is a spacer rest. It does not print anything, but it does have
1811 the duration of a rest. It is useful for filling up voices that
1812 temporarily don't play. In this case, the viola doesn't come until one
1813 and a half measure later.
1817 oboes = \notes \relative c'' \context Voice = oboe @{
1819 Now comes a part for two oboes. They play homophonically, so we
1820 print the notes as one voice that makes chords. Again, we insure that
1821 these notes are indeed processed by precisely one context with
1825 \voiceOne s4 g8. b,16 c8 r <e'8. g> <f16 a>
1828 The oboes should have stems up, so they should have stems up, to keep
1829 them from interfering with the staff-jumping bass figure.
1833 \grace <e8( g> < d4 )f> <c2 e>
1835 @cindex @code{\grace}
1838 @code{\grace} introduces grace notes. It takes one argument, in this
1839 case a chord. A slur is introduced starting from the @code{\grace}
1840 ending on the following chord.
1848 Tuplets are made with the @code{\times} keyword. It takes two
1849 arguments: a fraction and a piece of music. The duration of the piece
1850 of music is multiplied by the fraction. Triplets make notes occupy 2/3
1851 of their notated duration, so in this case the fraction is 2/3.
1854 @{ <d8 f> <e g> <f a> @}
1856 The piece of music to be `tripletted' is sequential music containing
1863 At this point, the homophonic music splits into two rhythmically
1864 different parts. We can't use a sequence of chords to enter this, so
1865 we make a `chord' of sequences to do it. We start with the upper
1866 voice, which continues with upward stems:
1869 @{ \times 2/3 @{ a8 g c @} c2 @}
1876 The easiest way to enter multiple voices is demonstrated
1877 here. Separate the components of the voice (single notes or entire
1878 sequences) with @code{\\} in a simultaneous music expression. The
1879 @code{\\} separators split first voice, second voice, third voice, and
1882 As far as relative mode is concerned, the previous note is the
1883 @code{c'''2} of the upper voice, so we have to go an octave down for
1891 This ends the two-part section.
1895 \grace <c,8( e> <)b8. d8.-\trill> <c16 e> |
1900 @code{\stemBoth} ends the forced stem directions. From here, stems are
1901 positioned as if it were single part music.
1903 The bass has a little hoom-pah melody to demonstrate parts switching
1904 between staves. Since it is repetitive, we use repeats:
1907 hoomPah = \repeat unfold 8
1909 @cindex unfolded @code{\repeat}
1910 The unfolded repeat prints the notes in its argument as if they were
1911 written out in full eight times.
1914 \notes \transpose c' @{
1917 @cindex relative mode and transposing
1919 Transposing can be done with @code{\transpose}, which takes two arguments.
1920 The first specifies what central C should be transposed to. The second
1921 is the to-be-transposed music. As you can see, in this case, the
1922 transposition has no effect, as central C stays at central C.
1924 The purpose of this no-op is to protect it from being interpreted as
1925 relative notes. Relative mode can not be used together with
1926 transposition, so @code{\relative} will leave the contents of
1927 @code{\hoomPah} alone. We can use it without having to worry about
1928 getting the motive in a wrong octave.
1930 @cindex staff switch, manual
1931 @cindex cross staff voice, manual
1932 @cindex @code{\translator}
1935 \translator Staff = down
1938 \translator Staff = up
1942 Voices can switch between staves. Here you see two staff switching
1943 commands. The first one moves to the lower staff, the second one to
1944 the lower one. If you set stem directions explicitly (using the
1945 identifiers @code{\stemUp} and @code{\stemDown}.
1949 bassvoices = \notes \relative c' @{
1951 \autochange Staff \hoomPah \context Voice
1956 \translator Staff = down
1958 @cindex staff switch
1959 @cindex cross staff voice
1960 We want the remaining part of this melody on the lower staff, so we do a
1961 manual staff switch here.
1966 \context Voice = reallyLow @{\stemDown g2 ~ | g4 c8 @} >
1970 After skipping some lines, we see @code{~}. This mark makes ties. Note
1971 that ties and slurs are different things. A tie can only connect two
1972 note heads of the same pitch, whereas a slur can connect many chords
1979 A special context is needed to get cross staff beaming right. This
1980 context is called @code{PianoStaff}.
1983 \context Staff = bottom < \time 2/2 \clef bass
1985 The bottom staff must have a different clef.
1990 To make some more room on the line, the first (in this case the only)
1991 line is not indented. The line still looks very cramped, but that is due
1992 to the page layout of this document.
1998 * font-size, multi-stanza.
2000 * Simple part combining in a Hymn
2004 @node Fine tuning a piece
2005 @section Fine tuning a piece
2007 In this section, we show some ways to fine tune the final output of a
2008 piece. We do so using a single measure of a moderately complex piano
2009 piece: a Brahms intermezzo (opus 119, no. 1). Both fragments (the
2010 tuned and the untuned are in the @file{input/tutorial/}).
2012 The code for the untuned example shows us some new things.
2014 @lilypondfile[verbatim]{brahms-original.ly}
2024 The crescendo is ended at the half note by the escaped exclamation
2027 Hairpin dynamics can be indicated using @code{\>} to start a
2028 decrescendo, and @code{\!} to end one. The crescendo is started using
2029 @code{\<} and also ended using @code{\!}. Absolute dynamics can be
2030 entered using @code{\p}, @code{\mf}, etc. All these commands apply to
2031 the complete chord where they are entered, but for syntactical
2032 reasons, they must be attached to one of the notes of the chord.
2034 @cindex fingering instructions
2036 Fingering indications are entered simply using @code{-@var{N}}, where
2039 Now that we have the basic piece of music entered, we want to fine
2040 tune it, so we get something that resembles the original printed
2041 edition by Schott/Universal Edition:
2043 @lilypondfile{brahms-tweaked.ly}
2045 @cindex tuning grob behavior
2047 The basic process that we follow is that we override defaults in the
2048 printing system. We do this by setting variables in so-called grobs.
2049 Printed symbols are internally represented by Graphical Objects
2050 (Grobs). Each grob is described by a bunch of settings. Every
2051 setting is a variable: it has a name, and you can assign a value to
2052 the variable. These setting determine the fonts, offsets, sub-routines
2053 to be called on the grob, etc. The initial values of these settings
2054 are set in the Scheme file @file{scm/grob-description.scm}.
2056 @cindex slur attachments
2058 We start with the slur: the slur in the upper part, running from the F
2059 sharp to the A, runs from stem to stem in the printed edition, while
2060 ours starts from the note head at the left. The following property
2061 setting forces all slurs to run from stem to stem (and not from or to
2065 \property Voice.Slur \set #'attachment = #'(stem . stem)
2068 More precisely, this command extends the definition of the @code{Slur}
2069 object in the current @code{Voice}. The variable @code{attachment} is
2070 set to the pair of symbols @code{'(stem . stem)}.
2072 Although this is useful information, it is not very helpful: the
2073 lilypond backend supports approximately 240 variables like
2074 @code{attachment}, each with their own meaning and own type
2075 (eg. number, symbol, list, etc). Besides slur, LilyPond has 80
2076 different types of Grobs, that may be created in 14 different context
2077 types besides Voice.
2079 @cindex internal documentation
2080 @cindex finding grobs
2081 @cindex grob descriptiosn
2083 The interesting information is how you can figure out which properties
2084 to tune for your own scores. To discover this, you must have a copy of
2085 the internals document. This is a set of HTML pages, which should be
2086 included if you run a binary distribution@footnote{You can also
2087 compile them by executing @code{make -C Documentation/user/
2088 out/lilypond-internals.html} in the source package.}. This document is
2089 also available on the web: go to the lilypond website, click
2090 ``Documentation: other'' on the side bar, click
2091 ``lilypond-internals'', under information for users.
2093 You might want to bookmark either the HTML files on disk, or the one
2094 on the web. One word of caution is in place here: the internals
2095 documentation is generated from the definitions that lily uses. For
2096 that reason, it is strongly tied to the version of LilyPond that you
2097 use. Before you proceed, please make sure that you are using the
2098 documentation that corresponds to the LilyPond version that you use.
2100 Suppose that you wanted to tune the behavior of the slur. The first
2101 step is to get some general information on slurs in lilypond. Turn to
2102 the index, and look up ``slur''. The section on slurs says
2104 The grob for this object is @internalsref{Slur}, generally in
2105 @internalsref{Voice} context.
2108 So the grob for this object is called @code{Slur}, and slurs are
2109 created in the @code{Voice} context. If you are reading this tutorial
2110 in the HTML version, then you can simply click Slur, otherwise, you
2111 must look it up the internal documentation: click ``grob overview'' ,
2112 and select ``slur'' (the list is alphabetical.)
2114 Now you get a list of all the properties that the slur object
2115 supports, along with their default values. Among the properties we
2116 find the @code{attachment} property with its default setting.
2117 The property documentation explains that the following setting will
2118 produce the desired effect:
2120 \property Voice.Slur \set #'attachment = #'(stem . stem)
2123 If you ran the previous example, you have unknowingly already used
2124 this kind of command. The @file{ly/property-init.ly} contains the
2125 definition of @code{\stemUp}
2127 stemUp = \property Voice.Stem \set #'direction = #1
2131 We also want to move around the fingering `3'. In the printed edition
2132 it is not above the stem, but a little lower, slightly left of the
2133 stem. From the user manual, we find that the associated grob is called
2134 @code{Fingering}, but how do we know if we should use @code{Voice} or
2135 @code{Staff}. In many cases, @code{Voice} is a safe bet, but you can
2136 also deduce this information from the internals documentation: if you
2137 visit the documentation of @code{Fingering}, you will notice
2139 Fingering grobs are created by: Fingering_engraver
2144 Clicking @code{Fingering_engraver} will show you the documentation of
2145 the module responsible for interpreting the fingering instructions and
2146 translating them to a @code{Fingering} grob. Such a module is called
2147 an @emph{engraver}. The documentation of the @code{Fingering_engraver}
2150 Fingering_engraver is part of contexts: Voice and TabVoice
2152 so tuning the settings for Fingering should be done using either
2154 \property Voice.Fingering \set @dots{}
2158 \property TabVoice.Fingering \set @dots{}
2161 Since the @code{TabVoice} is only used for tab notation, we see that
2162 the first guess @code{Voice} was indeed correct.
2164 @cindex setting grob properties
2165 @cindex @code{extra-offset}
2167 For shifting the fingering, we use the grob property
2168 @code{extra-offset}. The following command manually adds an offset to
2169 the object. We move it a little to the left, and 1.8 staff space
2172 \property Voice.Fingering \set #'extra-offset = #'(-0.3 . -1.8)
2174 The @code{extra-offset} is a low-level feature: it moves around
2175 objects in the printout; the formatting engine is completely oblivious
2176 to these offsets. The unit of these offsets are staff-spaces.
2178 @cindex reverting grob properties
2179 @cindex undoing grob properties
2181 We only want to offset a single grob, so after the F-sharp, we must
2182 undo the setting. The technical term is to revert the grob property.
2184 \property Voice.Fingering \revert #'extra-offset
2187 @cindex property types
2188 @cindex translator properties
2189 @cindex grob properties
2190 @cindex music properties
2193 There is three different types of variables in LilyPond, something
2194 which is confusing at first (and for some, it stays like that).
2195 Variables such as @code{extra-offset} and @code{attachment} are called
2196 grob properties. They are something different from the translator
2197 properties, like @code{autoBeaming}. Finally, music expressions are
2198 internally also stored using properties, so-called music
2199 properties. You will encounter the latter type if you run Scheme
2200 functions on music using @code{\apply}.
2202 The second fingering instruction should be moved up a little, to avoid
2203 a collision with the slur. This could be achieved with
2204 @code{extra-offset}, but in this case, a simpler mechanism also
2205 works. We insert an empty text between the 5 and the note. The empty
2206 text pushes the fingering instruction away:
2208 a^" "^#'(finger "5")
2211 Lilypond tries to put fingering instructions closer to the notes as
2212 text instructions. To insert an empty text (@code{^" "}) between the
2213 finger and the note, we have disguised the fingering instruction as a
2214 text: @code{(finger "5")}.
2216 Normally, one would specify dynamics in a single voice, and start and
2217 end dynamics (such as @b{f} and @b{p}) will be aligned with
2218 hairpins. In this case, we want the decrescendo to be in a different
2219 place from the piano sign. We achieve this by putting the dynamic
2220 markings in different voices. The crescendo should be above the upper
2221 staff. This can be forced by the precooked command
2226 However, if you do that, the decrescendo will be too close to the
2227 upper voice, and collide with the stems. Looking at the manual for
2228 dynamics, we notice that ``Vertical positioning of these symbols is
2229 handled by the @internalsref{DynamicLineSpanner} grob.''. If we turn
2230 to the documentation of @code{DynamicLineSpanner}, we find that the
2231 @code{DynamicLineSpanner} supports several so-called
2232 `interfaces'. This grob not only puts dynamic objects next to the
2233 staff (@code{side-position-interface}), but it also groups dynamic
2234 objects (@code{axis-group-interface}), is considered a dynamic sign
2235 itself (@code{dynamic-interface}) and is a grob: it has the
2236 @code{grob-interface}, with all the variables that come with it.
2238 For the moment, we are interested in the side positioning:
2240 side-position-interface
2242 Position a victim object (this one) next to other objects (the
2243 support). In this case, the direction signifies where to put the
2244 victim object relative to the support (left or right, up or down?)
2246 Between the grob and its support (in this case: the notes in the voice
2247 going down), there should be more space. This space is controlled by
2248 @code{padding}, so we increase it.
2250 \property Voice.DynamicLineSpanner \override #'padding = #5.0
2253 This command is almost like the command for setting slur attachments,
2254 but subtly different in its details. Grob properties can be
2255 manipulated with two commands: @code{\override} extends the grob
2256 variables with a setting, and @code{\revert} releases this
2257 setting. This has a certain theoretical appeal: the operations are
2258 simple and symmetric. For practical use, it can be cumbersome. Both
2259 commands act like parentheses: you should carefully balance the use of
2260 @code{\override} and @code{\revert}. The @code{\set} command is more
2261 friendly: it first does a @code{\revert} followed by @code{\override}.
2263 Finally, Brahms uses music notation is a slightly unorthodox way. Ties
2264 usually happen only within one voice. In this piece, the composer
2265 gladly produces ties that jump voices. We deal with this by faking
2266 these ties: whenever we need such a tie, we insert a notehead in a
2267 different voice, and blank the stem. This is done in the following
2271 \property Voice.Stem \set #'transparent = ##t
2273 \property Voice.Stem \revert #'transparent
2276 Finally, the last tie is forced up using @code{\tieUp}.
2279 @node An orchestral score
2280 @section An orchestral score
2284 * Extracting an individual part::
2288 Our last two examples show a way to setup the music for an orchestral
2289 score. When typesetting a piece for several instruments, you'll want to
2290 create a conductor's full score, alongside several individual parts.
2292 LilyPond is well suited for this task. We will declare the music for
2293 each instrument individually, giving the music of each instrument its
2294 own name. These pieces of music are then combined in different
2295 @code{\score} blocks to produce different combinations of the score.
2297 This orchestral score example consists of three input files. In the
2298 first file, @file{os-music.ly}, we define the music for all
2299 instruments. This file will be used both for producing the score and
2300 the separate parts. Other files reference this file by doing
2301 @code{\include "os-music.ly"}.
2303 If you were to run LilyPond on this file, no printable output would be
2309 title = "Zo, goed lieverd?"
2310 subtitle = "How's, this babe?"
2319 Key = \notes \key as \major
2320 flautoI = \notes\relative c'' @{
2322 bes as bes as bes as bes as
2324 flautoII = \notes\relative c'' @{
2325 as8 bes as bes R1 d4 ~ d
2327 tromboI = \notes\relative c'' @{
2328 c4. c8 c8 c4. es4 r as, r
2330 tromboII = \notes\relative c'' @{
2331 as4. as8 as8 as4. R1*1/2 as4 es'
2333 timpani = \notes\relative c, @{
2334 \times 2/3 @{ f4 f f @}
2335 \times 4/5 @{ as8 as as as as @}
2338 corno = \notes\relative c' @{
2339 bes4 d f, bes d f, bes d
2343 We will not go through the input line by line, but only indicate and
2344 explain the new elements.
2351 \skip 2*4 \bar "|.";
2355 Declare setting to be used globally. The @code{\skip} command produces
2356 no output, but moves forward in time: in this case, the duration of a
2357 half note (@code{2}), and that four times (@code{*4}). This brings us
2358 to the end of the piece, and we can set the end bar.
2362 Key = \notes \key as \major
2364 Declare the key signature of the piece and assign it to the identifier
2365 @var{Key}. Later on, we'll use @code{\Key} for all staves except those
2366 for transposing instruments.
2368 @node The full score
2369 @subsection The full score
2372 The second file, @file{input/tutorial/os-score.ly} reads the definitions of the first
2373 (@file{input/tutorial/os-music.ly}), and defines the @code{\score} block for the full
2379 \include "os-music.ly"
2380 \include "paper13.ly"
2382 #(set! point-and-click line-column-location)
2383 #(define text-flat '((font-relative-size . -2)
2384 (music "accidentals--1")))
2389 \property Score.BarNumber \override #'padding = #3
2390 \context StaffGroup = woodwind <
2391 \context Staff = flauti <
2392 \property Staff.midiInstrument = #"flute"
2393 \property Staff.instrument = "2 Flauti"
2394 \property Staff.instr = "Fl."
2396 \context Voice=one @{ \voiceOne \flautoI @}
2397 \context Voice=two @{ \voiceTwo \flautoII @}
2400 \context StaffGroup = timpani <
2401 \context Staff = timpani <
2402 \property Staff.midiInstrument = #"timpani"
2403 \property Staff.instrument = #'(lines "Timpani" "(C-G)")
2404 \property Staff.instr = #"Timp."
2410 \context StaffGroup = brass <
2411 \context Staff = trombe <
2412 \property Staff.midiInstrument = #"trumpet"
2413 \property Staff.instrument = #`(lines "2 Trombe" "(C)")
2414 \property Staff.instr = #`(lines "Tbe." "(C)")
2416 \context Voice=one \partcombine Voice
2417 \context Thread=one \tromboI
2418 \context Thread=two \tromboII
2420 \context Staff = corni <
2421 \property Staff.midiInstrument = #"french horn"
2422 \property Staff.instrument = #`(lines "Corno"
2423 (columns "(E" ,text-flat ")"))
2424 \property Staff.instr = #`(lines "Cor."
2425 (columns "(E" ,text-flat ")"))
2426 \property Staff.transposing = #3
2427 \notes \key bes \major
2428 \context Voice=one \corno
2433 indent = 15 * \staffspace
2434 linewidth = 60 * \staffspace
2435 textheight = 90 * \staffspace
2437 \HaraKiriStaffContext
2446 @center @strong{Zo, goed lieverd?}
2448 @center How's, this babe?
2456 @lilypondfile{os-score.ly}
2460 \include "os-music.ly"
2462 First, we need to include the music definitions we made in
2467 #(set! point-and-click line-column-location)
2470 This piece of Scheme code sets the Scheme variable
2471 @code{point-and-click} to the value @var{line-column-location} (which
2472 itself is a Scheme procedure).
2474 Editing input files can be complicated if you're working with large
2475 files: if you're digitizing existing music, you have to synchronize
2476 the .ly file, the sheet music on your lap and the sheet music on the
2477 screen. The point-and-click mechanism makes it easy to find the
2478 origin of an error in the LY file: when you view the file with Xdvi
2479 and click on a note, your editor will jump to the spot where that note
2480 was entered. For more information, see @ref{Point and click}.
2485 #(define text-flat '((font-relative-size . -2)
2486 (music "accidentals--1")))
2489 When naming the tuning of the french horn, we'll need a piece of text
2490 with a flat sign. LilyPond has a mechanism for font selection and
2491 kerning called Scheme markup text (See @ref{Text markup}). The flat
2492 sign is taken from the music font, and its name is @code{accidentals--1}
2493 (The natural sign is called @code{accidentals-0}). The default font is
2494 too big for text, so we select a relative size of @code{-2}.
2501 Of course, all staves are simultaneous and use the same global settings.
2505 \property Score.BarNumber \override #'padding = #3
2507 LilyPond prints bar numbers at the start of each line, but
2508 unfortunately, they end up a bit too close to the staff in this
2509 example. A bar number internally is a Grob called @var{BarNumber}.
2510 BarNumber Grobs can be manipulated through their
2511 @var{side-position-interface}. One of the properties of a
2512 @var{side-position-interface} that can be tweaked is the
2513 @var{padding}: the amount of extra space that is put between this Grob
2514 and other Grobs. We set the padding to three staff spaces.
2516 You can find information on all these kind of properties in LilyPond's
2517 automatically generated documentation in
2519 @ref{ (lilypond-internals)lilypond-internals, LilyPond Internals}.
2522 the online documentation.
2527 \context StaffGroup = woodwind <
2528 \context Staff = flauti <
2530 A new notation context: the @code{StaffGroup}. @code{StaffGroup} can
2531 hold one or more @code{Staff}'s, and will print a big bracket at the
2532 left of the score. Start a new staff group for the woodwind section
2533 (just the flutes in this case). Immediately after that, we start the
2534 staff for the two flutes, that also play simultaneously.
2538 \property Staff.midiInstrument = #"flute"
2540 Specify the instrument for MIDI output (see @ref{MIDI instrument
2545 \property Staff.instrument = "2 Flauti"
2546 \property Staff.instr = "Fl."
2548 And define the instrument names to be printed in the margin,
2549 @code{instrument} for the first line of the score, @code{instr} for the
2556 The flutes play in the default key.
2560 \context Voice=one @{ \voiceOne \flautoI @}
2561 \context Voice=two @{ \voiceTwo \flautoII @}
2563 Last come the actual flute parts. Remember that we're still in
2564 simultaneous mode. We name both voices differently, so that LilyPond
2565 will actually create two Voice contexts. The flute parts are simple, so
2566 we specify manually which voice is which: @code{\voiceOne} forces the
2567 direction of stems, beams, slurs and ties up, @code{\voiceTwo} sets
2575 Close the flutes staff and woodwind staff group.
2579 \property Staff.instrument = #'(lines "Timpani" "(C-G)")
2581 The timpani staff only shows a new piece of scheme markup, it sets two
2586 \context Voice=one \partcombine Voice
2587 \context Thread=one \tromboI
2588 \context Thread=two \tromboII
2590 You have seen the notation contexts Staff and Voice, but here's a new
2591 one: Thread. One or more Threads can be part of a Voice. The Thread
2592 takes care of note heads and rests, the Voice combine note heads onto a
2595 For the trumpets we use the automatic part combiner (see @ref{Automatic
2596 part combining}) to combine the two simultaneous trumpet parts onto the
2597 trumpet staff. Each trumpet gets its own Thread context, which must be
2598 named @code{one} and @code{two}). The part combiner makes these two
2599 threads share a Voice when they're similar, and splits the threads up
2600 when they're different.
2604 \property Staff.instrument = #`(lines "Corno"
2605 (columns "(E" ,text-flat ")"))
2607 The french horn has the most complex scheme markup name, made up of two
2608 lines of text. The second line has three elements (columns), the @code{(E},
2609 the flat sign @code{text-flat} that we defined before and a final @code{")"}.
2610 Note that we use a backquote instead of an ordinary quote at the
2611 beginning of the Scheme expression to be able to access the
2612 @code{text-flat} identifier, `unquoting' it with a @code{,}.
2616 \property Staff.transposing = #3
2618 The french horn is to be tuned in E-flat, so we tell the MIDI backend to
2619 transpose this staff by three steps.
2621 Note how we can choose different tuning for entering, printing and
2622 playing, using @code{\transpose} and the MIDI Staff property
2627 \notes \key bes \major
2629 Therefore, it has a different key.
2633 indent = 15 * \staffspace
2634 linewidth = 60 * \staffspace
2636 We specify a big indent for the first line and a small linewidth for this
2641 Usually, LilyPond's predefined setup of notation contexts (Thread,
2642 Voice, Staff, Staffgroup, Score) is just fine. But in this case, we
2643 want a different type of Staff context.
2647 \HaraKiriStaffContext
2651 In orchestral scores, it often happens that one instrument has only
2652 rests during one line of the score. The @code{HaraKiriStaffContext} can
2653 be used as a regular @code{StaffContext} drop-in and will take care of
2654 the automatic removing of empty staves.
2656 @node Extracting an individual part
2657 @subsection Extracting an individual part
2659 The third file, @file{os-flute-2.ly} also reads the definitions of the
2660 first (@file{os-music.ly}), and defines the @code{\score} block for the
2664 \include "os-music.ly"
2665 \include "paper16.ly"
2669 \property Score.skipBars = ##t
2670 \property Staff.midiInstrument = #"flute"
2676 instrument = "Flauto II"
2679 linewidth = 80 * \staffspace
2680 textheight = 200 * \staffspace
2688 @center @strong{Zo, goed lieverd?}
2690 @center How's, this babe?
2691 @center @emph{Flauto II}
2698 @lilypondfile{os-flute-2.ly}
2701 Because we separated the music definitions from the @code{\score}
2702 instantiations, we can easily define a second score with the music of
2703 the second flute. This then is the part for the second flute player.
2704 Of course, we make separate parts for all individual instruments.
2710 In this individual part the second flute has a whole staff for itself,
2711 so we don't want to force stem or tie directions.
2716 instrument = "Flauto II"
2719 The @code{\header} definitions were also read from @file{os-music.ly},
2720 but we need to set the instrument for this particular score.
2724 \property Score.skipBars = ##t
2726 In the conductor's full score, all bars with rests are printed, but for
2727 the individual parts, we want to contract pieces of consecutive empty
2728 bars. LilyPond will do this if Score's @var{skipBars} property to
2732 @node Integrating text and music
2733 @section Integrating text and music
2735 Sometimes, you might want to use music examples in a text that you are
2736 writing. For example, if you are writing a musicological treatise, a
2737 songbook, or (like us) the LilyPond manual. You can make such texts by
2738 hand, simply by importing a PostScript figure into your wordprocessor.
2739 However, there is a also an automated procedure:
2741 If you use HTML, La@TeX{} or texinfo, you can mix text and LilyPond
2742 code. A script called @code{lilypond-book} will extract the music
2743 fragments, run LilyPond on them, and put back the resulting notation.
2744 This utility program is described fully in the chapter @ref{Insert
2745 music snippets into your texts using lilypond-book}. Here we show a
2746 small example. Since the example also contains explanatory text, we
2747 won't comment on the contents.
2750 \documentclass[a4paper]@{article@}
2753 In a lilypond-book document, you can freely mix music and text. For
2756 \score @{ \notes \relative c' @{
2757 c2 g'2 \times 2/3 @{ f8 e d @} c'2 g4
2760 Notice that the music line length matches the margin settings of the
2763 If you have no \verb+\score+ block in the fragment,
2764 \texttt@{lilypond-book@} will supply one:
2770 In the example you see here, a number of things happened: a
2771 \verb+\score+ block was added, and the line width was set to natural
2772 length. You can specify many more options using \LaTeX style options
2775 \begin[verbatim,11pt,singleline,
2776 fragment,relative,intertext="hi there!"]@{lilypond@}
2780 \texttt@{verbatim@} also shows the LilyPond code, \texttt@{11pt@} selects
2781 the default music size, \texttt@{fragment@} adds a score block,
2782 \texttt@{relative@} uses relative mode for the fragment, and
2783 \texttt@{intertext@} specifies what to print between the
2784 \texttt@{verbatim@} code and the music.
2786 If you include large examples into the text, it may be more convenient
2787 to put the example in a separate file:
2789 \lilypondfile[printfilename]@{sammartini.ly@}
2791 The \texttt@{printfilename@} option adds the file name to the output.
2796 Under Unix, you can view the results as follows.
2799 $ lilypond-book --outdir=out/ lilbook.tex
2800 lilypond-book (GNU LilyPond) 1.3.146
2801 Reading `input/tutorial/lilbook.tex'
2802 Reading `input/tutorial/sammartini.ly'
2803 @var{lots of stuff deleted}
2804 Writing `out/lilbook.latex'
2806 $ latex lilbook.latex
2807 @var{lots of stuff deleted}
2811 Notice the @code{outdir} option to lilypond-book. Running lilypond-book
2812 and running latex creates a lot of temporary files, and you wouldn't want
2813 those to clutter up your working directory. Hence, we have them created
2814 in a separate subdirectory.
2816 The result more or less looks like this:
2820 In a lilypond-book document, you can freely mix music and text. For
2823 \score { \notes \relative c' {
2824 c2 g'2 \times 2/3 { f8 e d } c'2 g4
2827 Notice that the music line length matches the margin settings of the
2830 If you have no @code{\score} block in the fragment,
2831 @code{lilypond-book} will supply one:
2837 In the example you see here, a number of things happened: a
2838 @code{\score} block was added, and the line width was set to natural
2839 length. You can specify many more options using La@TeX{} style options
2842 @lilypond[verbatim,11pt,singleline,
2843 fragment,relative,intertext="hi there!"]
2847 @code{verbatim} also shows the LilyPond code, @code{11pt} selects
2848 the default music size, @code{fragment} adds a score block,
2849 @code{relative} uses relative mode for the fragment, and
2850 @code{intertext} specifies what to print between the
2851 @code{verbatim} code and the music.
2853 If you include large examples into the text, it may be more convenient
2854 to put the example in a separate file:
2856 @lilypondfile[printfilename]{sammartini.ly}
2858 The @code{printfilename} option adds the file name to the output.
2859 @node End of tutorial
2860 @section End of tutorial
2862 This is the end of the tutorial. If you came up till here, and
2863 have understood everything, then you're now an accomplished lilypond
2864 hacker. From here, you can try fiddling with input
2865 files, coming back to the reference manual for information.
2866 Also don't forget to check out the
2868 @uref{../../templates/out-www/templates.html,templates},
2869 @uref{../../test/out-www/test.html,example} and
2870 @uref{../../regression/out-www/regression.html,feature test}
2874 templates, example and feature test snippets.
2876 If you want to see real action lilypond, then head over to
2877 @uref{http://www.mutopiaproject.org}, which has many examples of
2878 classical music typeset by LilyPond.