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
22 * Listening to output::
24 * Single staff polyphony ::
26 * Organising larger pieces::
27 * Fine tuning a piece::
28 * An orchestral score:: Conductor's score and individual parts
29 * Integrating text and music:: Integrating text and music
32 Operating is done through text files: To print a piece of music, you
33 enter the music in a file. When LilyPond is run (normally using the
34 program @code{ly2dvi}) on that file, another file containing formatted
35 sheet music, is produced. That file may be printed or viewed.
37 This tutorial starts with a small introduction to the LilyPond music
38 language. After this first contact, we will show which commands to
39 run to produce printed output, so you should then be able to create
40 your first sheets of music. The tutorial continues with more and more
47 We start off by showing how very simple music is entered in LilyPond:
48 you get a note simply by typing its @htmlref{note name}, from @samp{a}
49 through @samp{g}. So if you enter
56 then the result looks like this:
59 @c \transpose c c' { c d e f g a b }
61 @c \property Score.timing = ##f
62 @lilypond[notime, relative=2]
66 We will continue with this format: First we show a snippet of input,
67 then the resulting output.
69 The length of a note is specified by adding a number, @samp{1} for a
70 @rglos{whole note}, @samp{2} for a @rglos{half note}, and so on:
77 \property Score.timing = ##f
78 \property Staff.autoBeaming = ##f
79 \transpose c c' { a1 a2 a4 a16 a32 s16_" " }
82 If you do not specify a @rglos{duration}, the previous one is used:
89 \property Score.timing = ##f
90 \transpose c c' { a a a2 a s16_" " }
93 A @rglos{sharp} (@texisharp{}) is made by adding @samp{is}, a
94 @rglos{flat} (@texiflat{}) by adding @samp{es}. As you might expect,
95 a @rglos{double sharp} or @rglos{double flat} is made by adding
96 @samp{isis} or @samp{eses}:@footnote{This syntax derived from note
97 naming conventions in Nordic and Germanic languages, like German and
105 \property Score.timing = ##f
106 \transpose c c' { cis1 ees fisis aeses s16_" " }
109 Add a dot @samp{.} after the duration to get a @rglos{dotted note}:
116 \property Score.timing = ##f
117 \transpose c c' { a2. a4 a8. a16 s16_" " }
120 Entering pitches and durations is fully explained in @ref{Pitches} and
124 The @rglos{meter} (or @rglos{time signature}) can be set with the
125 @code{\time} command:
133 @c a clef here may lead to confusion
135 \property Staff.Clef \set #'transparent = ##t
144 Time signatures and other timing commands are described in @ref{Time
148 The @rglos{clef} can be set using the @code{\clef} command:
150 @c what is more common name treble or violin?
151 @c in Dutch, its violin.
152 @c in English its definitely treble.
161 \property Score.timing = ##f
172 Clefs are fully explained in @ref{Clef}.
175 When you enter these commands in a file, you must to enclose them in
176 @code{\notes @{@dots{}@}}. This lets LilyPond know that music (as
177 opposed to @rglos{lyrics}) follows:
187 Now the piece of music is almost ready to be printed. The final step is to
188 combine the music with a printing command.
190 The printing command is the so-called @code{\paper} block. Later on
191 you will see that the @code{\paper} block is used to customize
192 printing specifics. The music and the @code{\paper} block are combined by
193 enclosing them in @code{\score @{ ... @}}. This is what a full source file looks like:
216 linewidth = 55 * \staffspace
222 @node Running LilyPond
223 @section Running LilyPond
225 In the last section we explained what kind of things you could enter
226 in a LilyPond file. In this section we explain what commands to run
227 and how to view or print the output. If you have not used LilyPond
228 before, want to test your setup, or want to run an example file
229 yourself, read this section. The instructions that follow are for
230 Unix-like systems. Some additional instructions for MS Windows are given
231 at the end of this section.
233 Begin by opening a terminal window and starting a text editor.
234 For example, you could open an xterm and execute @code{joe}. In your
235 text editor, enter the following input and save the file as
241 \notes @{ c'4 e' g' @}
248 @c now this is weird, running ly2dvi to run LilyPond
249 @c (therefore name change proposal)
251 LilyPond is the program that computes the sheet music. All other
252 things, such as adding titles, page breaking and other page layout,
253 are done by a small wrapper program called
254 @code{ly2dvi}. @code{ly2dvi} calls LilyPond to render the music, and
255 then adds the titling and page layout instructions. To process
256 @file{test.ly} with @code{ly2dvi}, proceed as follows:
264 You will see the following on your screen:
269 Now processing: `/home/fred/ly/test.ly'
271 Interpreting music...[1]
272 @emph{ ... more interesting stuff ... }
273 PDF output to `test.pdf'...
274 DVI output to `test.dvi'...
278 @cindex Viewing music
281 The results of the ly2dvi run are two files, @file{test.dvi} and
282 @file{test.pdf}. The PDF file (@file{test.pdf}) is the one you can
283 print or view. For example, viewing PDF can be done with ghostview.
284 If a version of ghostview is installed on your system, one of these
285 commands will produce a window with some music notation on your
298 If the music on your screen looks good, you can print it by clicking
299 File/Print inside ghostview.
301 The DVI file (@file{test.dvi}) contains the same sheet music in a
302 different format. DVI files are more easily processed by the computer,
303 so viewing them usually is quicker. You can run @code{xdvi test.dvi}
304 @c KDVI doesn't grok the PS specials.
306 @c @code{kdvi test.dvi}
308 to view the DVI file. In Xdvi, the mouse buttons
309 activate magnifying glasses. Unfortunately, variable symbols (such as
310 beams and slurs) are not displayed in the magnifying glasses.
315 @cindex Printing output
319 If you are familiar with @TeX{}, be warned: do not use other DVI
320 drivers like @code{dvilj}. LilyPond DVI use embedded PostScript code
321 and will not render correctly with other DVI drivers besides
329 Various commands for formatting and printing music are detailed in
330 @ref{Invoking LilyPond}.
333 @unnumberedsubsec Windows users
335 Windows users can start the terminal by clicking on the LilyPond or
336 Cygwin icon. Any text editor (such as NotePad, Emacs or Vim) may be
337 used to edit the LilyPond file. When Cygwin's @code{XFree86} X11
338 window system is installed along with @code{tetex-x11} and
339 @code{ghostscript-x11} packages, then the @code{dvi} output may be
340 viewed with @code{xdvi test.dvi} as described above. If you have
341 installed a PostScript/PDF viewer, such as @code{GSView} from
342 @uref{http://www.cs.wisc.edu/~ghost}, viewing the PDF file can be done
346 @code{gsview32 test.pdf}
349 Printing may be done by executing
352 @code{gsview32 /s test.pdf}
360 We continue with the introduction of more musical constructs. Normal
361 rests are entered just like notes with the name ``@code{r}'':
369 \property Score.timing = ##f
370 \property Staff.Clef = \turnOff
371 \property Staff.TimeSignature = \turnOff
378 Rests are described in full detail in @ref{Rests}.
381 @c Tim wants to move this quotes example just before the: quotes-do not-work
382 @c score, but we'd need to remove quotes from the other two (key and
385 @c better to have this just before the `octaves are bad' snipped
386 @c but we'd need to remove the ', from \key and tie
387 To raise a note by an octave, add a high quote @code{'} (apostrophe) to
388 the note name, to lower a note one octave, add a ``low quote'' @code{,}
389 (a comma). Middle C is @code{c'}:
393 c'4 c'' c''' \clef bass c c,
397 \property Score.timing = ##f
398 \property Staff.TimeSignature = \turnOff
399 c'4 c'' c''' \clef bass c c,
404 A tie is created by adding a tilde ``@code{~}'' to the first note
407 @lilypond[fragment,verbatim]
412 A tie is different from a slur. A tie simply makes the first note
413 sound longer, and can only be used on pairs of notes with the same
414 pitch. Slurs indicate the articulations of notes, and can be used on
415 larger groups of notes. Slurs and ties are also nested in practice:
416 @lilypond[fragment, relative=1]
417 c2-~-( c8 fis fis4 ~ fis2 g2-)
420 The notation manual discusses ties in @ref{Ties}.
422 The key signature is set with the command ``@code{\key}'', followed by
423 a pitch and @code{\major} or @code{\minor}:
433 \property Staff.TimeSignature = \turnOff
443 @c bit on the long/complex/scary taste
444 @c cheating a bit: two lines makes for a friendlier look
445 This example shows notes, ties, octave marks, and rests in action.
454 r4 r8 d''8 cis''4 e''
456 cis''4 cis''8 cis'' bis'4 d''8 cis''-~
469 r4 r8 d''8 cis''4 e''
471 cis''4 cis''8 cis'' bis'4 d''8 cis''-~
474 \paper { linewidth = 50*\staffspace }
480 There are some interesting points to note in this example.
481 Accidentals (sharps and flats) do not have to be marked explicitly:
482 you just enter the note name, and an accidental is printed
483 automatically, only when necessary. Bar lines and beams are drawn
484 automatically. Line breaks are calculated automatically; it does not
485 matter where the lines breaks are in the source file. Finally, the
486 order of time, key and clef changes is not relevant: in the printout,
487 these are ordered using standard notation conventions.
489 The example also indicates that a piece of music written in a high
490 register needs lots of quotes. This makes the input less readable,
491 and is also a potential source of errors.
493 The solution is to use ``relative octave'' mode. In practice, this is
494 the most convenient way to copy existing music. To use relative mode,
495 add @code{\relative} before the piece of music. You must also give a
496 note from which relative starts, in this case @code{c''}. If you do
497 not use octavation quotes (i.e. do not add ' or , after a note),
498 relative mode chooses the note that is closest to the previous one.
499 @c do not use commas or quotes in this sentence
500 For example: @code{c f} goes up; @code{c g} goes down:
510 \property Score.timing = ##f
511 \property Staff.TimeSignature = \turnOff
520 Since most music has small intervals, in relative mode pieces can be
521 written almost without using octavation quotes.
523 @c needed better, maybe even redundant explanation
524 @c added another example below.
525 @c grappig: Pa vond het heel logies, en slim toen-i eenmaal begreep.
526 @c in eerste instantie drong het `relative' niet door zonder extra uitleg.
527 Larger intervals are made by adding octavation quotes. Quotes or
528 commas do not determine the absolute height of a note; the height of a
529 note is relative to the previous one.
530 @c do not use commas or quotes in this sentence
531 For example: @code{c f,} goes down; @code{f, f} are both the same;
532 @code{c' c} are the same; and @code{c g'} goes up:
542 \property Score.timing = ##f
543 \property Staff.TimeSignature = \turnOff
552 Here is an example of the difference between relative mode and
553 ``normal'' (non-relative) mode:
564 \property Score.timing = ##f
565 \property Staff.TimeSignature = \turnOff
581 \property Score.timing = ##f
582 \property Staff.TimeSignature = \turnOff
589 A slur is drawn across many notes, and indicates bound articulation
590 (legato). The starting note and ending note are marked with a
591 ``@code{(}'' and a ``@code{)}'' respectively:
594 @lilypond[fragment,relative 1, verbatim]
595 d4-( c16-)-( cis d e c cis d e-)-( d4-)
600 If you need two slurs at the same time (one for articulation, one for
601 phrasing), you can also make a phrasing slur with @code{\(} and
606 @c fragment of 1st hrn in Adams' The Chairman Dances, with creative
607 @c chromatic thing pasted in front. (admittedly the original does not
608 @c have a phrasing slur. The problem is that we do not want the slur
609 @c and the Phrasing slur to collide. We are trying to make a good
613 @lilypond[fragment,relative 1, verbatim]
614 a8-(-\( ais b c-) cis2 b'2 a4 cis, c-\)
619 Beams are drawn automatically, but if you do not like the choices, you
620 can enter beams by hand. Mark the first note to be beamed with
621 @code{[} and the last one with @code{]}:
623 @lilypond[fragment,relative 1, verbatim]
624 a8-[ ais-] d-[ es r d-]
629 To print more than one staff, each piece of music that makes up a staff
630 is marked by adding @code{\context Staff} before it. These
631 @code{Staff}'s are then grouped inside @code{<} and @code{>}, as is
635 @lilypond[fragment,verbatim]
637 \context Staff = staffA { \clef violin c'' }
638 \context Staff = staffB { \clef bass c }
643 In this example, @code{staffA} and @code{staffB} are names that are
644 given to the staves. It does not matter what names you give, as long
645 as each staff has a different name. If you give them the same name,
646 they are assumed to belong on the same staff, and will be printed like
651 We can now typeset a melody with two staves:
654 @lilypond[verbatim,singleline]
657 < \context Staff = staffA {
661 e2-( d4 c2 b4 a8-[ a-]
662 b-[ b-] g-[ g-] a2.-) }
664 \context Staff = staffB {
675 Notice that the time signature is specified in one melody staff only
676 (the top staff), but is printed on both. LilyPond knows that the time
677 signature should be the same for all staves.
681 Common accents can be added to a note using @code{-.}, @code{--}, @code{->}:
683 @lilypond[verbatim,relative 1]
689 Similarly, fingering indications can be added to a note using @code{-}
690 and the digit to be printed.
691 @lilypond[verbatim,relative 1]
699 Dynamic signs are made by adding the markings to the note:
701 @lilypond[verbatim,relative 1]
707 Crescendi and decrescendi are started with the commands @code{\<} and
708 @code{\>}. The command @code{\!} finishes a crescendo on the note it
711 @lilypond[verbatim,relative 1]
712 c2-\< c2-\!-\ff c2-\> c2-\!
717 Chords can be made by
718 surrounding pitches with @code{<<} and @code{>}>:
720 @lilypond[relative 0, fragment,verbatim]
721 r4 <<c e g>>4 <<c f a>>8
727 You can combine beams and ties with chords. Beam and tie markings
728 must be placed outside the chord markers:
730 @lilypond[relative 0, fragment,verbatim]
731 r4 <<c e g>>8-[ <<c f a>>-]-~ <<c f a>>
737 r4 <<c e g>>8-\>-( <<c e g>> <<c e g>> <<c f a>>8-\!-)
739 @lilypond[relative 0, fragment]
741 r4 <<c e g>>8-\>-( <<c e g>> <<c e g>> <<c f a>>8-\!-)
747 A pickup (or upstep) is entered with the keyword @code{\partial}. It
748 is followed by a duration: @code{\partial 4} is a quarter note upstep.
749 @lilypond[relative 1,verbatim,fragment]
754 Tuplets are made with the @code{\times} keyword. It takes two
755 arguments: a fraction and a piece of music. The duration of the piece
756 of music is multiplied by the fraction. Triplets make notes occupy
757 2/3 of their notated duration, so for a triplet, the fraction is 2/3.
759 @lilypond[relative 0,verbatim,fragment]
760 \times 2/3 { f8 g a }
767 Comments are pieces of the input that are ignored. There are two
768 types of comments. A line comments are introduced by @code{%}: after
769 that, the rest of that line is ignored. Block comments span larger
770 sections of input. Anything that is enclosed in @code{%@{} and
771 @code{%@}} is ignored too. The following fragment shows possible uses
775 % notes for twinkle twinkle follow:
780 This line, and the notes below
781 are ignored, since they are in a
791 @node Printing lyrics
792 @section Printing lyrics
795 Lyrics are entered by separating each syllable with a space, and
796 surrounding them with @code{\lyrics @{ @dots{} @}}, for example
798 \lyrics @{ I want to break free @}
801 Like notes, lyrics are also a form of music, but they must not be
802 printed on a staff, which is the default way to print music. To print
803 them as lyrics, they must be marked with @code{ \context Lyrics}:
805 \context Lyrics \lyrics @{ I want to break free @}
807 The melody for this song is as follows
808 @lilypond[fragment,relative=1]
811 \times 2/3 { f4 g g } \times 2/3 { g4-( a2-) }
814 The lyrics can be set to these notes, combining both with the
815 @code{\addlyrics} keyword:
819 \context Lyrics @dots{}
823 @lilypond[singleline,verbatim]
830 \times 2/3 { f g g } \times 2/3 { g4-( a2-) }
832 \context Lyrics \lyrics { I want to break free }
838 This melody ends on a @rglos{melisma}, a single syllable (``free'')
839 sung to more than one note. This is indicated with a @emph{extender
840 line}. It is entered as two underscores, i.e.,
842 \lyrics @{ I want to break free __ @}
844 @lilypond[singleline]
851 \times 2/3 { f g g } \times 2/3 { g4-( a2-) }
853 \context Lyrics \lyrics { I want to break free __ }
859 Similarly, hyphens between words can be entered as two dashes,
860 resulting in a centered hyphen between two syllables.
862 Twin -- kle twin -- kle
864 @lilypond[singleline]
866 \addlyrics \notes \relative f' { \time 2/4
868 \context Lyrics \lyrics { Twin -- kle twin -- kle
872 More options, like putting multiple lines of lyrics below a melody are
873 discussed in @ref{Vocal music}.
877 @section A lead sheet
879 In popular music, it is common to denote accompaniment as chord-names.
880 Using them in LilyPond has two parts, just like lyrics: entering the
881 chords (with @code{\chords}), and printing them (with @code{\context
884 Chord names are entered by starting chords mode (with @code{\chords}).
885 In chords mode, you can enter chords with a letter (indicating the
886 root of the chord), and a durations following that.
889 \chords { c2 f4. g8 }
891 The result of @code{\chords} is a list of chords, and is equivalent
892 to entering chords with @code{<<@dots{}>>}.
894 Other chords can be created by adding modifiers, after a colon. The
895 following example shows a few common modifiers
898 \chords { c2 f4:m g4:maj7 gis1:dim7 }
901 Printing chords is done by adding @code{\context ChordNames}
902 before the chords thus entered:
905 \context ChordNames \chords \chords { c2 f4.:m g4.:maj7 gis8:dim7 }
908 A complete list of modifiers, and other options for layout are in the
909 reference manual section @ref{Chords}.
912 When put together, chord names, lyrics and a melody form
913 a lead sheet, for example,
918 \context ChordNames \chords @{ @emph{chords} @}
920 \notes @emph{the melody}
921 \context Lyrics \lyrics @{ @emph{the text} @}
929 \context ChordNames \chords { r8 c2:sus4 f }
931 \notes \relative c' {
934 \times 2/3 { f g g } \times 2/3 { g4-( a2-) } }
935 \context Lyrics \lyrics { I want to break free __ }
937 \paper{ raggedright = ##t }
942 @node Listening to output
943 @section Listening to output
945 MIDI (Musical Instrument Digital Interface) is a standard for
946 connecting and recording digital instruments. A MIDI file is like a
947 tape recording of a MIDI instrument. The @code{\midi} block makes the
948 music go to a MIDI file, so you can listen to the music you entered.
949 It is great for checking the music: octaves that are off, or
950 accidentals that were mistyped, stand out very much when listening to
951 the musical transcription.
953 @code{\midi} can be used in similarly to @code{\paper @{ @}}, for
958 \midi @{ \tempo 4=72 @}
963 Here, the tempo is specified using the @code{\tempo} command. In this
964 case the tempo of quarter notes is set to 72 beats per minute. More
965 information on auditory output is in the @ref{Sound} section in the
972 Bibliographic information is entered in a separate block, the
973 @code{\header} block. The name of the piece, its composer, etc. are
974 entered as assignment within @code{\header @{ @dots{} @}}. For
978 title = "Eight miniatures"
979 composer = "Igor Stravinsky"
980 tagline = "small is beautiful"
986 @cindex bibliographic information
992 When the file is processed by @code{ly2dvi}, the title and composer
993 specified are printed above the music. The `tagline' is a short line
994 printed at bottom of the last page, which normally says ``Lily was
995 here, version @dots{}''. In the example above, it is replaced by the
996 line ``small is beautiful.''
998 Normally, the @code{\header} is put at the top of the file. However,
999 for a document that contains multiple pieces (e.g. a etude book, or
1000 part with multiple movements), then the header can be put into the
1001 @code{\score} block as follows In this case, the name of each piece
1002 will be printed before each movement.
1005 @cindex Lily was here
1006 @cindex signature line
1011 title = "Eight miniatures"
1012 composer = "Igor Stravinsky"
1013 tagline = "small is beautiful"
1017 \header @{ piece = "Adagio" @}
1020 \header @{ piece = "Menuetto" @}
1024 More information on titling can be found in @ref{Invoking ly2dvi}.
1027 @node Single staff polyphony
1028 @section Single staff polyphony
1030 When different melodic lines are combined on a single staff, these are
1031 printed as polyphonic voices: each voice has its own stems, slurs
1032 and beams, and the top voice has the stems up, while the bottom voice
1035 Entering such parts is done by entering each voice as a sequence (with
1036 @code{@{ .. @}}), and combing those simultaneously, separating the
1037 voices with @code{\\}:
1039 @lilypond[verbatim,relative]
1040 < { a4 g2 f4-~ f4 } \\
1044 More features of polyphonic typesetting are in the notation manual,
1048 @section Piano staffs
1050 @cindex staff switch, manual
1051 @cindex cross staff voice, manual
1052 @cindex @code{\translator}
1057 @node Organising larger pieces
1058 @section Organising larger pieces
1060 TODO: discuss identifiers, p&c, .
1066 Lilypond and its language are still under development, and
1067 occasionally details of the syntax are changed. The @code{version}
1068 fragment indicates which LilyPond version the input file was written
1069 for. When you compile this file, the version number will be
1070 checked. When the file is too old, a warning is issued. The version
1071 number is also used by the @code{convert-ly} program (See
1072 @ref{Invoking convert-ly}), which updates the file to the latest
1073 version automatically.
1080 @code{s} is a spacer rest. It does not print anything, but it does have
1081 the duration of a rest. It is useful for filling up voices that
1082 temporarily do not play. In this case, the viola does not come until one
1083 and a half measure later.
1087 \grace <<e g>>-( <<d f>>4-) <<c e>>2
1089 @cindex @code{\grace}
1092 @code{\grace} introduces grace notes. It takes one argument, in this
1093 case a chord. A slur is introduced starting from the @code{\grace}
1094 ending on the following chord.
1105 @{ <<d f>>8 <<e g>> <<f a>> @}
1107 The piece of music to be `tripletted' is sequential music containing
1111 The bass has a little hoom-pah melody to demonstrate parts switching
1112 between staves. Since it is repetitive, we use repeats:
1115 hoomPah = \repeat unfold 8
1117 @cindex unfolded @code{\repeat}
1118 The unfolded repeat prints the notes in its argument as if they were
1119 written out in full eight times.
1122 @node Fine tuning a piece
1123 @section Fine tuning a piece
1125 In this section we show some ways to fine tune the final output of a
1126 piece. We do so using a single measure of a moderately complex piano
1127 piece: a Brahms intermezzo (opus 119, no. 1). Both fragments (the
1128 tuned and the untuned versions) are in @file{input/tutorial/}.
1130 The code for the untuned example shows us some new things.
1132 @lilypondfile[verbatim]{brahms-original.ly}
1143 Now that we have the basic piece of music entered, we want to fine
1144 tune it so that we get something that resembles the original printed
1145 edition by Schott/Universal Edition:
1147 @lilypondfile{brahms-tweaked.ly}
1149 @cindex tuning graphical objects
1151 Fine tuning involves overriding the defaults of the printing system.
1152 We do this by setting variables which control how Lilypond prints
1153 symbols. Printed symbols are called graphical objects (often
1154 abbreviated to @emph{grob}). Each object is described by a bunch of
1155 settings. Every setting is a variable: it has a name and a value
1156 which you can change. These values determine the fonts, offsets,
1157 sub-routines to be called on the object, etc. The initial values of
1158 these settings are set in the Scheme file
1159 @file{scm/grob-description.scm}.
1161 @cindex slur attachments
1163 We start with the slur in the upper part, running from F sharp to A. In
1164 the printed edition, this slur runs from stem to stem; in our version,
1165 the slur begins at the note head of the F sharp. The following property
1166 setting forces all slurs to run from stem to stem (not from or to note
1170 \property Voice.Slur \set #'attachment = #'(stem . stem)
1173 More precisely, this command modifies the definition of the @code{Slur}
1174 object in the current @code{Voice}. The variable @code{attachment} is
1175 set to the pair of symbols @code{'(stem . stem)}.
1177 @cindex internal documentation
1178 @cindex finding graphical objects
1179 @cindex graphical object descriptions
1181 This command fixes one particular problem with a slur. The rest of
1182 this section explains how to figure out which properties to tune for
1183 your own scores. To discover this, you must have a copy of the
1184 internals document. This is a set of HTML pages which should be
1185 included if you installed a binary distribution. [TODO: revise for
1186 new site.] These HTML pages are also available on the web: go to the
1187 LilyPond website, click ``Documentation: Index'' on the side bar, look
1188 in the ``Information for uses'' section, and click on ``Documentation
1191 You might want to bookmark either the HTML files on your disk, or the
1192 one on the web (the HTML on your hard drive will load much faster than
1193 the ones on the web!). One word of caution: the internals
1194 documentation is generated from the definitions that the program uses.
1195 Hence, the internals documentation is strongly tied to the version you
1196 use. Before you proceed, make sure that the program and documentation
1197 have matching version numbers.
1199 @c TODO: the quote is incorrect, although that shouldn't be a big
1200 @c problem for the reader.
1201 Suppose that you wanted to tune the behavior of the slur. The first
1202 step is to get some general information on slurs in LilyPond. Turn to
1203 the index, and look up ``slur''. The section on slurs says
1205 The grob for this object is @internalsref{Slur}, generally in
1206 @internalsref{Voice} context.
1209 So the graphical object for this object is called @code{Slur}, and
1210 slurs are created in the @code{Voice} context. If you are reading
1211 this tutorial in the HTML version, then you can simply click Slur,
1212 otherwise, you should look it up the internal documentation: click
1213 ``grob overview'' and select ``slur'' (the list is alphabetical).
1215 Now you get a list of all the properties that the slur object
1216 supports, along with their default values. Among the properties we
1217 find the @code{attachment} property with its default setting.
1218 The property documentation explains that the following setting will
1219 produce the desired effect:
1221 \property Voice.Slur \set #'attachment = #'(stem . stem)
1224 @c this is a long section, and adding an extra space here helps to
1225 @c break it into smaller subsections and thus is easier to understand.
1228 Next we want to move the fingering `3'. In the printed edition it is
1229 not above the stem, but a little lower and slightly left of the stem.
1230 From the user manual we find that the associated graphical object is
1231 called @code{Fingering}, but how do we know if we should use
1232 @code{Voice} or @code{Staff}? In many cases, @code{Voice} is a safe
1233 bet, but you can also deduce this information from the internals
1234 documentation: if you visit the documentation of @code{Fingering}, you
1237 Fingering grobs are created by: Fingering_engraver
1240 Clicking @code{Fingering_engraver} will show you the documentation of
1241 the module responsible for interpreting the fingering instructions and
1242 translating them to a @code{Fingering} object. Such a module is called
1243 an @emph{engraver}. The documentation of the @code{Fingering_engraver}
1246 Fingering_engraver is part of contexts: Voice and TabVoice
1248 so tuning the settings for Fingering should be done using either
1250 \property Voice.Fingering \set @dots{}
1254 \property TabVoice.Fingering \set @dots{}
1257 Since the @code{TabVoice} is only used for tab notation, we see that
1258 the first guess @code{Voice} was indeed correct.
1260 @cindex setting object properties
1261 @cindex @code{extra-offset}
1263 For shifting the fingering, we use the property @code{extra-offset}.
1264 The following command manually adds an offset to the object. We move
1265 it a little to the left, and 1.8 staff space downwards.
1267 \once \property Voice.Fingering \set #'extra-offset = #'(-0.3 . -1.8)
1269 The @code{extra-offset} is a low-level feature: it moves around
1270 objects in the printout; the formatting engine is completely oblivious
1271 to these offsets. The unit of these offsets are staff-spaces. The
1272 first number controls left-right movement; a positive number will move
1273 the object to the right. The second number controls up-down movement;
1274 a positive number will move it higher.
1275 We only want to offset a single object, so this statement is adorned
1278 @cindex property types
1279 @cindex translator properties
1280 @cindex grob properties
1281 @cindex music properties
1284 There are three different types of variables in LilyPond, something
1285 which can be confusing at first (and for some people it stays
1286 confusing). Variables such as @code{extra-offset} and
1287 @code{attachment} are called grob properties. They are not the same
1288 as translator properties, like @code{autoBeaming}. Finally, music
1289 expressions are internally stored using properties (so-called music
1290 properties). You will encounter music properties if you run Scheme
1291 functions on music using @code{\apply}.
1293 The second fingering instruction should be moved up a little to avoid
1294 a collision with the slur. This could be achieved with
1295 @code{extra-offset}, but in this case, a simpler mechanism also
1296 works. We insert an empty text between the 5 and the note. The empty
1297 text pushes the fingering instruction away:
1299 a-)^" "^\markup @{ \finger "5" @}
1302 A fingering instruction, which would be entered as @code{^5}, is put
1303 as close to the notes as possible, closer than the space entered to
1304 push away the 5. Hence, the 5 is entered as a normal text, with the
1305 formatting of fingering instructions.
1309 Normally one would specify all dynamics in the same voice, so that
1310 dynamics (such as @b{f} and @b{p}) will be aligned with hairpins. But
1311 in this case, we do not want the decrescendo to be aligned with the
1312 piano sign. We achieve this by putting the dynamic markings in different
1313 voices. The crescendo should be above the upper staff. This can be
1314 forced by using the precooked command
1319 However, if you do that the decrescendo will be too close to the upper
1320 voice and collide with the stems. Looking at the manual for dynamics,
1321 we notice that ``Vertical positioning of these symbols is handled by
1322 the @internalsref{DynamicLineSpanner} grob.''. If we turn to the
1323 documentation of @code{DynamicLineSpanner}, we find that
1324 @code{DynamicLineSpanner} supports several so-called `interfaces'.
1325 This object not only puts objects next to the staff
1326 (@code{side-position-interface}), but it also groups dynamic objects
1327 (@code{axis-group-interface}), is considered a dynamic sign itself
1328 (@code{dynamic-interface}), and is an spanning object
1329 (@code{spanner-interface}). It also has the standard
1330 @code{grob-interface} with all the variables that come with it.
1332 For the moment we are interested in side positioning:
1334 side-position-interface
1336 Position a victim object (this one) next to other objects (the
1337 support). In this case, the direction signifies where to put the
1338 victim object relative to the support (left or right, up or down?)
1340 Between the object and its support (in this case, the descending
1341 notes), there should be more space. This space is controlled by
1342 @code{padding}, so we increase it.
1344 \property Voice.DynamicLineSpanner \override #'padding = #5.0
1350 Brahms uses music notation is a slightly unorthodox way. Ties
1351 usually happen only within one voice. In this piece, the composer
1352 gladly produces ties that jump voices. We deal with this by faking
1353 these ties: whenever we need such a tie, we insert a notehead in a
1354 different voice, and blank the stem. This is done in the following
1357 @cindex transparent objects
1358 @cindex removing objects
1359 @cindex invisible objects
1361 \property Voice.Stem \set #'transparent = ##t
1364 Blanking the stem should be done for only one object. One of the ways
1365 to achieve that, is by setting the property before a note. Reverting
1366 it afterwards is tedious, so for setting a property only once, we have
1367 the syntax @code{\once}: it reverts the property directly before
1368 proceeding to the next step in time.
1370 The @code{\once} keyword is added to @code{\property}.
1373 Finally, the last tie is forced up using @code{\tieUp}.
1377 Here is the complete ``fine tuned'' version, which includes all the
1378 modifications we discussed in this section:
1380 @lilypondfile[verbatim]{brahms-tweaked.ly}
1383 @node An orchestral score
1384 @section An orchestral score
1388 * Extracting an individual part::
1392 Our next two examples demonstrate one way to create an orchestral
1393 score in LilyPond. When typesetting a piece for several instruments,
1394 you will want to create a full score (for the conductor) along with
1395 several individual parts (for the players).
1397 We will declare the music for each instrument individually, giving
1398 the music of each instrument its own name. These pieces of music are
1399 then combined in different @code{\score} blocks to produce different
1400 combinations of instruments (for example, one @code{\score} block may
1401 only include the cello part; another @code{\score} block may be for
1402 all the strings, and yet another @code{\score} block may be for all
1405 This orchestral score example consists of three input files. In the
1406 first file, @file{os-music.ly}, we define the music for all
1407 instruments. This file will be used for producing the score and the
1408 separate parts, but the file does not produce any sheet music itself.
1409 Other files reference it by stating @code{\include "os-music.ly"}.
1414 title = "Zo, goed lieverd?"
1415 subtitle = "How's, this babe?"
1424 Key = \notes \key as \major
1425 flautoI = \notes\relative c'' @{
1427 bes as bes as bes as bes as
1429 flautoII = \notes\relative c'' @{
1430 as8 bes as bes R1 d4 ~ d
1432 tromboI = \notes\relative c'' @{
1433 c4. c8 c8 c4. es4 r as, r
1435 tromboII = \notes\relative c'' @{
1436 as4. as8 as8 as4. R1*1/2 as4 es'
1438 timpani = \notes\relative c, @{
1439 \times 2/3 @{ f4 f f @}
1440 \times 4/5 @{ as8 as as as as @}
1443 corno = \notes\relative c' @{
1444 bes4 d f, bes d f, bes d
1448 We will not examine this example line by line, since you already know
1449 most of it. We'll examine a few lines which contain new elements.
1460 This declares settings to be used globally. The @code{\skip} command
1461 produces no output, but moves forward in time: in this case, the
1462 duration of a half note (@code{2}), and that four times (@code{*4}).
1463 This brings us to the end of the piece, and we can set the end bar.
1464 You can use @code{s} as a shortcut for @code{\skip} (the last line of
1465 this section would be @code{s2*4 \bar"|."}).
1469 Key = \notes \key as \major
1471 This declares the key signature of the piece and assign it to the
1472 identifier @var{Key}. Later on we will use @code{\Key} for all staves
1473 except those for transposing instruments.
1475 @node The full score
1476 @subsection The full score
1479 The second file, @inputfileref{input/tutorial,os-score.ly}, reads the
1480 definitions of the first (@inputfileref{input/tutorial,os-music.ly}), and
1481 defines the @code{\score} block for the full conductor's score.
1486 \include "os-music.ly"
1487 \include "paper13.ly"
1489 textFlat = \markup @{\smaller \musicglyph #"accidentals--1"@}
1493 \property Score.BarNumber \override #'padding = #3
1494 \context StaffGroup = woodwind <
1495 \context Staff = flauti <
1496 \property Staff.midiInstrument = #"flute"
1497 \property Staff.instrument = "2 Flauti"
1498 \property Staff.instr = "Fl."
1500 \context Voice=one @{ \voiceOne \flautoI @}
1501 \context Voice=two @{ \voiceTwo \flautoII @}
1504 \context StaffGroup = timpani <
1505 \context Staff = timpani <
1506 \property Staff.midiInstrument = #"timpani"
1507 \property Staff.instrument = \markup @{ \column << "Timpani" "(C-G)" >> @}
1508 \property Staff.instr = #"Timp."
1514 \context StaffGroup = brass <
1515 \context Staff = trombe <
1516 \property Staff.midiInstrument = #"trumpet"
1517 \property Staff.instrument = \markup @{ \column << "2 Trombe" "(C)" >> @}
1518 \property Staff.instr = \markup@{ \column << "Tbe." "(C)">> @}
1520 \context Voice=one \partcombine Voice
1521 \context Thread=one \tromboI
1522 \context Thread=two \tromboII
1524 \context Staff = corni <
1525 \property Staff.midiInstrument = #"french horn"
1526 \property Staff.instrument
1527 = \markup @{ \column << "Corno" @{ "(E" \textFlat ")" @} >> @}
1528 \property Staff.instr =
1529 \markup @{ \column << "Cor." @{ "(E" \textFlat ")" @} >> @}
1530 \property Staff.transposing = #3
1531 \notes \key bes \major
1532 \context Voice=one \corno
1537 indent = 15 * \staffspace
1538 linewidth = 60 * \staffspace
1539 textheight = 90 * \staffspace
1542 \consists "Multi_measure_rest_engraver"
1545 \HaraKiriStaffContext
1546 \remove "Multi_measure_rest_engraver"
1555 @center @strong{Zo, goed lieverd?}
1557 @center How's, this babe?
1565 @lilypondfile{os-score.ly}
1569 \include "os-music.ly"
1571 First we need to include the music definitions we made in
1576 [TODO: mention in a more relevant place]
1580 #(ly:set-point-and-click 'line-column)
1583 This piece of Scheme code executes the function
1584 @code{ly:set-point-and-click} with the argument
1585 @code{line-column}. Editing input files can be complicated if you are
1586 working with large files: if you are digitizing existing music, you have
1587 to synchronize the .ly file, the sheet music on your lap and the sheet
1588 music on the screen. The point-and-click mechanism makes it easy to
1589 find the origin of an error in the LY file: when you view the file with
1590 Xdvi and click on a note, your editor will jump to the spot where that
1591 note was entered. For more information, see @ref{Point and click}.
1597 #(define text-flat '((font-relative-size . -2)
1598 (music "accidentals--1")))
1601 To name the transposition of the french horn, we will need a piece of
1602 text with a flat sign. LilyPond has a mechanism for font selection and
1603 kerning called Scheme markup text (See @ref{Text markup}). The flat
1604 sign is taken from the music font, and its name is @code{accidentals--1}
1605 (The natural sign is called @code{accidentals-0}). The default font is
1606 too big for text, so we select a relative size of @code{-2}.
1613 All staves are simultaneous and use the same global settings.
1617 \property Score.BarNumber \override #'padding = #3
1619 LilyPond prints bar numbers at the start of each line, but
1620 unfortunately they end up a bit too close to the staff in this
1621 example. In LilyPond, a bar number is called @var{BarNumber}.
1622 BarNumber objects can be manipulated through their
1623 @var{side-position-interface}. One of the properties of a
1624 @var{side-position-interface} that can be tweaked is @var{padding}:
1625 the amount of extra space that is put between this and other objects.
1626 We set the padding to three staff spaces.
1628 You can find information on all these kind of properties in LilyPond's
1629 automatically generated documentation in
1631 @ref{ (lilypond-internals)lilypond-internals, LilyPond Internals}
1632 or in @ref{Fine tuning a piece}.
1635 the online documentation or in the previous section of the tutorial.
1642 \context StaffGroup = woodwind <
1643 \context Staff = flauti <
1645 A new notation context: the @code{StaffGroup}. @code{StaffGroup} can
1646 hold one or more @code{Staff}s, and will print a big bracket at the
1647 left of the score. This starts a new staff group for the woodwind
1648 section (just the flutes in this case). Immediately after that, we
1649 start the staff for the two flutes, who also play simultaneously.
1653 \property Staff.midiInstrument = #"flute"
1655 Specify the instrument for MIDI output (see @ref{MIDI instrument
1660 \property Staff.instrument = "2 Flauti"
1661 \property Staff.instr = "Fl."
1663 This defines the instrument names to be printed in the
1664 margin. @code{instrument} specifies the name for the first line
1665 of the score, @code{instr} is used for the rest of the score.
1671 The flutes play in the default key.
1675 \context Voice=one @{ \voiceOne \flautoI @}
1676 \context Voice=two @{ \voiceTwo \flautoII @}
1678 Last come the actual flute parts. Remember that we are still in
1679 simultaneous mode. We name both voices differently, so that LilyPond
1680 will create two Voice contexts. The flute parts are simple, so
1681 we specify manually which voice is which: @code{\voiceOne} forces the
1682 direction of stems, beams, slurs and ties up, @code{\voiceTwo} sets
1690 Close the flutes staff and woodwind staff group.
1694 \property Staff.instrument = #'(lines "Timpani" "(C-G)")
1696 The timpani staff demonstrates a new piece of scheme markup, it sets two
1701 \context Voice=one \partcombine Voice
1702 \context Thread=one \tromboI
1703 \context Thread=two \tromboII
1705 You have seen the notation contexts Staff and Voice, but here is a new
1706 one: Thread. One or more Threads can be part of a Voice. Thread
1707 takes care of note heads and rests; Voice combine note heads onto a
1710 For the trumpets we use the automatic part combiner (see @ref{Automatic
1711 part combining}) to combine the two simultaneous trumpet parts onto the
1712 trumpet staff. Each trumpet gets its own Thread context, which must be
1713 named @code{one} and @code{two}). The part combiner makes these two
1714 threads share a Voice when they are similar, and splits the threads up
1715 when they are different.
1719 \property Staff.instrument = #`(lines "Corno"
1720 (columns "(E" ,text-flat ")"))
1722 The french horn (``Corno'') has the most complex scheme markup name, made
1723 up of two lines of text. The second line has three elements (columns) --
1724 the @code{(E}, the flat sign @code{text-flat} that we defined previously,
1725 and a final @code{")"}. We use a backquote instead of an
1726 ordinary quote at the beginning of the Scheme expression to be able to
1727 access the @code{text-flat} identifier, `unquoting' it with a ``@code{,}''.
1731 \property Staff.transposing = #3
1733 The french horn is to be tuned in E-flat, so we tell the MIDI back-end to
1734 transpose this staff by three steps.
1736 Note how we can choose different tunings for the text input, sheet music
1737 output and, and MIDI output, using @code{\transpose} and the MIDI Staff
1738 property @var{transposing}.
1742 \notes \key bes \major
1744 Since the horn is transposing, it is in a different key.
1748 indent = 15 * \staffspace
1749 linewidth = 55 * \staffspace
1751 We specify a big indent for the first line and a small linewidth for this
1756 Usually the default setup of notation contexts (Thread, Voice, Staff,
1757 Staffgroup, Score) is just fine. But in this case we want a different
1758 type of Staff context.
1762 \HaraKiriStaffContext
1766 In orchestral scores it often happens that one instrument only has
1767 rests during one line of the score. @code{HaraKiriStaffContext} can
1768 be used as a regular @code{StaffContext} drop-in and will take care of
1769 the automatic removing of empty staves -- so if the strings are the
1770 only instruments playing for a line, LilyPond will only print the string
1771 parts for that line of the score. This reduces the number of page turns
1772 (and the number of dead trees!) required in a score.
1774 @node Extracting an individual part
1775 @subsection Extracting an individual part
1777 The third file, @file{os-flute-2.ly} also reads the definitions of the
1778 first (@file{os-music.ly}), and defines the @code{\score} block for the
1782 \include "os-music.ly"
1783 \include "paper16.ly"
1787 \property Score.skipBars = ##t
1788 \property Staff.midiInstrument = #"flute"
1794 instrument = "Flauto II"
1797 linewidth = 80 * \staffspace
1798 textheight = 200 * \staffspace
1806 @center @strong{Zo, goed lieverd?}
1808 @center How's, this babe?
1809 @center @emph{Flauto II}
1816 @lilypondfile{os-flute-2.ly}
1819 Because we separated the music definitions from the @code{\score}
1820 instantiations, we can easily define a second score with the music of
1821 the second flute. This is the part for the second flute player. Of
1822 course, we would make separate parts for all individual instruments if
1823 we were preparing the score for an orchestra.
1829 In this individual part the second flute has a whole staff for itself,
1830 so we do not want to force stem or tie directions.
1835 instrument = "Flauto II"
1838 The @code{\header} definitions were also read from @file{os-music.ly},
1839 but we need to set the instrument for this particular score.
1843 \property Score.skipBars = ##t
1845 In the conductor's full score, all bars with rests are printed, but for
1846 the individual parts, we want to print one multimeasure rest instead of
1847 many consecutive empty bars. LilyPond will do this if
1848 @code{Score.skipBars} is set to true (@code{##t}).
1851 @node Integrating text and music
1852 @section Integrating text and music
1855 @cindex La@TeX{}, music in
1856 @cindex HTML, music in
1857 @cindex Texinfo, music in
1859 Sometimes you might want to use music examples in a text that you are
1860 writing (for example a musicological treatise, a songbook, or (like us)
1861 the LilyPond manual). You can make such texts by hand, simply by
1862 importing a PostScript figure into your word processor. However,
1863 there is an automated procedure to reduce the amount of work.
1865 If you use HTML, La@TeX{}, or Texinfo, you can mix text and LilyPond
1866 code. A script called @code{lilypond-book} will extract the music
1867 fragments, run LilyPond on them, and put back the resulting notation.
1868 This program is fully described in @ref{lilypond-book manual}. Here
1869 we show a small example. Since the example also contains explanatory
1870 text, we will not comment it further.
1873 \documentclass[a4paper]@{article@}
1876 In a lilypond-book document, you can freely mix music and text. For
1879 \score @{ \notes \relative c' @{
1880 c2 g'2 \times 2/3 @{ f8 e d @} c'2 g4
1884 Notice that the music line length matches the margin settings of the
1887 If you have no \verb+\score+ block in the fragment,
1888 \texttt@{lilypond-book@} will supply one:
1894 In the example you see here, two things happened: a
1895 \verb+\score+ block was added, and the line width was set to natural
1896 length. You can specify many more options using \LaTeX style options
1899 \begin[verbatim,11pt,singleline,
1900 fragment,relative,intertext="hi there!"]@{lilypond@}
1904 The option \texttt@{verbatim@} prints the LilyPond code in addition to
1905 the graphical score, \texttt@{11pt@} selects the default music size,
1906 \texttt@{fragment@} adds a score block, \texttt@{relative@} uses
1907 relative mode for the fragment, and \texttt@{intertext@} specifies
1908 what to print between the \texttt@{verbatim@} code and the music.
1910 If you want to include large examples into the text, it may be more
1911 convenient to put the example in a separate file:
1913 \lilypondfile[printfilename]@{sammartini.ly@}
1915 The \texttt@{printfilename@} option adds the file name to the output.
1920 Under Unix, you can view the results as follows.
1924 $ lilypond-book --outdir=out/ lilbook.tex
1925 lilypond-book (GNU LilyPond) 1.7.16
1926 Reading `input/tutorial/lilbook.tex'
1927 Reading `input/tutorial/sammartini.ly'
1928 @var{lots of stuff deleted}
1929 Writing `out/lilbook.latex'
1931 $ latex lilbook.latex
1932 @var{lots of stuff deleted}
1936 Notice the @code{outdir} option to lilypond-book. Running lilypond-book
1937 and running latex creates a lot of temporary files, and you would not want
1938 those to clutter up your working directory. Hence, we have them created
1939 in a separate subdirectory.
1941 The result looks more or less like this:
1945 In a lilypond-book document, you can freely mix music and text. For
1949 \notes \relative c' {
1950 c2 g'2 \times 2/3 { f8 e d } c'2 g4
1958 Notice that the music line length matches the margin settings of the
1961 If you have no @code{\score} block in the fragment,
1962 @code{lilypond-book} will supply one:
1968 In the example you see here, a number of things happened: a
1969 @code{\score} block was added, and the line width was set to natural
1970 length. You can specify many more options using La@TeX{} style options
1973 @lilypond[verbatim,11pt,singleline,
1974 fragment,relative,intertext="hi there!"]
1978 The option @code{verbatim} also shows the LilyPond code, @code{11pt} selects
1979 the default music size, @code{fragment} adds a score block,
1980 @code{relative} uses relative mode for the fragment, and
1981 @code{intertext} specifies what to print between the
1982 @code{verbatim} code and the music.
1984 If you include large examples into the text, it may be more convenient
1985 to put the example in a separate file:
1987 @lilypondfile[printfilename]{sammartini.ly}
1989 The @code{printfilename} option adds the file name to the output.