]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/user/tutorial.itely
* input/regression/spacing-knee.ly: docstring
[lilypond.git] / Documentation / user / tutorial.itely
1 @c -*-texinfo-*-
2
3 @c TODO:
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?
8
9 @node Tutorial
10 @chapter Tutorial
11
12 @html
13 <!--- @@WEB-TITLE@@=Tutorial --->
14 @end html
15
16 @menu
17 * First steps::                 Music language of LilyPond
18 * Running LilyPond::            Printing music
19 * More basics::                 
20 * Printing lyrics::             
21 * A lead sheet::                
22 * Listening to output::         
23 * Titling ::                    
24 * Single staff polyphony  ::    
25 * Piano staffs::                
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
30 @end menu
31
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.
36
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
41 complex examples.
42
43
44 @node First steps
45 @section First steps
46
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
50
51 @example
52 c d e f g a b
53 @end example
54
55 @noindent
56 then the result looks like this:
57
58 @c ?
59 @c \transpose c c' { c d e f g a b }
60 @c @lily pond[notime]
61 @c \property Score.timing = ##f
62 @lilypond[notime, relative=2]
63 c d e f g a b
64 @end lilypond
65
66 We will continue with this format: First we show a snippet of input,
67 then the resulting output.
68
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:
71
72 @example
73 a1 a2 a4 a16 a32
74 @end example
75
76 @lilypond[notime]
77 \property Score.timing = ##f
78 \property Staff.autoBeaming = ##f
79 \transpose c c' { a1 a2 a4 a16 a32 s16_" " }
80 @end lilypond
81
82 If you do not specify a @rglos{duration}, the previous one is used: 
83
84 @example
85 a4 a a2 a
86 @end example
87
88 @lilypond[notime]
89 \property Score.timing = ##f
90 \transpose c c' { a a a2 a s16_" " }
91 @end lilypond
92
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
98 Dutch}
99
100 @example
101 cis1 ees fisis aeses
102 @end example
103
104 @lilypond[notime]
105 \property Score.timing = ##f
106 \transpose c c' { cis1 ees fisis aeses s16_" " }
107 @end lilypond
108
109 Add a dot @samp{.} after the duration to get a @rglos{dotted note}:
110
111 @example
112 a2. a4 a8. a16
113 @end example
114
115 @lilypond[notime]
116 \property Score.timing = ##f
117 \transpose c c' { a2. a4 a8. a16 s16_" " }
118 @end lilypond
119
120 Entering pitches and durations is fully explained in @ref{Pitches} and
121 @ref{Durations}.
122
123
124 The @rglos{meter} (or @rglos{time signature}) can be set with the
125 @code{\time} command:
126
127 @example
128 \time 3/4
129 \time 6/8
130 \time 4/4
131 @end example
132
133 @c a clef here may lead to confusion
134 @lilypond
135 \property Staff.Clef \set #'transparent = ##t 
136 \time 3/4
137 s4_" "
138 \time 6/8
139 s4_" "
140 \time 4/4
141 s16_" "
142 @end lilypond
143
144 Time signatures and other timing commands are described in @ref{Time
145 signature}.
146
147
148 The @rglos{clef} can be set using the @code{\clef} command:
149
150 @c what is more common name treble or violin?
151 @c in Dutch, its violin.
152 @c in English its definitely treble.
153 @example
154 \clef treble
155 \clef bass
156 \clef alto
157 \clef tenor
158 @end example
159
160 @lilypond[notime]
161 \property Score.timing = ##f
162 \clef violin
163 s4_" "
164 \clef bass
165 s4_" "
166 \clef alto
167 s4_" "
168 \clef tenor
169 s16_" "
170 @end lilypond
171
172 Clefs are fully explained in @ref{Clef}.
173
174
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:
178
179 @example
180 \notes @{
181   \time 3/4
182   \clef bass
183   c2 e4 g2.
184   f4 e d c2.
185 @}
186 @end example
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.
189
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:
194
195 @example
196 \score @{
197   \notes @{
198     \time 3/4
199     \clef bass
200     c2 e4 g2.
201     f4 e d c2.
202   @}
203   \paper @{ @}
204 @}
205 @end example
206
207 @lilypond[noindent]
208 \score {
209   \notes {
210      \time 3/4
211      \clef bass
212      c2 e4 g2.
213      f4 e d c2.
214   }
215   \paper {
216     linewidth = 55 * \staffspace
217   }
218 }
219 @end lilypond
220
221
222 @node Running LilyPond
223 @section Running LilyPond
224
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.
232
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
236 @file{test.ly}:
237
238 @quotation
239 @example
240 \score @{
241   \notes @{ c'4 e' g' @}
242 @} 
243 @end example
244 @end quotation
245
246 @cindex ly2dvi
247
248 @c now this is weird, running ly2dvi to run LilyPond
249 @c (therefore name change proposal) 
250
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:
257
258 @quotation
259 @example
260 ly2dvi -p test.ly
261 @end example
262 @end quotation
263
264 You will see the following on your screen:
265
266 @quotation
267 @example
268 GNU LilyPond 1.7.16
269 Now processing: `/home/fred/ly/test.ly'
270 Parsing...
271 Interpreting music...[1]
272  @emph{ ... more interesting stuff ... }
273 PDF output to `test.pdf'...
274 DVI output to `test.dvi'...
275 @end example
276 @end quotation
277 @cindex DVI file
278 @cindex Viewing music
279 @cindex xdvi
280
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
286 screen:
287 @c eeek
288 @quotation
289 @example
290   gv test.pdf
291   ghostview test.pdf
292   ggv test.pdf
293   kghostview test.pdf
294   xpdf test.pdf
295   gpdf test.pdf
296 @end example
297 @end quotation
298 If the music on your screen looks good, you can print it by clicking
299 File/Print inside ghostview.
300
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.
305 @c or
306 @c @code{kdvi test.dvi}
307 @c
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.
311
312
313 @cindex Ghostscript
314 @cindex @code{lpr}
315 @cindex Printing output
316 @cindex PostScript
317 @cindex PDF
318
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
322 @code{dvips}.
323
324 @cindex dvips
325 @cindex dvilj
326 @cindex DVI driver
327
328
329 Various commands for formatting and printing music are detailed in
330 @ref{Invoking LilyPond}.
331
332
333 @unnumberedsubsec Windows users
334
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
343 with:
344 @quotation
345 @example
346 @code{gsview32 test.pdf}
347 @end example
348 @end quotation
349 Printing may be done by executing
350 @quotation
351 @example
352 @code{gsview32 /s test.pdf}
353 @end example
354 @end quotation
355
356
357 @node More basics
358 @section More basics 
359
360 We continue with the introduction of more musical constructs.  Normal
361 rests are entered just like notes with the name ``@code{r}'':
362
363 @quotation
364 @example
365 r2 r4 r8 r16
366 @end example
367
368 @lilypond[fragment]
369 \property Score.timing = ##f
370 \property Staff.Clef = \turnOff
371 \property Staff.TimeSignature = \turnOff
372 r2 r4 r8 r16
373 s16_" "
374 @end lilypond
375 @end quotation
376 @separate
377
378 Rests are described in full detail in @ref{Rests}. 
379
380
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
383 @c tie) examples...
384
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'}:
390
391 @quotation
392 @example
393 c'4 c'' c''' \clef bass c c,
394 @end example
395
396 @lilypond[fragment]
397 \property Score.timing = ##f
398 \property Staff.TimeSignature = \turnOff
399 c'4 c'' c''' \clef bass c c,
400 @end lilypond
401 @end quotation
402 @separate
403
404 A tie is created by adding a tilde ``@code{~}'' to the first note
405 being tied.
406 @quotation
407 @lilypond[fragment,verbatim]
408 g'4-~ g' a'2-~ a'4
409 @end lilypond
410 @end quotation
411 @separate
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-)
418 @end lilypond
419
420 The notation manual discusses ties in @ref{Ties}.
421
422 The key signature is set with the command ``@code{\key}'', followed by
423 a pitch and  @code{\major} or @code{\minor}:
424 @quotation
425 @example
426 \key d \major
427 g'1
428 \key c \minor
429 g'
430 @end example
431
432 @lilypond[fragment]
433 \property Staff.TimeSignature = \turnOff
434 \key d \major
435 g'1
436 \key c \minor
437 g'
438 @end lilypond
439 @end quotation
440
441
442
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.
446
447 @quotation
448 @example
449 \score @{
450   \notes @{
451     \time 4/4
452     \key d \minor
453     \clef violin
454     r4 r8 d''8 cis''4 e''
455     d''8 a'4.-~ a' b'8
456     cis''4 cis''8 cis'' bis'4 d''8 cis''-~
457     cis''2 r2
458   @}
459   \paper @{ @}
460 @}
461 @end example
462
463 @lilypond
464 \score {
465   \notes {
466     \time 4/4
467     \clef violin
468     \key d \minor
469     r4 r8 d''8 cis''4 e''
470     d''8 a'4.-~ a' b'8
471     cis''4 cis''8 cis'' bis'4 d''8 cis''-~
472     cis''2 r2
473   }
474   \paper { linewidth = 50*\staffspace }
475 }
476 @end lilypond
477 @end quotation
478
479 @c accidentals...
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.
488
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.
492
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:
501
502 @quotation
503 @example
504 \relative c'' @{
505   c f c g c
506 @}
507 @end example
508
509 @lilypond[fragment]
510 \property Score.timing = ##f
511 \property Staff.TimeSignature = \turnOff
512 \relative c'' {
513   c f c g c
514 }
515 @end lilypond
516 @end quotation
517 @separate
518
519
520 Since most music has small intervals, in relative mode pieces can be
521 written almost without using octavation quotes.
522
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:
533
534 @quotation
535 @example
536 \relative c'' @{
537   c f, f c' c g' c,
538 @}
539 @end example
540
541 @lilypond[fragment]
542 \property Score.timing = ##f
543 \property Staff.TimeSignature = \turnOff
544 \relative c'' {
545   c f, f c' c g' c,
546 }
547 @end lilypond
548 @end quotation
549 @separate
550
551
552 Here is an example of the difference between relative mode and
553 ``normal'' (non-relative) mode:
554
555 @quotation
556 @example
557 \relative a @{
558 \clef bass
559   a d a e d c' d'
560 @}
561 @end example
562
563 @lilypond[fragment]
564 \property Score.timing = ##f
565 \property Staff.TimeSignature = \turnOff
566 \relative a {
567 \clef bass
568   a d a e d c' d'
569 }
570 @end lilypond
571 @end quotation
572 @separate
573
574 @quotation
575 @example
576 \clef bass
577   a d a e d c' d'
578 @end example
579
580 @lilypond[fragment]
581 \property Score.timing = ##f
582 \property Staff.TimeSignature = \turnOff
583 \clef bass
584   a d a e d c' d'
585 @end lilypond
586 @end quotation
587 @separate
588
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:
592
593 @quotation
594 @lilypond[fragment,relative 1, verbatim]
595 d4-( c16-)-( cis d e c cis d e-)-( d4-)
596 @end lilypond
597 @end quotation
598 @separate
599
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
602 @code{\)}.
603
604 @c lousy example
605 @c ? --hwn
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
610 @c impression here.
611
612 @quotation
613 @lilypond[fragment,relative 1, verbatim]
614 a8-(-\( ais b  c-) cis2 b'2 a4 cis,  c-\)
615 @end lilypond
616 @end quotation
617 @separate
618
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{]}:
622 @quotation
623 @lilypond[fragment,relative 1, verbatim]
624 a8-[ ais-] d-[ es r d-]
625 @end lilypond
626 @end quotation
627 @separate
628
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
632 demonstrated here:
633
634 @quotation
635 @lilypond[fragment,verbatim]
636 <
637   \context Staff = staffA { \clef violin c'' }
638   \context Staff = staffB { \clef bass c }
639 >
640 @end lilypond
641 @end quotation
642
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
647 that.
648
649 @separate
650
651 We can now typeset a melody with two staves:
652
653 @quotation
654 @lilypond[verbatim,singleline]
655 \score {
656   \notes 
657   < \context Staff = staffA {
658       \time 3/4
659       \clef violin
660       \relative c'' {
661         e2-( d4 c2 b4 a8-[ a-]
662         b-[ b-] g-[ g-] a2.-) }  
663     }
664     \context Staff = staffB {
665        \clef bass
666        c2 e4  g2.
667        f4 e d c2.
668     }
669   >
670   \paper {} 
671 }
672 @end lilypond
673 @end quotation
674
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.
678
679 @separate
680
681 Common accents can be added to a note using @code{-.}, @code{--}, @code{->}:
682 @quotation
683 @lilypond[verbatim,relative 1]
684 c-. c-- c->
685 @end lilypond
686 @end quotation
687 @separate
688
689 Similarly, fingering indications can be added to a note using @code{-}
690 and the digit to be printed.
691 @lilypond[verbatim,relative 1]
692   c-3 e-5 b-2 a-1
693 @end lilypond
694
695
696   
697
698
699 Dynamic signs are made by adding the markings to the note:
700 @quotation
701 @lilypond[verbatim,relative 1]
702 c-\ff c-\mf
703 @end lilypond
704 @end quotation
705 @separate
706
707 Crescendi and decrescendi are started with the commands @code{\<} and
708 @code{\>}. The command @code{\!} finishes a crescendo on the note it
709 is attached to.
710 @quotation
711 @lilypond[verbatim,relative 1]
712 c2-\<  c2-\!-\ff  c2-\>  c2-\!
713 @end lilypond
714 @end quotation
715 @separate
716
717 Chords can be made by
718 surrounding pitches with @code{<<} and @code{>}>:
719 @quotation
720 @lilypond[relative 0, fragment,verbatim]
721 r4 <<c e g>>4 <<c f a>>8
722 @end lilypond
723 @end quotation
724 @separate
725
726
727 You can combine beams and ties with chords.  Beam and tie markings
728 must be placed outside the chord markers:
729 @quotation
730 @lilypond[relative 0, fragment,verbatim]
731 r4 <<c e g>>8-[ <<c f a>>-]-~ <<c f a>>
732 @end lilypond
733 @end quotation
734
735 @quotation
736 @example
737 r4 <<c e g>>8-\>-( <<c e g>> <<c e g>>  <<c f a>>8-\!-)
738 @end example
739 @lilypond[relative 0, fragment]
740 \slurUp
741 r4 <<c e g>>8-\>-( <<c e g>> <<c e g>>  <<c f a>>8-\!-)
742 @end lilypond
743 @end quotation
744 @separate
745
746
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]
750   \partial 8
751   f8 c2 d e
752 @end lilypond
753
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.
758 @c
759 @lilypond[relative 0,verbatim,fragment]
760   \times 2/3 { f8 g a }
761   \times 2/3 { c r c }
762 @end lilypond 
763
764
765
766
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
772 for comments.
773
774 @example
775   % notes for twinkle twinkle follow:
776   c4 c   g' g  a a
777   
778   %@{
779   
780     This line, and the notes below
781     are ignored, since they are in a
782     block comment.
783
784     g g f f e e d d c2 
785   %@}
786 @end example
787
788
789
790
791 @node Printing lyrics
792 @section Printing lyrics
793 @cindex lyrics
794
795 Lyrics are entered by separating each syllable with a space, and
796 surrounding them with @code{\lyrics @{ @dots{} @}}, for example
797 @example
798   \lyrics @{ I want to break free @}
799 @end example
800
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}:
804 @example
805   \context Lyrics  \lyrics @{ I want to break free @}
806 @end example
807 The melody for this song is as follows
808 @lilypond[fragment,relative=1]
809    \partial 8
810      c8
811    \times 2/3 {  f4 g g } \times 2/3 { g4-( a2-) }
812 @end lilypond
813
814 The lyrics can be set to these notes, combining both with the
815 @code{\addlyrics} keyword:
816 @example
817  \addlyrics
818     \notes @{ @dots{} @}
819     \context Lyrics @dots{}
820 @end example
821
822 The final result is 
823 @lilypond[singleline,verbatim]
824 \score  {
825  \notes {
826   \addlyrics
827    \relative c' {
828      \partial 8
829      c8
830      \times 2/3 { f g g } \times 2/3 { g4-( a2-) }
831    }
832    \context Lyrics  \lyrics { I want to break free }
833  }
834  \paper{ }
835 }
836 @end lilypond
837
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.,
841 @example
842   \lyrics @{ I want to break free __ @}
843 @end example 
844 @lilypond[singleline]
845 \score  {
846  \notes {
847   \addlyrics
848    \relative c' {
849    \partial 8
850      c8
851      \times 2/3 { f g g } \times 2/3 { g4-( a2-) }
852    }
853    \context Lyrics  \lyrics { I want to break free __ }
854  }
855  \paper{ }
856 }
857 @end lilypond
858
859 Similarly, hyphens between words can be entered as two dashes,
860 resulting in a centered hyphen between two syllables.
861 @example
862   Twin -- kle twin -- kle
863 @end example
864 @lilypond[singleline]
865 \score {
866   \addlyrics \notes \relative f' { \time 2/4
867     f4 f c' c' }
868     \context Lyrics \lyrics { Twin -- kle twin -- kle
869  }}
870 @end lilypond
871
872 More options, like putting multiple lines of lyrics below a melody are
873 discussed in @ref{Vocal music}.
874
875
876 @node A lead sheet
877 @section A lead sheet
878
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
882 ChordNames}).
883
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.
887 @c
888 @lilypond[verbatim]
889   \chords { c2 f4. g8 } 
890 @end lilypond
891 The result of @code{\chords} is a list of chords, and is  equivalent
892 to entering chords with @code{<<@dots{}>>}.
893
894 Other chords can be created by adding modifiers, after a colon.  The
895 following example shows a few common modifiers
896 @c
897 @lilypond[verbatim]
898   \chords { c2 f4:m g4:maj7 gis1:dim7 }
899 @end lilypond
900
901 Printing chords is done by adding @code{\context ChordNames}
902 before the chords thus entered:
903 @c
904 @lilypond[verbatim]
905  \context ChordNames \chords \chords { c2 f4.:m g4.:maj7 gis8:dim7 }
906 @end lilypond
907
908 A complete list of modifiers, and other options for layout are in the
909 reference manual section @ref{Chords}.
910
911 @cindex lead sheet 
912 When put together,  chord names, lyrics and a melody form
913 a lead sheet, for example,
914
915 @example
916 \score @{
917   <
918     \context ChordNames \chords @{ @emph{chords} @}
919     \addlyrics
920       \notes @emph{the melody}
921       \context Lyrics \lyrics @{ @emph{the text} @}
922   >
923   \paper @{ @}
924 @}
925 @end example
926 @lilypond[]
927 \score  {
928   < 
929    \context ChordNames \chords { r8 c2:sus4 f } 
930    \addlyrics
931     \notes \relative c' {
932      \partial 8
933      c8
934      \times 2/3 { f g g } \times 2/3 { g4-( a2-) } }
935    \context Lyrics  \lyrics { I want to break free __ }
936   >
937  \paper{ raggedright = ##t }
938 }
939 @end lilypond
940
941
942 @node Listening to output
943 @section Listening to output
944
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.
952
953 @code{\midi} can be used in similarly to @code{\paper @{ @}}, for
954 example
955 @example 
956 \score @{
957     @var{..music..}
958     \midi  @{ \tempo 4=72 @}
959     \paper  @{ @}
960 @}
961 @end example 
962
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
966 notation manual.
967
968
969 @node Titling 
970 @section Titling
971
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
975 example,
976 @example 
977   \header @{
978     title = "Eight miniatures" 
979     composer = "Igor Stravinsky"
980     tagline = "small is beautiful"
981   @}
982   
983   \score @{ @dots{} @}
984 @end example
985
986 @cindex bibliographic information
987 @cindex titles
988 @cindex composer
989 @cindex ly2dvi
990
991
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.'' 
997
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.
1003
1004
1005 @cindex Lily was here
1006 @cindex signature line
1007 @cindex tag line
1008
1009 @example 
1010   \header @{
1011     title = "Eight miniatures" 
1012     composer = "Igor Stravinsky"
1013     tagline = "small is beautiful"
1014   @}
1015   
1016   \score @{ @dots{}
1017     \header @{ piece = "Adagio" @}
1018   @}
1019   \score @{ @dots{}
1020     \header @{ piece = "Menuetto" @}
1021   @}
1022 @end example
1023
1024 More information on titling can be found in @ref{Invoking ly2dvi}.
1025
1026
1027 @node Single staff polyphony  
1028 @section Single staff polyphony
1029
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
1033 has stems down.
1034
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{\\}:
1038
1039 @lilypond[verbatim,relative]
1040   < { a4 g2 f4-~ f4 } \\
1041     { r4 g4 f2 f4 } >
1042 @end lilypond
1043  
1044 More features of polyphonic typesetting are in the notation manual,
1045 @ref{Polyphony}.
1046
1047 @node Piano staffs
1048 @section Piano staffs
1049
1050 @cindex staff switch, manual
1051 @cindex cross staff voice, manual
1052 @cindex @code{\translator}
1053
1054
1055
1056
1057 @node Organising larger pieces
1058 @section Organising larger pieces
1059
1060 TODO: discuss identifiers, p&c, .
1061
1062 @separate
1063 @example 
1064 \version "1.5.72"
1065 @end example 
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.
1074
1075
1076 @separate
1077 @example 
1078 s1 s2. r4 
1079 @end example 
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. 
1084
1085 @separate
1086 @example 
1087 \grace <<e g>>-( <<d f>>4-) <<c e>>2 
1088 @end example
1089 @cindex @code{\grace}
1090 @cindex ornaments
1091 @cindex grace notes
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.
1095
1096 @separate
1097 @example 
1098 \times 2/3 
1099 @end example
1100 @cindex tuplet
1101 @cindex triplets
1102
1103 @separate
1104 @example 
1105 @{ <<d f>>8 <<e g>> <<f a>> @} 
1106 @end example 
1107 The piece of music to be `tripletted' is sequential music containing
1108 three chords.
1109
1110
1111 The bass has a little hoom-pah melody to demonstrate parts switching
1112 between staves.  Since it is repetitive, we use repeats:
1113 @separate
1114 @example 
1115 hoomPah  =  \repeat unfold 8
1116 @end example
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.
1120 @separate
1121
1122 @node Fine tuning a piece
1123 @section  Fine tuning a piece
1124
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/}.
1129
1130 The code for the untuned example shows us some new things.
1131
1132 @lilypondfile[verbatim]{brahms-original.ly}
1133
1134
1135 @cindex dynamics
1136 @cindex loudness
1137 @cindex forte
1138 @cindex crescendo
1139
1140
1141
1142
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:
1146
1147 @lilypondfile{brahms-tweaked.ly}
1148
1149 @cindex tuning graphical objects
1150
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}.
1160
1161 @cindex slur attachments
1162
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
1167 heads!).
1168
1169 @example
1170   \property Voice.Slur \set #'attachment = #'(stem . stem)
1171 @end example
1172
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)}. 
1176
1177 @cindex internal documentation
1178 @cindex finding graphical objects
1179 @cindex graphical object descriptions 
1180
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
1189 of internals.''
1190
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.
1198
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
1204 @quotation
1205 The grob for this object is @internalsref{Slur}, generally in
1206 @internalsref{Voice} context.
1207 @end quotation
1208
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).
1214
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:
1220 @example 
1221  \property Voice.Slur \set #'attachment = #'(stem . stem)
1222 @end example
1223
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.
1226 @separate
1227
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
1235 will notice
1236 @example
1237 Fingering grobs are created by: Fingering_engraver
1238 @end example
1239
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}
1244 says
1245 @example
1246 Fingering_engraver is part of contexts: Voice and TabVoice
1247 @end example
1248 so tuning the settings for Fingering should be done using either
1249 @example
1250   \property Voice.Fingering \set @dots{}
1251 @end example
1252 or
1253 @example
1254   \property TabVoice.Fingering \set @dots{}
1255 @end example
1256
1257 Since the @code{TabVoice} is only used for tab notation, we see that
1258 the first guess @code{Voice} was indeed correct.
1259
1260 @cindex setting object properties
1261 @cindex @code{extra-offset}
1262
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.
1266 @example
1267  \once \property Voice.Fingering \set #'extra-offset = #'(-0.3 . -1.8) 
1268 @end example   
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
1276 with @code{\once}.
1277
1278 @cindex property types
1279 @cindex translator properties
1280 @cindex grob properties
1281 @cindex music properties
1282 @separate
1283
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}.
1292
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:
1298 @example
1299   a-)^" "^\markup @{ \finger "5" @} 
1300 @end example
1301
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.
1306  
1307 @separate
1308
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 
1315 @example
1316   \dynamicsUp
1317 @end example
1318
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.
1331
1332 For the moment we are interested in side positioning:
1333 @quotation
1334  side-position-interface
1335
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?)
1339 @end quotation
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.
1343 @example
1344  \property Voice.DynamicLineSpanner \override #'padding = #5.0
1345 @end example
1346
1347
1348 @separate
1349
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
1355 snippet of code.
1356
1357 @cindex transparent objects
1358 @cindex removing objects
1359 @cindex invisible objects
1360 @example
1361 \property Voice.Stem \set #'transparent = ##t
1362 d'
1363 @end example
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.
1369
1370 The @code{\once} keyword is added to @code{\property}.
1371
1372
1373 Finally, the last tie is forced up using @code{\tieUp}.
1374
1375 @separate
1376
1377 Here is the complete ``fine tuned'' version, which includes all the
1378 modifications we discussed in this section:
1379
1380 @lilypondfile[verbatim]{brahms-tweaked.ly}
1381
1382
1383 @node An orchestral score
1384 @section An orchestral score
1385
1386 @menu
1387 * The full score::              
1388 * Extracting an individual part::  
1389 @end menu
1390
1391
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).
1396
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
1403 parts together).
1404
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"}.
1410
1411 @example
1412 % os-music.ly
1413 \header @{
1414   title = "Zo, goed lieverd?"
1415   subtitle = "How's, this babe?"
1416   composer = "JCN"
1417   opus = "1"
1418   piece = "Laid back"
1419 @}
1420 global = @{
1421   \time 2/4
1422   \skip 2*4 \bar "|."
1423 @}
1424 Key = \notes \key as \major
1425 flautoI = \notes\relative c'' @{
1426   f8 g f g f g f g
1427   bes as bes as bes as bes as
1428 @}
1429 flautoII = \notes\relative c'' @{
1430   as8 bes as bes R1 d4 ~ d
1431 @}
1432 tromboI = \notes\relative c'' @{
1433   c4. c8 c8 c4. es4 r as, r
1434 @}
1435 tromboII = \notes\relative c'' @{
1436   as4. as8 as8 as4. R1*1/2 as4 es'
1437 @}
1438 timpani = \notes\relative c, @{
1439   \times 2/3 @{ f4 f f @}
1440   \times 4/5 @{ as8 as as as as @}
1441   R1
1442 @}
1443 corno = \notes\relative c' @{
1444    bes4 d f, bes d f, bes d
1445 @}
1446 @end example
1447
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.
1450
1451
1452 @separate
1453 @example
1454 global = @{
1455   \time 2/4
1456   \skip 2*4 \bar "|."
1457 @}
1458 @end example
1459
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"|."}).
1466
1467 @separate
1468 @example
1469 Key = \notes \key as \major
1470 @end example
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.
1474
1475 @node The full score
1476 @subsection The full score
1477
1478
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.
1482
1483 @example
1484 \version "1.7.6"
1485
1486 \include "os-music.ly"
1487 \include "paper13.ly"
1488
1489 textFlat = \markup @{\smaller \musicglyph #"accidentals--1"@}
1490 \score @{
1491   <
1492     \global
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."
1499         \Key
1500         \context Voice=one @{ \voiceOne \flautoI @}
1501         \context Voice=two @{ \voiceTwo \flautoII @}
1502       >
1503     >
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."
1509         \clef bass
1510         \Key
1511         \timpani
1512       >
1513     >
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)">> @}
1519         \Key
1520         \context Voice=one \partcombine Voice
1521           \context Thread=one \tromboI
1522           \context Thread=two \tromboII
1523       >
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
1533       >
1534     >
1535   >
1536   \paper @{
1537     indent = 15 * \staffspace
1538     linewidth = 60 * \staffspace
1539     textheight = 90 * \staffspace
1540     \translator@{
1541       \VoiceContext
1542       \consists "Multi_measure_rest_engraver"
1543     @}
1544     \translator@{
1545       \HaraKiriStaffContext
1546       \remove "Multi_measure_rest_engraver"
1547     @}
1548   @}
1549   \midi @{
1550     \tempo 4 = 75
1551   @}
1552 @}
1553 @end example
1554
1555 @center @strong{Zo, goed lieverd?}
1556 @sp 1
1557 @center How's, this babe?
1558 @flushright
1559 Opus 1.
1560 @end flushright
1561 @flushleft
1562 @sc{Laid back}
1563 @end flushleft
1564
1565 @lilypondfile{os-score.ly}
1566
1567 @separate
1568 @example
1569 \include "os-music.ly"
1570 @end example
1571 First we need to include the music definitions we made in
1572 @file{os-music.ly}.
1573
1574 @ignore
1575
1576 [TODO: mention in a more relevant place]
1577   
1578 @separate
1579 @example
1580 #(ly:set-point-and-click 'line-column)
1581 @end example
1582
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}.
1592 @end ignore
1593
1594
1595 @separate
1596 @example
1597 #(define text-flat '((font-relative-size . -2)
1598          (music "accidentals--1")))
1599 @end example
1600
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}.
1607
1608 @separate
1609 @example
1610   <
1611     \global
1612 @end example
1613 All staves are simultaneous and use the same global settings.
1614
1615 @separate
1616 @example
1617     \property Score.BarNumber \override #'padding = #3
1618 @end example
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.
1627
1628 You can find information on all these kind of properties in LilyPond's
1629 automatically generated documentation in
1630 @ifnottex
1631 @ref{ (lilypond-internals)lilypond-internals, LilyPond Internals}
1632 or in @ref{Fine tuning a piece}.
1633 @end ifnottex
1634 @iftex
1635 the online documentation or in the previous section of the tutorial.
1636 @end iftex
1637
1638 @c  REFERENCE MAO
1639
1640 @separate
1641 @example
1642     \context StaffGroup = woodwind <
1643       \context Staff = flauti <
1644 @end example
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.
1650
1651 @separate
1652 @example
1653         \property Staff.midiInstrument = #"flute"
1654 @end example
1655 Specify the instrument for MIDI output (see @ref{MIDI instrument
1656 names}).
1657
1658 @separate
1659 @example
1660         \property Staff.instrument = "2 Flauti"
1661         \property Staff.instr = "Fl."
1662 @end example
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.
1666
1667 @separate
1668 @example
1669         \Key
1670 @end example
1671 The flutes play in the default key.
1672
1673 @separate
1674 @example
1675         \context Voice=one @{ \voiceOne \flautoI @}
1676         \context Voice=two @{ \voiceTwo \flautoII @}
1677 @end example
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
1683 directions down.
1684
1685 @separate
1686 @example
1687       >
1688     >
1689 @end example
1690 Close the flutes staff and woodwind staff group.
1691
1692 @separate
1693 @example
1694         \property Staff.instrument = #'(lines "Timpani" "(C-G)")
1695 @end example
1696 The timpani staff demonstrates a new piece of scheme markup, it sets two
1697 lines of text.
1698
1699 @separate
1700 @example
1701         \context Voice=one \partcombine Voice
1702           \context Thread=one \tromboI
1703           \context Thread=two \tromboII
1704 @end example
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
1708 stem.
1709
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.
1716
1717 @separate
1718 @example
1719 \property Staff.instrument = #`(lines "Corno"
1720   (columns "(E" ,text-flat ")"))
1721 @end example
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{,}''.
1728
1729 @separate
1730 @example
1731         \property Staff.transposing = #3
1732 @end example
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.
1735
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}.
1739
1740 @separate
1741 @example
1742         \notes \key bes \major
1743 @end example
1744 Since the horn is transposing, it is in a different key.
1745
1746 @separate
1747 @example
1748     indent = 15 * \staffspace
1749     linewidth = 55 * \staffspace
1750 @end example
1751 We specify a big indent for the first line and a small linewidth for this
1752 tutorial.
1753
1754 @separate
1755
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.
1759
1760 @example
1761     \translator@{
1762       \HaraKiriStaffContext
1763     @}
1764 @end example
1765
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.
1773
1774 @node Extracting an individual part
1775 @subsection Extracting an individual part
1776
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
1779 second flute part.
1780
1781 @example
1782 \include "os-music.ly"
1783 \include "paper16.ly"
1784
1785 \score @{
1786   \context Staff <
1787     \property Score.skipBars = ##t
1788     \property Staff.midiInstrument = #"flute"
1789     \global
1790     \Key
1791     \flautoII
1792   >
1793   \header @{
1794     instrument = "Flauto II"
1795   @}
1796   \paper @{
1797     linewidth = 80 * \staffspace
1798     textheight = 200 * \staffspace
1799   @}
1800   \midi @{
1801     \tempo 4 = 75
1802   @}
1803 @}
1804 @end example
1805
1806 @center @strong{Zo, goed lieverd?}
1807 @sp 1
1808 @center How's, this babe?
1809 @center @emph{Flauto II}
1810 @flushright
1811 Opus 1.
1812 @end flushright
1813 @flushleft
1814 @sc{Laid back}
1815 @end flushleft
1816 @lilypondfile{os-flute-2.ly}
1817
1818
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.
1824
1825 @separate
1826 @example
1827     \flautoII
1828 @end example
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.
1831
1832 @separate
1833 @example
1834   \header @{
1835     instrument = "Flauto II"
1836   @}
1837 @end example
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.
1840
1841 @separate
1842 @example
1843     \property Score.skipBars = ##t
1844 @end example
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}).
1849
1850
1851 @node Integrating text and music
1852 @section Integrating text and music
1853
1854
1855 @cindex La@TeX{}, music in
1856 @cindex HTML, music in
1857 @cindex Texinfo, music in
1858
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.
1864
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.
1871
1872 @example
1873 \documentclass[a4paper]@{article@}
1874 \begin@{document@}
1875
1876 In a lilypond-book document, you can freely mix music and text. For
1877 example:
1878 \begin@{lilypond@}
1879   \score @{ \notes \relative c' @{
1880      c2 g'2 \times 2/3 @{ f8 e d @} c'2 g4
1881   @} @}
1882 \end@{lilypond@}
1883
1884 Notice that the music line length matches the margin settings of the
1885 document.
1886
1887 If you have no \verb+\score+ block in the fragment,
1888 \texttt@{lilypond-book@} will supply one:
1889
1890 \begin@{lilypond@}
1891   c'4
1892 \end@{lilypond@}
1893
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
1897 in brackets:
1898
1899 \begin[verbatim,11pt,singleline,
1900   fragment,relative,intertext="hi there!"]@{lilypond@}
1901   c'4 f bes es
1902 \end@{lilypond@}
1903
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.
1909
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:
1912
1913 \lilypondfile[printfilename]@{screech-boink.ly@}
1914
1915 The \texttt@{printfilename@} option adds the file name to the output.
1916
1917 \end@{document@}
1918 @end example
1919
1920 Under Unix, you can view the results as follows.
1921 @example
1922 $ cd input/tutorial
1923 $ mkdir -p out/
1924 $ lilypond-book --outdir=out/ lilbook.tex
1925 lilypond-book (GNU LilyPond) 1.7.16
1926 Reading `input/tutorial/lilbook.tex'
1927 Reading `input/screech-boink6.ly'
1928 @var{lots of stuff deleted}
1929 Writing `out/lilbook.latex'
1930 $ cd out
1931 $ latex lilbook.latex
1932 @var{lots of stuff deleted}
1933 $ xdvi lilbook 
1934 @end example
1935
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.
1940
1941 The result looks more or less like this: 
1942
1943 @separate
1944
1945 In a lilypond-book document, you can freely mix music and text. For
1946 example:
1947 @lilypond
1948 \score {
1949   \notes \relative c' {
1950     c2 g'2 \times 2/3 { f8 e d } c'2 g4
1951   }
1952   \paper {
1953     raggedright = ##t
1954   }
1955 }
1956 @end lilypond
1957
1958 Notice that the music line length matches the margin settings of the
1959 document.
1960
1961 If you have no @code{\score} block in the fragment,
1962 @code{lilypond-book} will supply one:
1963
1964 @lilypond
1965   c'4
1966 @end lilypond
1967
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
1971 in brackets:
1972
1973 @lilypond[verbatim,11pt,singleline,
1974   fragment,relative,intertext="hi there!"]
1975   c'4 f bes es
1976 @end lilypond
1977
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.
1983
1984 If you include large examples into the text, it may be more convenient
1985 to put the example in a separate file:
1986
1987 @lilypondfile[printfilename]{screech-boink.ly}
1988
1989 The @code{printfilename} option adds the file name to the output.
1990