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
28 * End of tutorial:: The end
31 Operating lilypond is done through text files: To print a piece of
32 music, you enter the music in a file. When you run lilypond (normally
33 using the program @code{ly2dvi}) on that file, the program produces
34 another file which contains sheet music that you can print or view.
36 This tutorial starts with a small introduction to the LilyPond music
37 language. After this first contact, we will show you how to run
38 LilyPond to produce printed output; you should then be able to create
39 your first sheets of music. The tutorial continues with more and more
46 We start off by showing how very simple music is entered in LilyPond:
47 you get a note simply by typing its @htmlref{note name}, from @samp{a}
48 through @samp{g}. So if you enter
55 then the result looks like this:
58 \property Score.timing = ##f
59 \transpose c'' { c d e f g a b }
62 We will continue with this format: First we show a snippet of input,
63 then the resulting output.
65 The length of a note is specified by adding a number, @samp{1} for a
66 @rglos{whole note}, @samp{2} for a @rglos{half note}, and so on:
73 \property Score.timing = ##f
74 \property Staff.autoBeaming = ##f
75 \transpose c'' { a1 a2 a4 a16 a32 s16_" " }
78 If you don't specify a @rglos{duration}, the previous one is used:
85 \property Score.timing = ##f
86 \transpose c'' { a a a2 a s16_" " }
89 A @rglos{sharp} (@texisharp{}) is made by adding @samp{is}, a
90 @rglos{flat} (@texiflat{}) by adding @samp{es}. As you would expect,
91 a @rglos{double sharp} or @rglos{double flat} is made by adding
92 @samp{isis} or @samp{eses}:
99 \property Score.timing = ##f
100 \transpose c'' { cis1 ees fisis aeses s16_" " }
103 Add a dot @samp{.} after the duration to get a @rglos{dotted note}:
110 \property Score.timing = ##f
111 \transpose c'' { a2. a4 a8. a16 s16_" " }
114 The @rglos{meter} (or @rglos{time signature}) can be set with the
115 @code{\time} command:
123 @c a clef here may lead to confusion
125 \property Staff.Clef \set #'transparent = ##t
134 The @rglos{clef} can be set using the @code{\clef} command:
136 @c what is more common name treble or violin?
137 @c in Dutch, its violin.
138 @c in English its definitely treble.
147 \property Score.timing = ##f
158 When you enter these commands in a file, you must to enclose them in
159 @code{\notes @{@dots{}@}}. This lets LilyPond know that music (and
160 not @rglos{lyrics}, for example) follows:
171 Now the piece of music is almost ready to be printed. The final step is to
172 combine the music with a printing command.
174 The printing command is the so-called @code{\paper} block. Later on
175 you will see that the @code{\paper} block is used to customize
176 printing specifics. The music and the @code{\paper} block are combined by
177 enclosing them in @code{\score @{ ... @}}. This is what a full
178 LilyPond source file looks like:
201 linewidth = 55 * \staffspace
207 @node Running LilyPond
208 @section Running LilyPond
210 In the last section we explained what kind of things you could enter
211 in a lilypond file. In this section we explain how to run LilyPond
212 and how to view or print the output. If you have not used LilyPond
213 before, want to test your setup of LilyPond, or want to run an example
214 file yourself, read this section. The instructions that follow
215 are for running LilyPond on Unix-like systems. Some additional
216 instructions for running LilyPond on Windows are given at the end of
219 Begin by opening a terminal window and starting a text editor.
220 For example, you could open an xterm and execute @code{joe}. In your
221 text editor, enter the following input and save the file as
227 \notes @{ c'4 e' g' @}
234 @c now this is weird, running ly2dvi to run LilyPond
235 @c (therefore name change proposal)
237 LilyPond is the program that computes the sheet music. All other
238 things, such as adding titles, page breaking and other page layout,
239 are done by a small wrapper program called
240 @code{ly2dvi}. @code{ly2dvi} calls lilypond to render the music, and
241 then adds the titling and page layout instructions. To process
242 @file{test.ly} with @code{ly2dvi}, proceed as follows:
250 You will see the following on your screen:
255 Now processing: `/home/fred/ly/test.ly'
257 Interpreting music...[1]
258 @emph{ ... more interesting stuff ... }
259 PS output to `test.ps'...
260 DVI output to `test.dvi'...
264 @cindex Viewing music
267 The results of the ly2dvi run are two files, @file{test.dvi} and
268 @file{test.ps}. The PS file (@file{test.ps}) is the one you can print.
269 You can view the PS file using the program ghostview. If a version of
270 ghostview is installed on your system, one of these commands will
271 produce a window with some music notation on your screen:
281 If the music on your screen looks good, you can print it by clicking
282 File/Print inside ghostview.
284 The DVI file (@file{test.dvi}) contains the same sheet music in a
285 different format. DVI files are more easily processed by the computer,
286 so viewing them usually is quicker. You can run @code{xdvi test.dvi} or
287 @code{kdvi test.dvi} to view the DVI file. In Xdvi, the mouse burtons
288 activate magnifying glasses. Unfortunately, variable symbols (such as
289 beams and slurs) are not displayed in the magnifying glasses.
291 If your DVI viewer does not have a "Print" button, you can print the
292 file by executing @code{lpr test.ps}.
294 @c volgende alinea schrappen?
296 If your system does not support printing PostScript files, then you
297 can install Ghostscript, a PostScript emulator. Refer to
298 Ghostscript's website at @uref{http://www.ghostscript.com}.
302 @cindex Printing output
306 A final option is to use the popular PDF format. You can get a PDF
307 file by running @code{ly2dvi --pdf test.ly}. With @code{--pdf}
308 you will get DVI, PS and PDF files. Viewers for PS files also
309 accept PDF files, but there are also many other applications for
312 If you are familiar with @TeX{}, be warned: do not use other
313 DVI drivers like @code{dvilj}. The @TeX{} coming out of LilyPond
314 uses embedded PostScript code and will not render correctly if
315 you use anything other than @code{dvips}.
321 @unnumberedsubsec Windows users
322 Windows users can start the terminal by clicking on the LilyPond or
323 Cygwin icon. You can use any text editor (such as NotePad, Emacs or
324 Vim) to edit the LilyPond file. If you install the Cygwin's
325 @code{XFree86} X11 window system, @code{tetex-x11} and
326 @code{ghostscript-x11} packages too, you can view the @code{dvi}
327 output doing @code{xdvi test.dvi} as described above. If you have
328 installed a PostScript/PDF viewer, such as @code{GSView} from
329 @uref{http://www.cs.wisc.edu/~ghost}, viewing the PS file can be done
333 @code{gsview32 test.ps}
336 You can also print from the command line by executing:
339 @code{gsview32 /s test.ps}
346 To run LilyPond, input a text file, then run the command @code{ly2dvi} on
347 that file. The resulting files are either DVI or PostScript, and can
348 be viewed with @code{xdvi} (unix) and ghostview (unix and windows)
349 respectively. The following table summarizes the constructs that were
350 discussed in the previous two sections.
352 @multitable @columnfractions .3 .3 .4
358 @item @code{1 2 8 16}
361 @lilypond[relative 1, noquote, notime]
362 \property Staff.autoBeaming = ##f
363 \property Staff.Clef = \turnOff
368 @tab augmentation dots
370 @lilypond[relative 1, noquote, notime]
371 \property Staff.Clef = \turnOff
375 @item @code{c d e f g a b }
378 @lilypond[relative 1, noquote, notime]
379 \property Staff.Clef = \turnOff
383 @item @code{\clef treble \clef bass }
386 @lilypond[noquote, notime]
393 @item @code{\time 3/4 \time 4/4 }
397 \property Staff.Clef \set #'transparent = ##t
410 We continue with the introduction of the remaining musical constructs.
411 Normal rests are entered just like notes with the name ``@code{r}'':
419 \property Score.timing = ##f
420 \property Staff.Clef = \turnOff
421 \property Staff.TimeSignature = \turnOff
428 @c Tim wants to move this quotes example just before the: quotes-don't-work
429 @c score, but we'd need to remove quotes from the other two (key and
432 @c better to have this just before the `octaves are bad' snipped
433 @c but we'd need to remove the ', from \key and tie
434 To raise a note by an octave, add a high quote @code{'} (apostrophe) to
435 the note name, to lower a note one octave, add a ``low quote'' @code{,}
436 (a comma). Middle C is @code{c'}:
440 c'4 c'' c''' \clef bass c c,
444 \property Score.timing = ##f
445 \property Staff.TimeSignature = \turnOff
446 c'4 c'' c''' \clef bass c c,
451 A tie is created by entering a tilde ``@code{~}'' between the notes to
452 be tied. A tie between two notes means that the second note must not be
453 played separately; it just makes the first note sound longer:
456 @lilypond[fragment,verbatim]
462 The key signature is set with the command ``@code{\key}''. One caution:
463 you need to specify whether the key is @code{\major} or @code{\minor}.
473 \property Staff.TimeSignature = \turnOff
482 @c bit on the long/complex/scary taste
483 @c cheating a bit: two lines makes for a friendlier look
484 This example shows notes, ties, octave marks, and rests in action.
493 r4 r8 d''8 cis''4 e''
495 cis''4 cis''8 cis'' bis'4 d''8 cis'' ~
508 r4 r8 d''8 cis''4 e''
510 cis''4 cis''8 cis'' bis'4 d''8 cis'' ~
513 \paper { linewidth = 50*\staffspace }
519 There are some interesting points to note in this example.
520 Accidentals (sharps and flats) don't have to be marked explicitly: you
521 just enter the note name, and LilyPond determines whether or not to
522 print an accidental. Bar lines and beams are drawn automatically.
523 LilyPond calculates line breaks for you; it doesn't matter where you
524 make new lines in the source file. Finally, the order of time, key and
525 clef changes is not relevant: lilypond will use standard notation
526 conventions for ordering these items.
528 The example also indicates that a piece of music written in a high
529 register needs lots of quotes. This makes the input less readable,
530 and is also a potential source of errors.
532 The solution is to use ``relative octave'' mode. In practice, this is
533 the most convenient way to copy existing music. To use relative mode,
534 add @code{\relative} before the piece of music. You must also give a
535 note from which relative starts, in this case @code{c''}. If you don't
536 use octavation quotes (ie don't add ' or , after a note), relative mode
537 chooses the note that is closest to the previous one. Since most music
538 has small intervals, you can write quite a lot in relative mode without
539 using octavation quotes.
540 @c don't use commas or quotes in this sentence
541 For example: @code{c f} goes up; @code{c g} goes down:
551 \property Score.timing = ##f
552 \property Staff.TimeSignature = \turnOff
561 @c needed better, maybe even redundant explanation
562 @c added another example below.
563 @c grappig: Pa vond het heel logies, en slim toen-i eenmaal begreep.
564 @c in eerste instantie drong het `relative' niet door zonder extra uitleg.
565 You can make larger intervals by adding octavation quotes. Note that
566 quotes or commas do not determine the absolute height of a note;
567 the height of a note is relative to the previous one.
568 @c don't use commas or quotes in this sentence
569 For example: @code{c f,} goes down; @code{f, f} are both the same;
570 @code{c' c} are the same; and @code{c g'} goes up:
580 \property Score.timing = ##f
581 \property Staff.TimeSignature = \turnOff
590 Here's an example of the difference between relative mode and
591 ``normal'' (non-relative) mode:
602 \property Score.timing = ##f
603 \property Staff.TimeSignature = \turnOff
619 \property Score.timing = ##f
620 \property Staff.TimeSignature = \turnOff
629 The following table summarizes the syntax learned so far in this section.
631 @c Is it possible to avoid page breaks directly after the
634 @multitable @columnfractions .3 .3 .4
643 @lilypond[relative 1, noquote, notime]
644 \property Staff.Clef = \turnOff
651 @lilypond[relative 1, noquote, notime]
652 \property Score.timing = ##f
653 \property Staff.autoBeaming = ##f
654 \property Staff.Clef = \turnOff
658 @item @code{\key es \major }
661 @lilypond[noquote, notime]
667 @item @var{note}@code{'}
670 @lilypond[relative 1, noquote, notime]
671 \property Score.timing = ##f
672 \property Staff.autoBeaming = ##f
673 \property Staff.Clef = \turnOff
677 @item @var{note}@code{,}
680 @lilypond[relative 1, noquote, notime]
681 \property Score.timing = ##f
682 \property Staff.autoBeaming = ##f
683 \property Staff.Clef = \turnOff
689 A slur is drawn across many notes, and indicates bound articulation
690 (legato). The starting note and ending note are marked with a
691 ``@code{(}'' and a ``@code{)}'' respectively:
694 @lilypond[fragment,relative 1, verbatim]
695 d4( )c16( cis d e c cis d )e( )d4
700 If you need two slurs at the same time (one for articulation, one for
701 phrasing), you can also make a phrasing slur with @code{\(} and
706 @c fragment of 1st hrn in Adams' The Chairman Dances, with creative
707 @c chromatic thing pasted in front. (admittedly the original doesn't
708 @c have a phrasing slur. The problem is that we don't want the slur
709 @c and the Phrasing slur to collide. We're trying to make a good
713 @lilypond[fragment,relative 1, verbatim]
714 a8(\( ais b ) c cis2 b'2 a4 cis, \) c
719 Beams are drawn automatically, but if you don't like the choices, you
720 can enter beams by hand. Surround the notes to be grouped with @code{[}
723 @lilypond[fragment,relative 1, verbatim]
729 To print more than one staff, each piece of music that makes up a staff
730 is marked by adding @code{\context Staff} before it. These
731 @code{Staff}'s are then grouped inside @code{<} and @code{>}, as is
735 @lilypond[fragment,verbatim]
737 \context Staff = staffA { \clef violin c'' }
738 \context Staff = staffB { \clef bass c }
743 In this example, @code{staffA} and @code{staffB} are names that are
744 given to the staves. It doesn't matter what names you give, as long
745 as each staff has a different name.
749 We can now typeset a melody with two staves:
752 @lilypond[verbatim,singleline]
755 < \context Staff = staffA {
758 \relative c'' { e2 ( d4 c2 b4 [a8 a] [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 following
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]
813 @c hmm, te losjes, iig
814 In general, @code{ < @var{stuff} > } is used when @var{stuff} all
815 happens at the same time, like in chords, or (like in the two-staff
816 example above) in a bunch of stacked staves.
819 You can combine beams and ties with chords. Beam and tie markings
820 must be placed outside the chord markers:
822 @lilypond[relative 0, fragment,verbatim]
823 r4 [<c8 e g> <c8 f a>] ~ <c8 f a>
827 When you want to combine chords with slurs and dynamics, technical
828 detail crops up: you have type these commands next to the notes, which
829 means that they have to be inside the @code{< >}. Don't get confused
830 by the chord @code{< >} and the dynamic @code{\< \>}!
835 r4 <c8 e g \> ( > <c e g> <c e g> < ) \! c8 f a>
837 @lilypond[relative 0, fragment]
839 r4 <c8 e g \> ( > <c e g> <c e g> < ) \! c8 f a>
844 @c this example is a bit too strongly worded -- there's nothing wrong
845 @c with starting a piece with a chord; you just have to be careful when
846 @c you do so. I've rephrased this example below.
847 @c There is one golden rule that you should keep in mind when writing
850 @c @strong{DO NOT START A PIECE WITH A CHORD}
852 @c Of course, it is a allowed, but the result might not be what you expect:
854 @c rephrased "don't start with a chord"
855 There is one caution when using chords: if you use a chord at the very
856 beginning of the piece, LilyPond might not understand what you want:
859 @lilypond[verbatim,singleline]
860 \score { \notes <c'2 e'2> }
865 If you have a piece that begins with a chord, you must explicitly
866 state that the notes of the chord are to be put on the same staff, in
867 the same voice. This is done by specifying @code{\context Staff} or
868 @code{\context Voice} for the notes:
871 @lilypond[verbatim,singleline]
872 \score { \notes \context Voice <c'2 e'2> }
880 @multitable @columnfractions .3 .3 .4
890 @lilypond[fragment, relative 1]
891 \property Score.timing = ##f
892 \property Staff.TimeSignature = \turnOff
893 \property Staff.autoBeaming = ##f
894 \property Staff.Clef = \turnOff
902 @lilypond[fragment, relative 1]
903 \property Score.timing = ##f
904 \property Staff.TimeSignature = \turnOff
905 \property Staff.autoBeaming = ##f
906 \property Staff.Clef = \turnOff
914 @lilypond[fragment, relative 1]
915 \property Score.timing = ##f
916 \property Staff.TimeSignature = \turnOff
917 \property Staff.autoBeaming = ##f
918 \property Staff.Clef = \turnOff
923 @item @code{< \context Staff ... >}
927 < \context Staff = SA { c'1 }
928 \context Staff = SB { c'1 } >
935 @lilypond[fragment, relative 1]
936 \property Staff.TimeSignature = \turnOff
937 \property Staff.Clef = \turnOff
942 @item @code{-\mf -\sfz}
945 @lilypond[fragment, relative 1]
946 \property Staff.TimeSignature = \turnOff
947 \property Staff.Clef = \turnOff
955 @lilypond[fragment, relative 1]
956 \property Score.timing = ##f
957 \property Staff.TimeSignature = \turnOff
958 \property Staff.autoBeaming = ##f
959 \property Staff.Clef = \turnOff
966 @lilypond[fragment, relative 1]
967 \property Score.timing = ##f
968 \property Staff.TimeSignature = \turnOff
969 \property Staff.autoBeaming = ##f
970 \property Staff.Clef = \turnOff
978 @lilypond[fragment, relative 1]
984 Now you know the basic ingredients of a music file, so this is the right
985 moment to try your at hand at doing it yourself: try typing some
986 simple examples, and experiment a little.
988 When you're comfortable with the basics, you might want to read
989 the rest of this chapter. It continues in tutorial-style, but it
990 is much more in-depth, dealing with more advanced topics such as
991 lyrics, chords, orchestral scores and parts, fine tuning of output,
992 polyphonic music, and integrating text and music.
998 @node Printing lyrics
999 @section Printing lyrics
1002 In this section we shall explain how to typeset the following
1003 fragment of The Free Software Song:
1005 @lilypond[singleline]
1006 \score { \notes { \addlyrics
1007 \notes \relative c' {
1009 d'2 c4 b16 ( a g a b a b ) c a2
1010 b2 c4 b8 ( a16 g ) a4 g2 }
1011 \context Lyrics \lyrics {
1013 share the soft -- ware; }
1015 \paper { linewidth = -1. }
1021 @cindex @code{\lyrics}
1024 To print lyrics, you must enter them and then instruct lilypond to
1026 You can enter lyrics in a special input mode of LilyPond. This mode is
1027 called Lyrics mode, and it is introduced by the keyword @code{\lyrics}.
1028 The purpose of this mode is that you can enter lyrics as plain text,
1029 punctuation, and accents without any hassle.
1031 Syllables are entered like notes, but with pitches replaced by text. For
1032 example, @code{Twin- kle twin- kle} enters four syllables. Note that
1033 the hyphen has no special meaning for lyrics, and does not introduce
1036 Spaces can be introduced into a lyric either by using quotes:
1037 @code{"He could" not} or by using an underscore without quotes:
1038 @code{He_could not}. All unquoted underscores are converted to
1041 These are the lyrics for the free software song:
1046 share the soft -- ware; @}
1049 As you can see, extender lines are entered as @code{__}. This will
1050 create an extender, which is a line that extends over the entire
1051 duration of the lyric. This line will run all the way to the start
1052 of the next lyric, so you may want to shorten it by using a blank
1053 lyric (using @code{_}).
1056 You can use ordinary hyphens at the end of a syllable, i.e.
1060 but then the hyphen will be attached to the end of the first syllable.
1062 If you want them centered between syllables you can use the special
1063 `@code{-}@code{-}' lyric as a separate word between syllables. The
1064 hyphen will have variable length depending on the space between
1065 the syllables and it will be centered between the syllables.
1067 Normally the notes that you enter are transformed into note heads.
1068 Note heads alone make no sense, so they need surrounding information: a
1069 key signature, a clef, staff lines, etc. They need @emph{context}. In
1070 LilyPond, these symbols are created by objects called `interpretation
1071 contexts'. Interpretation contexts exist for generating notation
1072 (`notation context') and for generating sound (`performance
1073 context'). These objects only exist while LilyPond is executing.
1075 When LilyPond interprets music, it will create a Staff context.
1076 We don't want that default here, because we want lyric. The
1081 explicitly creates an interpretation context of
1082 @code{Lyrics} type to interpret the song text that we entered.
1084 The melody of the song doesn't offer anything new:
1086 \notes \relative c' @{
1088 d'2 c4 b16 ( a g a b a b ) c a2
1089 b2 c4 b8 ( a16 g ) a4 g2 @}
1092 Both can be combined with the @code{\addlyrics}:
1095 \notes \relative c' @dots{}
1096 \context Lyrics \lyrics @dots{}
1099 The lyrics are also music expressions, similar to notes. Each syllable
1100 of the lyrics is put under a note of the melody.
1101 The complete file is listed here:
1104 \score @{ \notes @{ \addlyrics
1105 \notes \relative c' @{
1107 d'2 c4 b16 ( a g a b a b ) c a2
1108 b2 c4 b8 ( a16 g ) a4 g2 @}
1109 \context Lyrics \lyrics @{
1111 share the soft -- ware; @}
1113 \paper @{ linewidth = -1. @}
1119 @node A melody with chords
1120 @section A melody with chords
1122 In this section we show how to typeset a melody with chord
1123 accompaniment. This file is included as @file{input/tutorial/flowing.ly}.
1126 \include "paper16.ly"
1127 melody = \notes \relative c' @{
1131 c4 c8 d [es () d] c4 | f4 f8 g [es() d] c g |
1132 c4 c8 d [es () d] c4 | d4 es8 d c4.
1136 accompaniment =\chords @{
1138 c2:3- f:3-.7 d:min es4 c8:min r8
1139 c2:min f:min7 g:7^3.5 c:min @}
1144 \context ChordNames \accompaniment
1145 \context Staff = mel @{
1150 \midi @{ \tempo 4=72 @}
1151 \paper @{ linewidth = 10.0\cm @}
1156 The result would look this.
1159 \include "paper16.ly"
1160 melody = \notes \relative c' {
1164 c4 c8 d [es () d] c4 | f4 f8 g [es() d] c g |
1165 c4 c8 d [es () d] c4 | d4 es8 d c4.
1169 accompaniment =\chords {
1171 c2:3- f:3-.7 d:min es4 c8:min r8
1172 c2:min f:min7 g:7^3.5 c:min }
1177 \context ChordNames \accompaniment
1179 \context Staff = mel {
1180 \property Staff.autoBeaming = ##f
1184 \midi { \tempo 4=72 }
1185 \paper { linewidth = 10.0\cm }
1189 We will dissect this file line by line.
1194 \include "paper16.ly"
1197 Smaller size (suitable for inclusion in a book).
1201 melody = \notes \relative c' @{
1204 The structure of the file will be the same as the previous one: a
1205 @code{\score} block with music in it. To keep things readable, we will
1206 give different names to the different parts of music, and use the names
1207 to construct the music within the score block.
1214 @cindex @code{\partial}
1216 The piece starts with an anacrusis (or ``pickup'') of one eighth.
1222 c4 c8 d [es () d] c4 | f4 f8 g [es() d] c g |
1223 c4 c8 d [es () d] c4 | d4 es8 d c4.
1228 @cindex manual beaming
1229 @cindex automatic beaming, turning off
1230 We use explicit beaming. Since this is a song, we turn automatic
1231 beams off and use explicit beaming where needed.
1238 This ends the definition of @code{melody}.
1247 @cindex identifier assignment
1248 @cindex syllables, entering
1249 This defines the lyrics, similar to what we have seen before.
1254 accompaniment =\chords @{
1258 @cindex mode, chords
1259 We'll put chords over the music. To enter them, we use a special mode
1260 analogous to @code{\lyrics} and @code{\notes} mode, where you can give
1261 the names of the chords you want instead of listing the notes
1262 comprising the chord.
1269 There is no accompaniment during the anacrusis.
1278 @cindex chord modifier
1279 @cindex modifier, chord
1280 This is a c minor chord, lasting for a half note. Chords are entered using
1281 the tonic. Notes can be changed to create different chords. In this case,
1282 a lowered third is used (making a C major chord into a C minor chord).
1283 The code for this is @code{3-}.
1289 Similarly, @code{7} modifies (adds) a seventh, which is small by
1290 default to create the @code{f a c es} chord. Multiple modifiers must be
1298 Some modifiers have predefined names, e.g. @code{min} is the same as
1299 @code{3-}, so @code{d-min} is a minor @code{d} chord.
1303 c2:min f:min7 g:7^3.5 c:min @}
1306 @cindex named modifier
1308 A named modifier @code{min} and a normal modifier @code{7} do not have
1309 to be separated by a dot. Tones from a chord are removed with chord
1310 subtractions. Subtractions are started with a caret, and they are
1311 also separated by dots. In this example, @code{g:7^3.5} produces a
1312 minor seventh (a G7 chord without the third or the fifth). The
1313 brace ends the sequential music.
1321 We assemble the music in the @code{\score} block. Melody, lyrics and
1322 accompaniment have to sound at the same time, so they should be
1323 @code{\simultaneous}.
1324 @cindex @code{\simultaneous}
1331 Chord mode generates notes grouped in @code{\simultaneous} music. If
1332 you remove the comment sign, you can see the chords in normal
1333 notation: they will be printed as note heads on a separate
1334 staff. To print them as chords names, they have to be interpreted as
1335 being chords, not notes. This is done with the following command:
1339 \context ChordNames \accompaniment
1343 @cindex interpretation context
1344 @cindex notation context
1347 Normally the notes that you enter are transformed into note heads.
1348 Note heads alone make no sense, so they need surrounding information: a key
1349 signature, a clef, staff lines, etc. They need @emph{context}. In
1350 LilyPond, these symbols are created by objects called `interpretation
1351 contexts'. Interpretation contexts exist for generating notation
1352 (`notation context') and for generating sound (`performance
1353 context'). These objects only exist while LilyPond is executing.
1355 When LilyPond interprets music, it will create a Staff context. If
1356 the @code{%} sign in the previous line were removed, you could see
1357 that mechanism in action.
1359 We don't want that default here, because we want chord names. The
1360 command above explicitly creates an interpretation context of
1361 @code{ChordNames} type to interpret the music @code{\accompaniment}.
1366 \context Staff = mel @{
1370 We place the melody on a staff called @code{mel}. We give it a name to
1371 differentiate it from the one that would contain note heads for the
1372 chords, if you would remove the comment before the ``note heads''
1373 version of the accompaniment. By giving this staff a name, it is
1374 forced to be different.
1378 \property Staff.autoBeaming = ##f
1382 @cindex context variables
1383 @cindex setting context variables
1384 An interpretation context has variables, called properties, that tune
1385 its behavior. One of the variables is @code{autoBeaming}. Setting
1386 this @code{Staff}'s property to @code{##f}, which is the boolean value
1387 @var{false}, turns the automatic beaming mechanism off for the current
1398 Finally, we put the melody on the current staff. Note that the
1399 @code{\property} directives and @code{\melody} are grouped in sequential
1400 music, so the property settings are done before the melody is
1406 \midi @{ \tempo 4=72@}
1409 MIDI (Musical Instrument Digital Interface) is a standard for
1410 connecting and recording digital instruments. So a MIDI file is like a
1411 tape recording of an instrument. The @code{\midi} block makes the
1412 music go to a MIDI file, so you can listen to the music you entered. It
1413 is great for checking the music. Whenever you hear something weird, you
1414 probably hear a typing error.
1416 Syntactically, @code{\midi} is similar to @code{\paper @{ @}}, since it
1417 also specifies an output method. You can specify the tempo using the
1418 @code{\tempo} command, in this case the tempo of quarter notes is set to
1419 72 beats per minute.
1423 \paper @{ linewidth = 10.0\cm @}
1426 We also want notation output. The linewidth is short so that the piece
1427 will be set in two lines.
1430 @section More stanzas
1435 If you have multiple stanzas printed underneath each other, the vertical
1436 groups of syllables should be aligned around punctuation. LilyPond can
1437 do this if you tell it which lyric lines belong to which melody.
1438 We show how you can do this by showing how you could print a frivolous
1439 fragment of a fictional Sesame Street duet.
1441 @lilypond[singleline,verbatim]
1444 \notes \relative c'' \context Voice = duet { \time 3/4
1446 \lyrics \context Lyrics <
1447 \context LyricsVoice = "duet-1" {
1448 \property LyricsVoice . stanza = "Bert"
1449 Hi, my name is bert. }
1450 \context LyricsVoice = "duet-2" {
1451 \property LyricsVoice . stanza = "Ernie"
1452 Ooooo, ch\'e -- ri, je t'aime. }
1457 To this end, give the Voice context an identity, and set the
1458 LyricsVoice to a name starting with that identity followed by a dash.
1459 In the following example, the Voice identity is @code{duet},
1461 \context Voice = duet @{
1466 identities of the LyricsVoices are @code{duet-1} and @code{duet-2}.
1468 \context LyricsVoice = "duet-1" @{
1469 Hi, my name is bert. @}
1470 \context LyricsVoice = "duet-2" @{
1471 Ooooo, ch\'e -- ri, je t'aime. @}
1474 We add the names of the singers. This can be done by setting
1475 @code{LyricsVoice.Stanza} (for the first system) and
1476 @code{LyricsVoice.stz} for the following systems. Note that you must
1477 surround dots with spaces in @code{\lyrics} mode.
1480 \property LyricsVoice . stanza = "Bert"
1482 \property LyricsVoice . stanza = "Ernie"
1485 The convention for naming @code{LyricsVoice} and @code{Voice} must
1486 also be used to get melismata on rests correct.
1489 @c I think we need to change the name of this section, but that
1490 @c would probably involve a lot of changes in other places too.
1491 @node More movements
1492 @section More movements
1494 The program @code{lilypond} only produces sheet music and does not
1495 create titles, subtitles, or print the composer's name. To do that,
1496 you need to use @code{ly2dvi}, which comes with LilyPond. @code{ly2dvi}
1497 creates the title, then calls @code{lilypond} to format the sheet music.
1498 In this section, we show you how to create titles like this:
1500 @c Old version of the above paragraph.
1501 @c LilyPond only produces sheet music; it doesn't concern itself with
1502 @c producing titles. Titles are produced using a simply wrapper program
1503 @c This is the jobs of a simple wrapper
1504 @c program called ly2dvi. @code{ly2dvi} calls LilyPond to do the
1505 @c sheet music formatting. Then it produces titles, and ties together all
1506 @c inputs into a single @file{dvi} file. In this section, we show some of
1507 @c the options for titling. We will show how you can produce a file
1508 @c that looks like this:
1510 @center @strong{Two miniatures}
1520 \paper { linewidth = -1.0 }
1532 \paper { linewidth = -1.0 }
1536 For example, consider the following file (@file{miniatures.ly})
1541 title = "Two miniatures"
1542 composer = "F. Bar Baz"
1543 tagline = "small is beautiful" @}
1545 \paper @{ linewidth = -1.0 @}
1549 Mental note: discuss Schenkerian analysis of these key pieces.
1554 \notes @{ c'4 d'4 @}
1560 \notes @{ d'4 c'4 @}
1568 The information for the global titling is in a so-called header block.
1569 The information in this block is not used by LilyPond, but it is
1570 passed into @code{ly2dvi}, which uses this information to print titles
1573 @cindex identifier assignment
1574 the @code{\header} block contains assignments. In each assignment, a
1575 variable is set to a value. The header block for this file looks like
1577 @cindex @code{\header}
1580 title = "Two miniatures"
1581 composer = "F. Bar Baz"
1582 tagline = "small is beautiful"
1586 When you process a file with ly2dvi, a signature line is printed at
1587 the bottom of the last page. This signature is produced from the
1588 @code{tagline} field of @code{\header}. The default "Lily was here,
1589 @var{version number}" is convenient for programmers: archiving the
1590 layouts of different versions allows programmers to compare the
1591 versions using old print-outs.
1593 @cindex Lily was here
1594 @cindex signature line
1597 Many people find the default tagline (``Lily was here'') too droll.
1598 If that is the case, you can change @code{tagline} to somethign else,
1607 A paper block at top level (i.e. not in a @code{\score} block) sets the
1608 default page layout. The following @code{\score} blocks don't have
1609 @code{\paper} sections, so the settings of this block are used.
1611 The variable @code{linewidth} normally sets the length of the systems
1612 on the page. However, a negative value has a special meaning. If
1613 @code{linewidth} is less than 0, no line breaks are inserted into the
1614 score, and the spacing is set to natural length: a short phrase takes
1615 up little space, a longer phrase takes more space, all on the same line.
1620 Mental note: discuss Schenkerian analysis of these key pieces.
1625 Mental notes to yourself can be put into comments. There are two types
1626 of comments. Line comments are introduced by @code{%}, and block
1627 comments are delimited by @code{%@{} and @code{%@}}.
1632 \notes @{ c'4 d'4 @}
1635 In previous examples, most notes were specified in relative octaves
1636 (i.e. each note was put in the octave that is closest to its
1637 predecessor). Besides relative, there is also absolute octave
1638 specification, which you get when you don't include @code{\relative} in
1639 your input file. In this input mode, the middle C is denoted by
1640 @code{c'}. Going down, you get @code{c} @code{c,} @code{c,,} etc.
1641 Going up, you get @code{c''} @code{c'''} etc.
1643 When you're copying music from existing sheet music, relative octaves
1644 are probably the easiest to use: you have to do less typing, and errors are
1645 easily spotted. However, if you write LilyPond input directly, either by
1646 hand (i.e. composing) or by computer, absolute octaves may be easier to use.
1654 The @code{\header} is normally at the top of the file, where it sets
1655 values for the rest of the file. If you want to typeset different pieces
1656 from one file (for example, if there are multiple movements, or if
1657 you're making an exercise book), you can put different @code{\score}
1658 blocks into the input file. @code{ly2dvi} will assemble all LilyPond
1659 output files into a big document. The contents of @code{\header} blocks
1660 specified within each score is used for the title of that movement.
1666 For example, the Opus number is put at the right, and the "piece" string
1667 will be at the left.
1674 title = "Two miniatures"
1675 composer = "F. Bar Baz"
1676 tagline = "small is beautiful" @}
1678 \paper @{ linewidth = -1.0 @}
1681 \notes @{ c'4 d'4 @}
1687 \notes @{ d'4 c'4 @}
1697 scoreA = \score @{ \deelA @}
1698 scoreB = \score @{ \deelA @}
1700 % \score @{ \scoreA @}
1701 \score @{ \scoreB @}
1709 Lilypond and its language are still under development, and
1710 occasionally details of the syntax are changed. The @code{version}
1711 fragment indicates which version of lilypond the input file was written
1712 for. When you compile this file, the version number will be checked
1713 and you will get a warning when the file is too old. This version
1714 number is also used by the @code{convert-ly} program (See
1715 @ref{Invoking convert-ly}), which can used to update the file to the
1716 latest lily version.
1719 @node A piano excerpt
1720 @section A piano excerpt
1722 Our eighth subject is a piece of piano music. The fragment in the
1723 input file is a piano reduction of the G major Sinfonia by Giovanni
1724 Battista Sammartini, composed around 1740. It's in the source
1725 package under the name @file{input/tutorial/sammartini.ly}.
1727 @lilypondfile[smallverbatim,noquote]{sammartini.ly}
1729 As you can see, this example features multiple voices on one staff. To
1730 make room for those voices, their notes should be stemmed in opposite
1733 LilyPond includes the identifiers @code{\stemUp}, @code{\stemDown} along
1734 with some other commonly used formatting instructions, but to explain how
1735 it works, we wrote our own here. Of course, you should use predefined
1736 identifiers like these if possible: you will be less affected by changes
1737 between different versions of LilyPond.
1741 viola = \notes \relative c' \context Voice = viola @{
1743 In this example you can see multiple parts on a staff. Each part is
1744 associated with one notation context. This notation context handles
1745 stems and dynamics (among other things). The type name of this context
1746 is @code{Voice}. For each part we have to make sure that there is
1747 precisely one @code{Voice} context, so we give it a unique name
1754 The delimiters @code{<} and @code{>} are shorthands for
1755 @code{\simultaneous @{} and @code{@}}. The expression enclosed in
1756 @code{<} and @code{>} is a chord.
1760 @code{\arpeggio} typesets an arpeggio sign (a wavy vertical line) before
1768 We want the viola to have stems down, and have all the other
1769 characteristics of a second voice. This is enforced using the
1770 @code{\voiceTwo} command: it inserts instructions that makes stem,
1771 ties, slurs, etc. go down.
1779 Relative octaves work a little differently with chords. The starting
1780 point for the note following a chord is the first note of the chord. So
1781 the @code{g} gets an octave up quote: it is a fifth above the starting
1782 note of the previous chord (the central C).
1788 @code{s} is a spacer rest. It does not print anything, but it does have
1789 the duration of a rest. It is useful for filling up voices that
1790 temporarily don't play. In this case, the viola doesn't come until one
1791 and a half measure later.
1795 oboes = \notes \relative c'' \context Voice = oboe @{
1797 Now comes a part for two oboes. They play homophonically, so we
1798 print the notes as one voice that makes chords. Again, we insure that
1799 these notes are indeed processed by precisely one context with
1803 \voiceOne s4 g8. b,16 c8 r <e'8. g> <f16 a>
1806 The oboes should have stems up to keep them from interfering with
1807 the staff-jumping bass figure. To do that, we use @code{\voiceOne}.
1811 \grace <e8( g> < d4 )f> <c2 e>
1813 @cindex @code{\grace}
1816 @code{\grace} introduces grace notes. It takes one argument, in this
1817 case a chord. A slur is introduced starting from the @code{\grace}
1818 ending on the following chord.
1826 Tuplets are made with the @code{\times} keyword. It takes two
1827 arguments: a fraction and a piece of music. The duration of the piece
1828 of music is multiplied by the fraction. Triplets make notes occupy 2/3
1829 of their notated duration, so in this case the fraction is 2/3.
1832 @{ <d8 f> <e g> <f a> @}
1834 The piece of music to be `tripletted' is sequential music containing
1841 At this point, the homophonic music splits into two rhythmically
1842 different parts. We can't use a sequence of chords to enter this, so
1843 we make a "chord of sequences" to do it. We start with the upper
1844 voice, which continues with upward stems:
1847 @{ \times 2/3 @{ a8 g c @} c2 @}
1854 The easiest way to enter multiple voices is demonstrated
1855 here. Separate the components of the voice (single notes or entire
1856 sequences) with @code{\\} in a simultaneous music expression. The
1857 @code{\\} separators split first voice, second voice, third voice, and
1860 As far as relative mode is concerned, the previous note is the
1861 @code{c'''2} of the upper voice, so we have to go an octave down for
1869 This ends the two-part section.
1873 \grace <c,8( e> <)b8. d8.-\trill> <c16 e> |
1878 @code{\stemBoth} ends the forced stem directions. From here, stems are
1879 positioned as if it were single part music.
1881 The bass has a little hoom-pah melody to demonstrate parts switching
1882 between staves. Since it is repetitive, we use repeats:
1885 hoomPah = \repeat unfold 8
1887 @cindex unfolded @code{\repeat}
1888 The unfolded repeat prints the notes in its argument as if they were
1889 written out in full eight times.
1892 \notes \transpose c' @{
1895 @cindex relative mode and transposing
1897 Transposing can be done with @code{\transpose}, which takes two arguments.
1898 The first specifies what central C should be transposed to. The second
1899 is the to-be-transposed music. As you can see, in this case, the
1900 transposition has no effect, as central C stays at central C.
1902 The purpose of this no-op is to protect it from being interpreted as
1903 relative notes. Relative mode can not be used together with
1904 transposition, so @code{\relative} will leave the contents of
1905 @code{\hoomPah} alone. We can use it without having to worry about
1906 getting the motive in a wrong octave. Conversely, if you want to
1907 transpose a fragment of music entered with @code{\relative}, then you
1908 should make sure that @code{\transpose} comes before @code{\relative}.
1911 @cindex staff switch, manual
1912 @cindex cross staff voice, manual
1913 @cindex @code{\translator}
1916 \translator Staff = down
1919 \translator Staff = up
1923 Voices can switch between staves. Here you see two staff switching
1924 commands. The first one moves to the lower staff, the second one to
1925 the lower one. If you set the stem directions explicitly
1926 (using the identifiers @code{\stemUp} and @code{\stemDown}, the notes
1927 can be beamed together (despite jumping between staffs).
1931 bassvoices = \notes \relative c' @{
1933 \autochange Staff \hoomPah \context Voice
1938 \translator Staff = down
1940 @cindex staff switch
1941 @cindex cross staff voice
1942 We want the remaining part of this melody on the lower staff, so we do a
1943 manual staff switch here.
1948 \context Voice = reallyLow @{\stemDown g2 ~ | g4 c8 @} >
1952 After skipping some lines, we see @code{~}. This mark makes ties. Note
1953 that ties and slurs are different things. A tie can only connect two
1954 note heads of the same pitch, whereas a slur can connect many notes
1961 A special context is needed to get cross staff beaming right. This
1962 context is called @code{PianoStaff}.
1965 \context Staff = bottom < \time 2/2 \clef bass
1967 The bottom staff must have a different clef.
1972 To make some more room on the line, the first (in this case the only)
1973 line is not indented. The line still looks very cramped, but that is due
1974 to the page layout of this document.
1980 * font-size, multi-stanza.
1982 * Simple part combining in a Hymn
1986 @node Fine tuning a piece
1987 @section Fine tuning a piece
1989 In this section we show some ways to fine tune the final output of a
1990 piece. We do so using a single measure of a moderately complex piano
1991 piece: a Brahms intermezzo (opus 119, no. 1). Both fragments (the
1992 tuned and the untuned versions) are in @file{input/tutorial/}.
1994 The code for the untuned example shows us some new things.
1996 @lilypondfile[verbatim]{brahms-original.ly}
2006 Hairpin dynamics can be easily added to Lilypond scores. Beginning a
2007 crescendo is indicated with @code{\<} and ending a crescendo is indicated
2008 with @code{\!}. A decrescendo can be indicated with @code{\>} and
2009 @code{\!}. Absolute dynamics (sometimes called ``Letter dynamics'') can
2010 be entered using @code{\p}, @code{\mf}, etc. All these dynamics will
2011 apply to the whole chord where they are entered, but for syntactical
2012 reasons they must be attached to one of the notes of the chord.
2014 @cindex fingering instructions
2016 Fingering indications are entered with @code{-@var{N}}, where
2019 Now that we have the basic piece of music entered, we want to fine
2020 tune it so that we get something that resembles the original printed
2021 edition by Schott/Universal Edition:
2023 @lilypondfile{brahms-tweaked.ly}
2025 @cindex tuning graphical objects
2027 Fine tuning involves overriding the defaults of the printing system.
2028 We do this by setting variables which control how Lilypond prints
2029 symbols. Printed symbols are called graphical objects (often
2030 abbreviated to @emph{grob}). Each object is described by a bunch of
2031 settings. Every setting is a variable: it has a name and a value
2032 which you can change. These values determine the fonts, offsets,
2033 sub-routines to be called on the object, etc. The initial values of
2034 these settings are set in the Scheme file
2035 @file{scm/grob-description.scm}.
2037 @cindex slur attachments
2039 We start with the slur in the upper part, running from F sharp to A. In
2040 the printed edition, this slur runs from stem to stem; in our version,
2041 the slur begins at the note head of the F sharp. The following property
2042 setting forces all slurs to run from stem to stem (not from or to note
2046 \property Voice.Slur \set #'attachment = #'(stem . stem)
2049 More precisely, this command modifies the definition of the @code{Slur}
2050 object in the current @code{Voice}. The variable @code{attachment} is
2051 set to the pair of symbols @code{'(stem . stem)}.
2053 Although this fixes the slur, it isn't very helpful for fine tuning in
2054 general: the lilypond back-end supports approximately 240 variables
2055 like @code{attachment}, each with their own meaning and own type
2056 (eg. number, symbol, list, etc). Besides slur, LilyPond has 80
2057 different types of graphical objects, that may be created in 14
2058 different context types besides Voice.
2060 @cindex internal documentation
2061 @cindex finding graphical objects
2062 @cindex graphical object descriptions
2064 The interesting information is how you can figure out which properties
2065 to tune for your own scores. To discover this, you must have a copy of
2066 the internals document. This is a set of HTML pages which should be
2067 included if you installed a binary distribution@footnote{You can also
2068 compile them by executing @code{make -C Documentation/user/
2069 out/lilypond-internals.html} in the source package.}. These HTML pages
2070 are also available on the web: go to the lilypond website, click
2071 ``Documentation: Index'' on the side bar, look in the ``Information for
2072 uses'' section, and click on ``Documentation of internals''.
2074 You might want to bookmark either the HTML files on your disk, or the one
2075 on the web (the HTML on your hard drive will load much faster than the
2076 ones on the web!). One word of caution: the internals documentation is
2077 generated from the definitions that lily uses. For that reason, it is
2078 strongly tied to the version of LilyPond that you use. Before you
2079 proceed, please make sure that you are using the documentation that
2080 corresponds to the version of LilyPond that you are using.
2082 @c TODO: the quote is incorrect, although that shouldn't be a big
2083 @c problem for the reader.
2084 Suppose that you wanted to tune the behavior of the slur. The first
2085 step is to get some general information on slurs in lilypond. Turn to
2086 the index, and look up ``slur''. The section on slurs says
2088 The grob for this object is @internalsref{Slur}, generally in
2089 @internalsref{Voice} context.
2092 So the graphical object for this object is called @code{Slur}, and
2093 slurs are created in the @code{Voice} context. If you are reading
2094 this tutorial in the HTML version, then you can simply click Slur,
2095 otherwise, you should look it up the internal documentation: click
2096 ``grob overview'' and select ``slur'' (the list is alphabetical).
2098 Now you get a list of all the properties that the slur object
2099 supports, along with their default values. Among the properties we
2100 find the @code{attachment} property with its default setting.
2101 The property documentation explains that the following setting will
2102 produce the desired effect:
2104 \property Voice.Slur \set #'attachment = #'(stem . stem)
2107 If you ran the previous example, you have unknowingly already used
2108 this kind of command. The @file{ly/property-init.ly} contains the
2109 definition of @code{\stemUp}:
2111 stemUp = \property Voice.Stem \set #'direction = #1
2114 @c this is a long section, and adding an extra space here helps to
2115 @c break it into smaller subsections and thus is easier to understand.
2118 Next we want to move the fingering `3'. In the printed edition it is
2119 not above the stem, but a little lower and slightly left of the stem.
2120 From the user manual we find that the associated graphical object is
2121 called @code{Fingering}, but how do we know if we should use
2122 @code{Voice} or @code{Staff}? In many cases, @code{Voice} is a safe
2123 bet, but you can also deduce this information from the internals
2124 documentation: if you visit the documentation of @code{Fingering}, you
2127 Fingering grobs are created by: Fingering_engraver
2130 Clicking @code{Fingering_engraver} will show you the documentation of
2131 the module responsible for interpreting the fingering instructions and
2132 translating them to a @code{Fingering} object. Such a module is called
2133 an @emph{engraver}. The documentation of the @code{Fingering_engraver}
2136 Fingering_engraver is part of contexts: Voice and TabVoice
2138 so tuning the settings for Fingering should be done using either
2140 \property Voice.Fingering \set @dots{}
2144 \property TabVoice.Fingering \set @dots{}
2147 Since the @code{TabVoice} is only used for tab notation, we see that
2148 the first guess @code{Voice} was indeed correct.
2150 @cindex setting object properties
2151 @cindex @code{extra-offset}
2153 For shifting the fingering, we use the property @code{extra-offset}.
2154 The following command manually adds an offset to the object. We move
2155 it a little to the left, and 1.8 staff space downwards.
2157 \property Voice.Fingering \set #'extra-offset = #'(-0.3 . -1.8)
2159 The @code{extra-offset} is a low-level feature: it moves around
2160 objects in the printout; the formatting engine is completely oblivious
2161 to these offsets. The unit of these offsets are staff-spaces. The
2162 first number controls left-right movement; a positive number will move
2163 the object to the right. The second number controls up-down movement;
2164 a positive number will move it higher.
2166 @cindex reverting object properties
2167 @cindex undoing object properties
2169 We only want to offset a single object, so after the F-sharp we must
2170 undo the setting. The technical term is to revert the property.
2172 \property Voice.Fingering \revert #'extra-offset
2175 @cindex property types
2176 @cindex translator properties
2177 @cindex grob properties
2178 @cindex music properties
2181 There are three different types of variables in LilyPond, something
2182 which can be confusing at first (and for some people it stays confusing
2183 :). Variables such as @code{extra-offset} and @code{attachment} are
2184 called grob properties. They are not the same as translator properties,
2185 like @code{autoBeaming}. Finally, music expressions are internally
2186 stored using properties (so-called music properties). You will encounter
2187 music properties if you run Scheme functions on music using @code{\apply}.
2189 The second fingering instruction should be moved up a little to avoid
2190 a collision with the slur. This could be achieved with
2191 @code{extra-offset}, but in this case, a simpler mechanism also
2192 works. We insert an empty text between the 5 and the note. The empty
2193 text pushes the fingering instruction away:
2195 a^" "^#'(finger "5")
2198 Lilypond tries to put fingering instructions as close to the notes as
2199 possible. To make sure that Lilypond doesn't do that, we disguise the
2200 fingering as text: @code{(finger "5")}.
2204 Normally one would specify all dynamics in the same voice, so that
2205 dynamics (such as @b{f} and @b{p}) will be aligned with hairpins. But
2206 in this case, we don't want the decrescendo to be aligned with the
2207 piano sign. We achieve this by putting the dynamic markings in different
2208 voices. The crescendo should be above the upper staff. This can be
2209 forced by using the precooked command
2214 However, if you do that the decrescendo will be too close to the
2215 upper voice and collide with the stems. Looking at the manual for
2216 dynamics, we notice that ``Vertical positioning of these symbols is
2217 handled by the @internalsref{DynamicLineSpanner} grob.''. If we turn
2218 to the documentation of @code{DynamicLineSpanner}, we find that
2219 @code{DynamicLineSpanner} supports several so-called `interfaces'. This
2220 object not only puts dynamic objects next to the staff
2221 (@code{side-position-interface}), but it also groups dynamic objects
2222 (@code{axis-group-interface}), is considered a dynamic sign
2223 itself (@code{dynamic-interface}), and is an object. It has the standard
2224 @code{grob-interface} with all the variables that come with it.
2226 For the moment we are interested in side positioning:
2228 side-position-interface
2230 Position a victim object (this one) next to other objects (the
2231 support). In this case, the direction signifies where to put the
2232 victim object relative to the support (left or right, up or down?)
2234 Between the object and its support (in this case the notes in the voice
2235 going down), there should be more space. This space is controlled by
2236 @code{padding}, so we increase it.
2238 \property Voice.DynamicLineSpanner \override #'padding = #5.0
2241 This command is almost like the command for setting slur attachments,
2242 but subtly different in its details. Grob properties can be
2243 manipulated with two commands: @code{\override} extends the
2244 variables with a setting, and @code{\revert} releases this
2245 setting. This has a certain theoretical appeal: the operations are
2246 simple and symmetric. But for practical use, it can be cumbersome. The
2247 commands act like parentheses: you should carefully balance the use of
2248 @code{\override} and @code{\revert}. The @code{\set} command is more
2249 friendly: it first does a @code{\revert} followed by @code{\override}.
2253 Brahms uses music notation is a slightly unorthodox way. Ties
2254 usually happen only within one voice. In this piece, the composer
2255 gladly produces ties that jump voices. We deal with this by faking
2256 these ties: whenever we need such a tie, we insert a notehead in a
2257 different voice, and blank the stem. This is done in the following
2261 \property Voice.Stem \set #'transparent = ##t
2264 Blanking the stem should be done for only one object. One of the ways
2265 to achieve that, is by setting the property before a note. Reverting
2266 it afterwards is tedious, so for setting a property only once, we have
2267 the syntax @code{\once}: it reverts the property directly before
2268 proceeding to the next step in time.
2270 The @code{\once} keyword is added to @code{\property}.
2273 Finally, the last tie is forced up using @code{\tieUp}.
2277 Here's the complete ``fine tuned'' version, which includes all the
2278 modifications we discussed in this section:
2280 @lilypondfile[verbatim]{brahms-tweaked.ly}
2283 @node An orchestral score
2284 @section An orchestral score
2288 * Extracting an individual part::
2292 Our next two examples demonstrate one way to create an orchestral score
2293 in LilyPond. When typesetting a piece for several instruments, you'll
2294 want to create a full score (for the conductor) along with several
2295 individual parts (for the players).
2297 LilyPond is well suited for this task. We will declare the music for
2298 each instrument individually, giving the music of each instrument its
2299 own name. These pieces of music are then combined in different
2300 @code{\score} blocks to produce different combinations of instruments
2301 (for example, one @code{\score} block may only include the cello part;
2302 another @code{\score} block may be for all the strings, and yet another
2303 @code{\score} block may be for all parts together).
2305 This orchestral score example consists of three input files. In the
2306 first file, @file{os-music.ly}, we define the music for all
2307 instruments. This file will be used for producing the score and
2308 the separate parts, but the file doesn't produce any sheet music
2309 itself. Other files reference this file by doing @code{\include
2315 title = "Zo, goed lieverd?"
2316 subtitle = "How's, this babe?"
2325 Key = \notes \key as \major
2326 flautoI = \notes\relative c'' @{
2328 bes as bes as bes as bes as
2330 flautoII = \notes\relative c'' @{
2331 as8 bes as bes R1 d4 ~ d
2333 tromboI = \notes\relative c'' @{
2334 c4. c8 c8 c4. es4 r as, r
2336 tromboII = \notes\relative c'' @{
2337 as4. as8 as8 as4. R1*1/2 as4 es'
2339 timpani = \notes\relative c, @{
2340 \times 2/3 @{ f4 f f @}
2341 \times 4/5 @{ as8 as as as as @}
2344 corno = \notes\relative c' @{
2345 bes4 d f, bes d f, bes d
2349 We will not examine this example line by line, since you already know
2350 most of it. We'll examine a few lines which contain new elements.
2361 Declare setting to be used globally. The @code{\skip} command produces
2362 no output, but moves forward in time: in this case, the duration of a
2363 half note (@code{2}), and that four times (@code{*4}). This brings us
2364 to the end of the piece, and we can set the end bar. You can use @code{s}
2365 as a shortcut for @code{\skip} (the last line of this section would
2366 be @code{s2*4 \bar"|."}).
2370 Key = \notes \key as \major
2372 Declare the key signature of the piece and assign it to the identifier
2373 @var{Key}. Later on we'll use @code{\Key} for all staves except those
2374 for transposing instruments.
2376 @node The full score
2377 @subsection The full score
2380 The second file, @file{input/tutorial/os-score.ly}, reads the definitions of the first
2381 (@file{input/tutorial/os-music.ly}), and defines the @code{\score} block for the full
2387 \include "os-music.ly"
2388 \include "paper13.ly"
2390 #(ly:set-point-and-click 'line-column)
2391 #(define text-flat '((font-relative-size . -2)
2392 (music "accidentals--1")))
2397 \property Score.BarNumber \override #'padding = #3
2398 \context StaffGroup = woodwind <
2399 \context Staff = flauti <
2400 \property Staff.midiInstrument = #"flute"
2401 \property Staff.instrument = "2 Flauti"
2402 \property Staff.instr = "Fl."
2404 \context Voice=one @{ \voiceOne \flautoI @}
2405 \context Voice=two @{ \voiceTwo \flautoII @}
2408 \context StaffGroup = timpani <
2409 \context Staff = timpani <
2410 \property Staff.midiInstrument = #"timpani"
2411 \property Staff.instrument = #'(lines "Timpani" "(C-G)")
2412 \property Staff.instr = #"Timp."
2418 \context StaffGroup = brass <
2419 \context Staff = trombe <
2420 \property Staff.midiInstrument = #"trumpet"
2421 \property Staff.instrument = #`(lines "2 Trombe" "(C)")
2422 \property Staff.instr = #`(lines "Tbe." "(C)")
2424 \context Voice=one \partcombine Voice
2425 \context Thread=one \tromboI
2426 \context Thread=two \tromboII
2428 \context Staff = corni <
2429 \property Staff.midiInstrument = #"french horn"
2430 \property Staff.instrument = #`(lines "Corno"
2431 (columns "(E" ,text-flat ")"))
2432 \property Staff.instr = #`(lines "Cor."
2433 (columns "(E" ,text-flat ")"))
2434 \property Staff.transposing = #3
2435 \notes \key bes \major
2436 \context Voice=one \corno
2441 indent = 15 * \staffspace
2442 linewidth = 55 * \staffspace
2443 textheight = 90 * \staffspace
2445 \HaraKiriStaffContext
2454 @center @strong{Zo, goed lieverd?}
2456 @center How's, this babe?
2464 @lilypondfile{os-score.ly}
2468 \include "os-music.ly"
2470 First we need to include the music definitions we made in
2475 #(ly:set-point-and-click 'line-column)
2478 This piece of Scheme code executes the function
2479 @code{ly:set-point-and-click} with the argument
2480 @code{line-column}. Editing input files can be complicated if you're
2481 working with large files: if you're digitizing existing music, you have
2482 to synchronize the .ly file, the sheet music on your lap and the sheet
2483 music on the screen. The point-and-click mechanism makes it easy to
2484 find the origin of an error in the LY file: when you view the file with
2485 Xdvi and click on a note, your editor will jump to the spot where that
2486 note was entered. For more information, see @ref{Point and click}.
2491 #(define text-flat '((font-relative-size . -2)
2492 (music "accidentals--1")))
2495 To name the transposition of the french horn, we will need a piece of
2496 text with a flat sign. LilyPond has a mechanism for font selection and
2497 kerning called Scheme markup text (See @ref{Text markup}). The flat
2498 sign is taken from the music font, and its name is @code{accidentals--1}
2499 (The natural sign is called @code{accidentals-0}). The default font is
2500 too big for text, so we select a relative size of @code{-2}.
2507 All staves are simultaneous and use the same global settings.
2511 \property Score.BarNumber \override #'padding = #3
2513 LilyPond prints bar numbers at the start of each line, but
2514 unfortunately they end up a bit too close to the staff in this
2515 example. In LilyPond, a bar number is called @var{BarNumber}.
2516 BarNumber objects can be manipulated through their
2517 @var{side-position-interface}. One of the properties of a
2518 @var{side-position-interface} that can be tweaked is @var{padding}:
2519 the amount of extra space that is put between this and other objects.
2520 We set the padding to three staff spaces.
2522 You can find information on all these kind of properties in LilyPond's
2523 automatically generated documentation in
2525 @ref{ (lilypond-internals)lilypond-internals, LilyPond Internals}
2526 or in @ref{Fine tuning a piece}.
2529 the online documentation or in the previous section of the tutorial.
2536 \context StaffGroup = woodwind <
2537 \context Staff = flauti <
2539 A new notation context: the @code{StaffGroup}. @code{StaffGroup} can
2540 hold one or more @code{Staff}'s, and will print a big bracket at the
2541 left of the score. This starts a new staff group for the woodwind
2542 section (just the flutes in this case). Immediately after that, we
2543 start the staff for the two flutes, who also play simultaneously.
2547 \property Staff.midiInstrument = #"flute"
2549 Specify the instrument for MIDI output (see @ref{MIDI instrument
2554 \property Staff.instrument = "2 Flauti"
2555 \property Staff.instr = "Fl."
2557 This defines the instrument names to be printed in the
2558 margin. @code{instrument} specifies the name for the first line
2559 of the score, @code{instr} is used for the rest of the score.
2565 The flutes play in the default key.
2569 \context Voice=one @{ \voiceOne \flautoI @}
2570 \context Voice=two @{ \voiceTwo \flautoII @}
2572 Last come the actual flute parts. Remember that we're still in
2573 simultaneous mode. We name both voices differently, so that LilyPond
2574 will create two Voice contexts. The flute parts are simple, so
2575 we specify manually which voice is which: @code{\voiceOne} forces the
2576 direction of stems, beams, slurs and ties up, @code{\voiceTwo} sets
2584 Close the flutes staff and woodwind staff group.
2588 \property Staff.instrument = #'(lines "Timpani" "(C-G)")
2590 The timpani staff demonstrates a new piece of scheme markup, it sets two
2595 \context Voice=one \partcombine Voice
2596 \context Thread=one \tromboI
2597 \context Thread=two \tromboII
2599 You have seen the notation contexts Staff and Voice, but here's a new
2600 one: Thread. One or more Threads can be part of a Voice. Thread
2601 takes care of note heads and rests; Voice combine note heads onto a
2604 For the trumpets we use the automatic part combiner (see @ref{Automatic
2605 part combining}) to combine the two simultaneous trumpet parts onto the
2606 trumpet staff. Each trumpet gets its own Thread context, which must be
2607 named @code{one} and @code{two}). The part combiner makes these two
2608 threads share a Voice when they're similar, and splits the threads up
2609 when they're different.
2613 \property Staff.instrument = #`(lines "Corno"
2614 (columns "(E" ,text-flat ")"))
2616 The french horn (``Corno'') has the most complex scheme markup name, made
2617 up of two lines of text. The second line has three elements (columns) --
2618 the @code{(E}, the flat sign @code{text-flat} that we defined previously,
2619 and a final @code{")"}. Note that we use a backquote instead of an
2620 ordinary quote at the beginning of the Scheme expression to be able to
2621 access the @code{text-flat} identifier, `unquoting' it with a ``@code{,}''.
2625 \property Staff.transposing = #3
2627 The french horn is to be tuned in E-flat, so we tell the MIDI back-end to
2628 transpose this staff by three steps.
2630 Note how we can choose different tunings for the text input, sheet music
2631 output and, and MIDI output, using @code{\transpose} and the MIDI Staff
2632 property @var{transposing}.
2636 \notes \key bes \major
2638 Since the horn is transposing, it's in a different key.
2642 indent = 15 * \staffspace
2643 linewidth = 55 * \staffspace
2645 We specify a big indent for the first line and a small linewidth for this
2650 Usually LilyPond's default setup of notation contexts (Thread,
2651 Voice, Staff, Staffgroup, Score) is just fine. But in this case we
2652 want a different type of Staff context.
2656 \HaraKiriStaffContext
2660 In orchestral scores it often happens that one instrument only has
2661 rests during one line of the score. @code{HaraKiriStaffContext} can
2662 be used as a regular @code{StaffContext} drop-in and will take care of
2663 the automatic removing of empty staves -- so if the strings are the
2664 only instruments playing for a line, LilyPond will only print the string
2665 parts for that line of the score. This reduces the number of page turns
2666 (and the number of dead trees!) required in a score.
2668 @node Extracting an individual part
2669 @subsection Extracting an individual part
2671 The third file, @file{os-flute-2.ly} also reads the definitions of the
2672 first (@file{os-music.ly}), and defines the @code{\score} block for the
2676 \include "os-music.ly"
2677 \include "paper16.ly"
2681 \property Score.skipBars = ##t
2682 \property Staff.midiInstrument = #"flute"
2688 instrument = "Flauto II"
2691 linewidth = 80 * \staffspace
2692 textheight = 200 * \staffspace
2700 @center @strong{Zo, goed lieverd?}
2702 @center How's, this babe?
2703 @center @emph{Flauto II}
2710 @lilypondfile{os-flute-2.ly}
2713 Because we separated the music definitions from the @code{\score}
2714 instantiations, we can easily define a second score with the music of
2715 the second flute. This is the part for the second flute player. Of
2716 course, we would make separate parts for all individual instruments if
2717 we were preparing the score for an orchestra.
2723 In this individual part the second flute has a whole staff for itself,
2724 so we don't want to force stem or tie directions.
2729 instrument = "Flauto II"
2732 The @code{\header} definitions were also read from @file{os-music.ly},
2733 but we need to set the instrument for this particular score.
2737 \property Score.skipBars = ##t
2739 In the conductor's full score, all bars with rests are printed, but for
2740 the individual parts, we want to print one multimeasure rest instead of
2741 many consecutive empty bars. LilyPond will do this if
2742 @code{Score.skipBars} is set to true (@code{##t}).
2745 @node Integrating text and music
2746 @section Integrating text and music
2749 @cindex La@TeX{}, music in
2750 @cindex HTML, music in
2751 @cindex Texinfo, music in
2753 Sometimes you might want to use music examples in a text that you are
2754 writing (for example a musicological treatise, a songbook, or (like us)
2755 the LilyPond manual). You can make such texts by hand, simply by
2756 importing a PostScript figure into your word processor. However,
2757 there is an automated procedure to reduce the amount of work.
2759 If you use HTML, La@TeX{}, or texinfo, you can mix text and LilyPond
2760 code. A script called @code{lilypond-book} will extract the music
2761 fragments, run LilyPond on them, and put back the resulting
2762 notation. This program is fully described in the chapter
2763 @ref{Integrating text and music with lilypond-book}. Here we show a
2764 small example. Since the example also contains explanatory text, we
2765 won't comment on the contents.
2768 \documentclass[a4paper]@{article@}
2771 In a lilypond-book document, you can freely mix music and text. For
2774 \score @{ \notes \relative c' @{
2775 c2 g'2 \times 2/3 @{ f8 e d @} c'2 g4
2778 Notice that the music line length matches the margin settings of the
2781 If you have no \verb+\score+ block in the fragment,
2782 \texttt@{lilypond-book@} will supply one:
2788 In the example you see here, two things happened: a
2789 \verb+\score+ block was added, and the line width was set to natural
2790 length. You can specify many more options using \LaTeX style options
2793 \begin[verbatim,11pt,singleline,
2794 fragment,relative,intertext="hi there!"]@{lilypond@}
2798 \texttt@{verbatim@} prints the LilyPond code in addition to the
2800 \texttt@{11pt@} selects the default music size,
2801 \texttt@{fragment@} adds a score block,
2802 \texttt@{relative@} uses relative mode for the fragment, and
2803 \texttt@{intertext@} specifies what to print between the
2804 \texttt@{verbatim@} code and the music.
2806 If you want to include large examples into the text, it may be more
2807 convenient to put the example in a separate file:
2809 \lilypondfile[printfilename]@{sammartini.ly@}
2811 The \texttt@{printfilename@} option adds the file name to the output.
2816 Under Unix, you can view the results as follows.
2820 $ lilypond-book --outdir=out/ lilbook.tex
2821 lilypond-book (GNU LilyPond) 1.6.1
2822 Reading `input/tutorial/lilbook.tex'
2823 Reading `input/tutorial/sammartini.ly'
2824 @var{lots of stuff deleted}
2825 Writing `out/lilbook.latex'
2827 $ latex lilbook.latex
2828 @var{lots of stuff deleted}
2832 Notice the @code{outdir} option to lilypond-book. Running lilypond-book
2833 and running latex creates a lot of temporary files, and you wouldn't want
2834 those to clutter up your working directory. Hence, we have them created
2835 in a separate subdirectory.
2837 The result looks more or less like this:
2841 In a lilypond-book document, you can freely mix music and text. For
2845 \notes \relative c' {
2846 c2 g'2 \times 2/3 { f8 e d } c'2 g4
2853 Notice that the music line length matches the margin settings of the
2856 If you have no @code{\score} block in the fragment,
2857 @code{lilypond-book} will supply one:
2863 In the example you see here, a number of things happened: a
2864 @code{\score} block was added, and the line width was set to natural
2865 length. You can specify many more options using La@TeX{} style options
2868 @lilypond[verbatim,11pt,singleline,
2869 fragment,relative,intertext="hi there!"]
2873 @code{verbatim} also shows the LilyPond code, @code{11pt} selects
2874 the default music size, @code{fragment} adds a score block,
2875 @code{relative} uses relative mode for the fragment, and
2876 @code{intertext} specifies what to print between the
2877 @code{verbatim} code and the music.
2879 If you include large examples into the text, it may be more convenient
2880 to put the example in a separate file:
2882 @lilypondfile[printfilename,noquote]{sammartini.ly}
2884 The @code{printfilename} option adds the file name to the output.
2885 @node End of tutorial
2886 @section End of tutorial
2888 This is the end of the tutorial. If you read everything until this point
2889 (and understood everything!) then you're now an accomplished lilypond
2890 hacker. From here you should try fiddling with input files or making your
2891 own input files. Come back to the reference manual for more information
2894 Don't forget to check out the
2896 @uref{../../../../input/template/out-www/template.html,templates},
2897 @uref{../../../../input/test/out-www/test.html,examples} and
2898 @uref{../../../../input/regression/out-www/regression.html,feature tests}.
2901 templates, examples and feature tests.
2903 If you want to see real action LilyPond, head over to
2904 @uref{http://www.mutopiaproject.org}, which has many examples of
2905 classical music typeset with LilyPond.