]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/user/refman.itely
release: 1.5.17
[lilypond.git] / Documentation / user / refman.itely
1
2 @c Note:
3 @c
4 @c A menu is needed before every deeper *section nesting of @node's; run
5 @c     M-x texinfo-all-menus-update
6 @c to automagically fill in these menus before saving changes
7
8 @c FIXME: singular vs. plural:  Beams/Beam
9
10
11 @macro refbugs
12 @strong{BUGS}
13
14 @end macro
15
16
17 @c .{Reference Manual}
18
19 @node Reference Manual
20 @chapter Reference Manual
21
22 @html
23 <!--- @@WEB-TITLE@@=Reference Manual --->
24 @end html
25
26 This document describes GNU LilyPond and its input format. The last
27 revision of this document was made for LilyPond 1.4.1.  It supposes a
28 passing familiarity with how LilyPond input works. New users are
29 encouraged to study the tutorial first.
30
31 The reference manual is ordered according to different tasks. 
32 More details on the property setting mechanisms and context handling is
33 provided in @ref{Tuning output} and @ref{Interpretation context}. The
34 syntactical details are described at the end of the manual.
35
36 @menu
37 * Overview::                    
38 * Note entry::                  
39 * Staff notation::              
40 * Polyphony::                   
41 * Beaming::                     
42 * Expressive marks::            
43 * Ornaments::                   
44 * Repeats::                     
45 * Rhythmic music::              
46 * Piano music::                 
47 * Lyrics::                      
48 * Chords::                      
49 * Writing parts::               
50 * Custodes::                    
51 * Tuning output::               
52 * Page layout::                 
53 * Output formats::              
54 * Sound::                       
55 * Music entry::                 
56 * Skipping corrected music::    
57 * Interpretation context::      
58 * Syntactic details::           
59 * Lexical details::             
60 @end menu
61
62 @c . {Overview}
63 @node Overview
64 @section Overview
65
66
67 The purpose of LilyPond is explained informally by the term `music
68 typesetter'.  This is not a fully correct name: not only does the
69 program print musical symbols, it also makes aesthetic decisions.
70 Symbols and their placements are @emph{generated} from a high-level
71 musical description.  In other words, LilyPond would be best described
72 by `music compiler' or `music to notation compiler'.
73
74 LilyPond is linked to GUILE, GNU's Scheme library for extension
75 programming. The Scheme library provides the glue that holds together
76 the low-level routines and separate modules which are written in C++.
77
78 When lilypond is run to typeset sheet music, the following happens:
79 @itemize @bullet
80 @item GUILE Initialization: various scheme files are read
81 @item parsing: first standard @code{ly} initialization  files are read, and
82 then the user @file{ly} file is read.
83 @item interpretation: the music in the file is processed ``in playing
84 order'', i.e. the order that  you  use to read sheet music, or the
85 order in which notes are played. The result of this step is a typesetting
86 specification.
87
88 @item typesetting:
89 The typesetting specification is solved: positions and formatting is
90 calculated.
91
92 @item the visible results ("virtual ink") are written to the output file.
93 @end itemize
94
95 During these stages different types of data play the the main role:
96 during parsing, @strong{Music} objects are created.  During the
97 interpretation, @strong{contexts} are constructed, and with these contexts
98 a network of @strong{graphical objects} (``grobs'') is created. These
99 grobs contain unknown variables, and the network forms a set of
100 equations. After solving the equations and filling in these variables,
101 the printed output (in the form of @strong{molecules}) is written to an
102 output file.
103
104 These threemanship of tasks (parsing, translating, typesetting) and
105 data-structures (music, context, graphical objects) permeates the entire
106 design of the program.
107
108 @c FIXME: Note entry vs Music entry at top level menu is confusing.
109 @c . {Note entry}
110 @node Note entry
111 @section Note entry
112 @cindex Note entry
113
114 The most basic forms of music are notes. We discuss how you enter them
115 here.  Notes on their own don't form valid input, but for the sake of
116 brevity we omit obligatory lint such as @code{\score} blocks and
117 @code{\paper} declarations.
118
119
120 @menu
121 * Notes::                       
122 * Pitches::                     
123 * Rests::                       
124 * Skips::
125 * Durations::                   
126 * Ties::                        
127 * Tuplets::                     
128 * Defining pitch names::        
129 * Easy Notation note heads ::   
130 @end menu
131
132 @c . {Notes}
133 @node Notes
134 @subsection Notes
135
136 A note specification has the form
137
138 @example
139   @var{pitch}[!][?][@var{duration}]
140 @end example
141
142 The alteration refers to what note is heard, not to whether an
143 accidental is printed. This is done depending on the key and context.
144 A reminder accidental
145 @cindex reminder accidental
146 @cindex @code{?}
147 can be forced by adding an exclamation mark @code{!} after the pitch.  A
148 cautionary accidental,
149 @cindex cautionary accidental
150 @cindex parenthesized accidental
151 i.e., an accidental within parentheses can be obtained by adding the
152 question mark `@code{?}' after the pitch.
153
154 @lilypond[fragment,verbatim,center]
155   cis' d' e' cis'  c'? d' e' c'!
156 @end lilypond
157
158
159 @c .  {Pitches}
160 @node Pitches
161 @subsection Pitches
162
163 @cindex Pitch names
164 @cindex Note specification
165 @cindex pitches
166 @cindex entering notes
167
168 The verbose syntax for pitch specification is
169
170 @cindex @code{\pitch}
171 @example
172   \pitch @var{scmpitch}
173 @end example
174
175 @var{scmpitch} is a pitch scheme object, see @ref{Pitch data type}.
176
177 In Note and Chord mode, pitches may be designated by names.  The default
178 names are the Dutch note names.  The notes are specified by the letters
179 @code{a} through @code{g} (where the octave is formed by notes ranging
180 from @code{c} to @code{b}).  The pitch @code{c} is an octave below
181 middle C and the letters span the octave above that C.
182
183 @cindex note names, Dutch
184
185 In Dutch, a sharp is formed by adding @code{-is} to the end of a pitch
186 name and a flat is formed by adding @code{-es}. Double sharps and double
187 flats are obtained by adding @code{-isis} or @code{-eses}.  @code{aes}
188 and @code{ees} are contracted to @code{as} and @code{es} in Dutch, but
189 both forms are accepted.
190
191 LilyPond has predefined sets of note names for various other languages.
192 To use them, simply include the language specific init file.  For
193 example: @code{\include "english.ly"}.  The available language files and
194 the names they define are:
195
196 @example 
197                         Note Names               sharp       flat
198 nederlands.ly  c   d   e   f   g   a   bes b   -is         -es
199 english.ly     c   d   e   f   g   a   bf  b   -s/-sharp   -f/-flat
200 deutsch.ly     c   d   e   f   g   a   b   h   -is         -es
201 norsk.ly       c   d   e   f   g   a   b   h   -iss/-is    -ess/-es
202 svenska.ly     c   d   e   f   g   a   b   h   -iss        -ess
203 italiano.ly    do  re  mi  fa  sol la  sib si  -d          -b
204 catalan.ly     do  re  mi  fa  sol la  sib si  -d/-s       -b 
205 @end example 
206
207 @cindex @code{'}
208 @cindex @code{,}
209
210
211
212 The optional octave specification takes the form of a series of
213 single quote (`@code{'}') characters or a series of comma
214 (`@code{,}') characters.  Each @code{'} raises the pitch by one
215 octave; each @code{,} lowers the pitch by an octave.
216
217 @lilypond[fragment,verbatim,center]
218   c' c'' es' g' as' gisis' ais'  
219 @end lilypond
220
221 @c .  {Rests}
222 @node  Rests
223 @subsection Rests
224 @cindex Rests
225
226 A rest is entered like a note, with note name `@code{r}':
227
228 @lilypond[singleline,verbatim]
229 r1 r2 r4 r8
230 @end lilypond
231
232 The grob is @code{Rest}. Whole bar rests centered in the bar are
233 specified using @code{R}, see @ref{Multi measure rests}.
234
235
236 @c .  {Skips}
237 @c FIXME: naming.
238 @node Skips
239 @subsection Skips
240 @cindex Skip
241 @cindex Invisible rest
242 @cindex Space note
243
244 An invisible rest, or skip, can be entered like a note with note name
245 `@code{s}':
246
247 @lilypond[singleline,verbatim]
248 a2 s4 a4 s1 a4
249 @end lilypond
250
251 Actually, this is a shorthand for the @code{\skip} command, and it is
252 only available in Note mode and Chord mode.
253
254 @c FIXME: in lyrics mode, we have " " and _
255
256 In Lyrics mode, you can use `@code{" "}' and `@code{_}':
257 @lilypond[singleline,verbatim]
258 <
259   \context Lyrics \lyrics { lah2 di4 " " dah2 _4 di }
260   \notes\relative c'' { a2 a4 a a2 a4 a }
261 >
262 @end lilypond
263
264 The unabbreviated `@code{\skip} @var{duration}' also works outside of
265 note mode:
266
267 @lilypond[singleline,verbatim]
268 \score {
269   \context Staff <
270     { \time 4/8 \skip 2 \time 4/4 } 
271     \notes\relative c'' { a2 a1 }
272   >
273 }
274 @end lilypond
275
276
277
278 @c .  {Durations}
279 @node Durations
280 @subsection Durations
281
282
283 @cindex duration
284 @cindex @code{\duration}
285
286 The syntax for a verbose duration specification is
287 @example
288  \duration @var{scmduration}
289 @end example
290 Here, @var{scmduration} is a Scheme object of type @code{Duration}. See
291 @ref{Duration} for more information.
292
293
294 In Note, Chord, and Lyrics mode, durations may be designated by numbers
295 and dots: durations are entered as their reciprocal values.  For notes
296 longer than a whole you must use identifiers.
297
298 @example 
299  c'\breve  
300 c'1 c'2 c'4 c'8 c'16 c'32 c'64 c'64 
301 r\longa r\breve  
302 r1 r2 r4 r8 r16 r32 r64 r64 
303 @end example 
304
305
306 @lilypond[]
307 \score {
308   \notes \relative c'' {
309         a\breve  \autoBeamOff
310     a1 a2 a4 a8 a16 a32 a64 a64 
311     r\longa r\breve  
312     r1 r2 r4 r8 r16 r32 r64 r64 
313   }
314   \paper {
315     \translator {
316       \StaffContext
317         \remove "Clef_engraver"
318         \remove "Staff_symbol_engraver"
319         \remove "Time_signature_engraver"
320         \consists "Pitch_squash_engraver"
321     }
322   }
323 }
324 @end lilypond
325
326  To get a longa note head, you have to use mensural note heads. This
327 is accomplished by setting the @code{style} property of the
328 NoteHead grob to @code{mensural}. There is also a note head style
329 @code{baroque} which gives mensural note heads for @code{\longa} and
330 @code{\breve} but standard note heads for shorter notes.
331
332 @lilypond[fragment,singleline,verbatim]
333  \property Voice.NoteHead \set #'style = #'mensural
334  a'\longa
335 @end lilypond
336
337 If the duration is omitted then it is set to the previous duration
338 entered.  At the start of parsing a quarter note is assumed.  The
339 duration can be followed by dots (`@code{.}')  to obtain dotted note
340 lengths.
341 @cindex @code{.}
342
343 @lilypond[fragment,verbatim,center]
344   a'4. b'4.. c'8.
345 @end lilypond
346 @cindex @code{r}
347 @cindex @code{s}
348
349 You can alter the length of duration by a fraction @var{N/M} by
350 appending `@code{*}@var{N/M}' (or `@code{*}@var{N}' if @var{M=1}). This
351 will not affect the appearance of the notes or rests produced.
352
353
354
355
356 @node Ties
357 @subsection Ties
358
359 @cindex Tie
360 @cindex ties
361 @cindex @code{~}
362
363 A tie connects two adjacent note heads of the same pitch.  When used
364 with chords, it connects all the note heads whose pitches match.
365 Ties are indicated using the tilde symbol `@code{~}'.  If you try to tie
366 together chords which have no common pitches then no ties will be
367 created.
368
369 @lilypond[fragment,verbatim,center]
370   e' ~ e' <c' e' g'> ~ <c' e' g'>
371 @end lilypond
372
373 If you dislike the amount of ties created for a chord, you set
374 @code{Voice.sparseTies} to true, resulting in  a smaller number of
375 ties:
376 @lilypond[fragment,verbatim,center]
377   \property Voice.sparseTies = ##t
378   <c' e' g'> ~ <c' e' g'>
379 @end lilypond
380
381 In its meaning a tie is just a way of extending a note duration, similar
382 to the augmentation dot: the following example are two ways of notating
383 exactly the same concept.
384 @c
385 @lilypond[fragment, singleline]
386 \time 3/4 c'2. c'2 ~ c'4
387 @end lilypond
388
389 The name of the tie grob is  @code{Voice.Tie}.
390
391 @refbugs
392
393 At present, the tie is implemented as a separate thing, temporally
394 located in between the notes. There is also no way to convert
395 between tied notes, dotted notes and plain notes.
396
397 Tieing only a subset of the note heads of a chord is not supported in a
398 simple way.  It can be achieved by moving the tie-engraver into the Thread
399 context and turning on and off ties per Thread.
400
401
402 @node Tuplets
403 @subsection Tuplets
404
405 @cindex tuplets
406 @cindex triplets
407 @cindex @code{\times}
408
409 Tuplets are made out of a music expression by multiplying all duration
410 with a fraction.
411
412 @cindex @code{\times}
413 @example
414   \times @var{fraction} @var{musicexpr}
415 @end example
416
417 The duration of @var{musicexpr} will be multiplied by the fraction. 
418 In print, the fraction's denominator will be printed over the notes,
419 optionally with a bracket.  The most common tuplet is the triplet in
420 which 3 notes have the length of 2, so the notes are 2/3 of
421 their written length:
422
423 @lilypond[fragment,verbatim,center]
424   g'4 \times 2/3 {c'4 c' c'} d'4 d'4
425 @end lilypond
426
427 The property @code{tupletSpannerDuration} specifies how long each bracket
428 should last.  With this, you can make lots of tuplets while typing
429 @code{\times} only once, thus  saving typing work.
430
431 @lilypond[fragment,  relative, singleline, verbatim]
432 \property Voice.tupletSpannerDuration = #(make-moment 1 4)
433 \times 2/3 { c'8 c c c c c }
434 @end lilypond
435
436 The format of the number is determined by the property
437 @code{tupletNumberFormatFunction}. The default prints only the
438 denominator, but if you set it to the Scheme function
439 @code{fraction-tuplet-formatter}, Lilypond will print @var{num}:@var{den}
440 instead.
441
442 The typesetting of brackets and numbers is controlled by the properties
443 @code{tuplet-bracket-visibility} and @code{tuplet-number-visibility}. 
444
445 @lilypond[fragment,  relative, singleline, verbatim]
446 \property Voice.TupletBracket \set #'tuplet-bracket-visibility = ##t
447 \times 2/3{c'8 d e} \times 2/3{d4 e8} 
448 \property Voice.TupletBracket \set #'tuplet-bracket-visibility = #'if-no-beam
449 \times 2/3{c d e} \times 2/3{d4 e8} 
450 \property Voice.TupletBracket \set #'tuplet-bracket-visibility = ##f
451 \times 2/3{c d e} \times 2/3{d4 e8}
452 \property Voice.TupletBracket \set #'tuplet-number-visibility = ##f
453 \times 2/3{c d e} \times 2/3{d4 e8}
454 \property Voice.TupletBracket \set #'tuplet-number-visibility = #'if-no-beam
455 \times 2/3{c d e} \times 2/3{d4 e8}
456 @end lilypond
457
458 @cindex @code{tupletNumberFormatFunction}
459 @cindex tuplet formatting 
460
461 Tuplet brackets are printed as @code{TupletBracket} grobs
462
463 @c .  {Defining pitch names}
464 @node Defining pitch names
465 @subsection Defining pitch names
466
467 @cindex defining pitch names
468 @cindex pitch names, defining 
469
470 Note names and chord modifiers can be customized for nationalities.  The
471 syntax is as follows.
472
473 @cindex @code{\pitchnames}
474 @cindex @code{\chordmodifiers}
475 @example
476    \pitchnames @var{scheme-alist}
477    \chordmodifiers @var{scheme-alist}
478 @end example
479
480 See @file{ly/nederlands.ly} and @file{ly/chord-modifiers.ly} for
481 specific examples on how to do this.
482
483
484 @node Easy Notation note heads 
485 @subsection Easy Notation note heads
486
487 @cindex easy notation
488 @cindex Hal Leonard
489
490 A entirely different type of note head is the "easyplay" note head: a
491 note head that includes a note name.  It is used in some publications by
492 Hal-Leonard Inc.  music publishers.
493
494 @lilypond[singleline,verbatim]
495 \include "paper23.ly"
496 \score {
497   \notes { c'2 e'4 f' | g'1 }
498   \paper { \translator { \EasyNotation } } 
499 }
500 @end lilypond
501
502 Note that @code{EasyNotation} overrides a @code{Score} context.  You
503 probably will want to print it with magnification to make it more
504 readable, see @ref{Output scaling}.
505
506
507 @cindex Xdvi
508 @cindex ghostscript
509
510 If you view the result with Xdvi, then staff lines will show through the
511 letters.  Printing the postscript file obtained either by using dvips or
512 the @code{-f ps} option of lilypond produces the correct result.
513
514
515
516 @node Staff notation
517 @section Staff notation
518
519 @cindex Staff notation
520
521 @menu
522 * Key signature::               
523 * Clef::                        
524 * Time signature::              
525 * Unmetered music::             
526 * Bar lines::                   
527 @end menu
528
529 @c .  {Key}
530 @node Key signature
531 @subsection Key signature
532 @cindex Key
533
534 @cindex @code{\key}
535
536 Setting or changing the key signature is done with the @code{\key}
537 command.
538 @example
539   @code{\key} @var{pitch} @var{type}
540 @end example
541
542 @cindex @code{\minor}
543 @cindex @code{\major}
544 @cindex @code{\minor}
545 @cindex @code{\ionian}
546 @cindex @code{\locrian}
547 @cindex @code{\aeolian}
548 @cindex @code{\mixolydian}
549 @cindex @code{\lydian}
550 @cindex @code{\phrygian}
551 @cindex @code{\dorian}
552
553 Here, @var{type} should be @code{\major} or @code{\minor} to get
554 @var{pitch}-major or @var{pitch}-minor, respectively.
555 The standard mode names @code{\ionian},
556 @code{\locrian}, @code{\aeolian}, @code{\mixolydian}, @code{\lydian},
557 @code{\phrygian}, and @code{\dorian} are also defined.
558
559 This command sets the context property @code{Staff.keySignature}. 
560 Non-standard key signatures can be specified by setting this property
561 directly, see the generated documentation for @rgrob{KeySignature}.
562
563 The printed signature is a @code{KeySignature} grob.
564
565 @cindex @code{keySignature}
566
567 @c .  {Clef}
568 @node Clef
569 @subsection Clef
570 @cindex @code{\clef}
571
572 The clef can be set or changed with the @code{\clef} command.
573 @example
574   \clef @var{clefname}
575 @end example
576
577 Shortcut for
578
579 @example
580   \property Staff.clefGlyph = @var{glyph associated with clefname} 
581   \property Staff.clefPosition = @var{clef Y-position for clefname}
582   \property Staff.centralCPosition = @var{position for central C} 
583   \property Staff.clefOctavation = @var{extra transposition of clefname}
584 @end example
585
586 Any change in these properties creates a clef (a @code{Clef} grob).
587
588 Supported clef-names include 
589
590 @c Moved standard clefs to the top /MB
591 @table @code
592 @item treble, violin, G, G2
593 G clef on 2nd line
594 @item alto, C
595  C clef on 3rd line
596 @item tenor
597  C clef on 4th line
598 @item bass, F
599  F clef on 4th line
600 @item french
601  G clef on 1st line, so-called French violin clef
602 @item soprano
603  C clef on 1st line
604 @item mezzosoprano
605  C clef on 2nd line
606 @item baritone
607  C clef on 5th line
608 @item varbaritone
609  F clef on 3rd line
610 @item subbass
611  F clef on 5th line
612 @item percussion
613  percussion clef
614 @end table
615
616 By adding @code{_8} or @code{^8} to the clef name, the clef is
617 transposed one octave down or up, respectively.
618
619 Supported associated glyphs (for @code{Staff.clefGlyph}) are:
620
621 @table @code
622 @item clefs-C
623  modern style C clef
624 @item clefs-F
625  modern style F clef
626 @item clefs-G
627  modern style G clef
628 @item clefs-vaticana_do
629  Editio Vaticana style do clef
630 @item clefs-vaticana_fa
631  Editio Vaticana style fa clef
632 @item clefs-medicaea_do
633  Editio Medicaea style do clef
634 @item clefs-medicaea_fa
635  Editio Medicaea style fa clef
636 @item clefs-mensural1_c
637  modern style mensural C clef
638 @item clefs-mensural2_c
639  historic style small mensural C clef
640 @item clefs-mensural3_c
641  historic style big mensural C clef
642 @item clefs-mensural1_f
643  historic style traditional mensural F clef
644 @item clefs-mensural2_f
645  historic style new mensural F clef
646 @item clefs-mensural_g
647  historic style mensural G clef
648 @item clefs-hufnagel_do
649  historic style hufnagel do clef
650 @item clefs-hufnagel_fa
651  historic style hufnagel fa clef
652 @item clefs-hufnagel_do_fa
653  historic style hufnagel combined do/fa clef
654 @item clefs-percussion
655  modern style percussion clef
656 @end table
657
658 @emph{Modern style} means ``as is typeset in current editions.''
659 @emph{Historic style} means ``as was typeset or written in contemporary
660 historic editions''.  @emph{Editio XXX style} means ``as is/was printed in
661 Editio XXX.''
662
663 @cindex Vaticana, Editio
664 @cindex Medicaea, Editio
665 @cindex hufnagel clefs
666
667
668 @c .  {Time signature}
669 @node Time signature
670 @subsection Time signature
671 @cindex Time signature
672 @cindex meter
673 @cindex @code{\time}
674
675 The time signature is set or changed by the @code{\time}
676 command. Syntax:
677 @example
678   \time @var{n}@code{/}@var{d} 
679 @end example
680 Internally, this is a shortcut for doing
681 @example
682 \property Score.timeSignatureFraction = #'(@var{n} . @var{d})
683 \property Score.beatLength = #(make-moment 1 @var{d})
684 \property Score.measureLength = #(make-moment @var{n} @var{d})
685 @end example
686
687 These properties @code{timeSignatureFraction} determine where bar lines
688 should be inserted, and how automatic beams should be
689 generated.
690
691 Changing the value of @code{timeSignatureFraction} also causes a
692 fraction to be printed. This grob is @code{TimeSignature}.
693
694 The actual symbol that's printed can be customized with the style
695 property.
696 @lilypond[fragment, verbatim, singleline]
697 \time 3/4 s2
698 \property Staff.TimeSignature \override #'style = #'C
699 \time 4/4 s2
700 \property Staff.TimeSignature \override #'style = #'()
701 \time 4/4 s2
702 \property Staff.TimeSignature \override #'style = #'C
703 \time 2/2 s2
704 @end lilypond
705
706 There are many more options for the layout of this grob. They are
707 selected through the @code{style} grob property.
708
709 @c FIXME: this isn't documented except in example?
710 See
711 @file{input/test/time.ly} for examples.
712
713 @c .   {Partial}
714 @subsection Partial
715 @cindex Partial
716 @cindex anacrusis
717 @cindex upbeat
718 @cindex partial measure
719 @cindex measure, partial
720 @cindex shorten measures
721 @cindex @code{\partial}
722
723 Partial measures, for example in upbeats, are entered using the
724 @code{\partial} command: 
725 @example
726   \partial @var{duration} 
727 @end example
728
729 Internally,  this is a shortcut for 
730
731 @example
732   \property Score.measurePosition = -@var{length of duration}
733 @end example
734 @cindex @code{|}
735
736 The property @code{measurePosition} contains a rational number
737 indicating how much of the measure has passed at this point. 
738
739
740 @node Unmetered music
741 @subsection Unmetered music
742
743 Bar lines and bar numbers are calculated automatically. For unmetered
744 music (e.g. cadenzas), this is not desirable. The property
745 @code{Score.timing} can be used to switch off this automatic timing
746
747 @lilypond[fragment,relative,singleline,verbatim]
748 c'2.
749 \property Score.timing = ##f
750 c2
751 \property Score.timing = ##t
752 c4 c4 c4 
753 @end lilypond
754
755 The identifiers @code{\cadenzaOn} and @code{\cadenzaOff} can be used as
756 shortcuts.
757
758
759
760 @c .   {Bar lines}
761 @node Bar lines
762 @subsection Bar lines
763 @cindex Bar lines
764
765 @cindex @code{\bar}
766 @cindex measure lines
767 @cindex repeat bars
768
769 @example
770   \bar @var{bartype}
771 @end example
772
773 This is a shortcut for doing
774 @example
775   \property Score.whichBar = @var{bartype} 
776 @end example
777 The following bar types are available
778
779 @lilypond[fragment,  relative, singleline, verbatim]
780 c4
781 \bar "|" c
782 \bar "" c
783 \bar "|:" c
784 \bar "||" c
785 \bar ":|" c
786 \bar ".|" c
787 \bar ".|." c
788 \bar "|." 
789 @end lilypond
790
791
792 You are encouraged to use @code{\repeat} for repetitions.  See
793 @ref{Repeats}.
794
795
796 @cindex Bar_line_engraver
797 @cindex whichBar
798 @cindex repeatCommands
799 @cindex defaultBarType
800
801 Whenever @code{whichBar} is set to a string, a bar line of that type is
802 created.  @code{whichBar} is usually set automatically: at the start of
803 a measure it is set to @code{defaultBarType}. The contents of
804 @code{repeatCommands} is used to override default measure bars.
805
806 @code{whichBar} can also be set directly, using @code{\property} or
807 @code{\bar  }.  These settings take precedence over the automatic
808 @code{whichBar} settings. 
809
810 @code{BarLine} grobs are created by the @code{Bar_engraver}.
811
812 @c .   {Polyphony}
813 @node Polyphony
814 @section Polyphony
815 @cindex polyphony
816
817 Polyphonic parts, i.e. parts with more than one voice on a staff can be
818 typeset with LilyPond.   To use this, instantiate a separate Voice
819 context for each part, and assign a stem direction to each part. 
820 @lilypond[fragment,verbatim]
821 \context Staff
822 < \context Voice = VA { \stemUp b'4 a' g' f' e' }
823   \context Voice = VB { \stemDown g'4 g' g' g' g' } >
824 @end lilypond
825
826 When there are more than two voices on a staff, you must also indicate
827 which voice should moved horizontally in case of a collision. This can
828 be done with the identifiers @code{\shiftOff}, @code{\shiftOn},
829 @code{\shiftOnn}, etc. (which sets the grob property @code{horizontal-shift}
830 in @code{NoteColumn}).
831
832 @lilypond[fragment, verbatim]
833   \context Staff \notes\relative c''<
834        \context Voice=one {
835        \shiftOff \stemUp e4
836        }
837        \context Voice=two {
838           \shiftOn \stemUp cis
839        }
840        \context Voice=three {
841          \shiftOnn \stemUp ais
842        }
843        \context Voice=four {
844           \shiftOnnn \stemUp fis
845        }
846   >
847 @end lilypond
848
849 The most convenient way is to use the identifiers @code{\voiceOne}
850 through @code{\voiceFour}, which also set slur and tie directions in the
851 correct manner.
852
853 @lilypond[singleline, verbatim]
854 \relative c''
855 \context Staff < \context Voice = VA { \voiceOne cis2 b  }
856   \context Voice = VB { \voiceThree b4 ais ~ ais4 gis4 } 
857   \context Voice = VC { \voiceTwo fis4~  fis4 f ~ f  } >
858 @end lilypond
859
860 Normally, note heads with a different number of dots are not merged, but
861 if you set the grob property @code{merge-differently-dotted}, they are:
862
863 @lilypond[verbatim,fragment,singleline]
864   \context Staff <
865   \context Voice = VA { \voiceOne
866      g'8 g'8 
867      \property Staff.NoteCollision \override #'merge-differently-dotted = ##t
868      g'8 g'8
869   }
870   \context Voice = VB { \voiceTwo [g'8. f16] [g'8. f'16] } 
871   >
872 @end lilypond
873
874 LilyPond also vertically shifts rests that are opposite of a stem. 
875
876 @lilypond[singleline,verbatim]
877 \context Staff <
878 \context Voice {  \stemUp c''4  }
879 \context Voice =VB { r4 }
880 >
881 @end lilypond
882
883 Note head collisions (horizontal shifting of note heads) are handled by
884 the @code{NoteCollision} grob. @code{RestCollision} handles vertical
885 shifting of rests.
886
887 @cindex @code{NoteCollision}
888 @cindex @code{RestCollision}
889
890
891 @refbugs
892
893 Resolving collisions is a very intricate subject, and LilyPond only
894 handles a few situations. When it can not cope, you are advised to use
895 @code{force-hshift} of the NoteColumn grob and @code{staff-position} of
896 the Rest grob to override typesetting decisions.
897
898 @node Beaming
899 @section Beaming
900
901 Beams are used to group short notes into chunks that are aligned with
902 the metrum.  LilyPond guesses where beams should be inserted. If you're
903 not satisfied with the automatic beaming, you can specify which patterns
904 to beam automatically. In specific cases, you can also enter the beams
905 explicitly.
906
907
908 @c .    {Automatic beams}
909 @subsection Automatic beams
910
911 @cindex @code{Voice.autoBeamSettings}
912 @cindex @code{(end * * * *)}
913 @cindex @code{(begin * * * *)}
914
915
916 In normal time signatures, automatic beams can start on any note but can
917 only end in a few positions within the measure: beams can end on a beat,
918 or at durations specified by the properties in
919 @code{Voice.autoBeamSettings}. The defaults for @code{autoBeamSettings}
920 are defined in @file{scm/auto-beam.scm}.
921
922 The value of @code{autoBeamSettings} is changed using
923 @code{\override} and unset using @code{\revert}:
924 @example
925 \property Voice.autoBeamSettings \override #'(@var{BE} @var{P} @var{Q} @var{N} @var{M}) = @var{dur}
926 \property Voice.autoBeamSettings \revert #'(@var{BE} @var{P} @var{Q} @var{N} @var{M})
927 @end example
928 Here, @var{BE} is the symbol @code{begin} or @code{end}. It determines
929 whether the rule applies to begin or end-points.  The quantity
930 @var{P}/@var{Q} refers to the length of the beamed notes (and `@code{*
931 *}' designates notes of any length), @var{N}/@var{M} refers to a time
932 signature (wildcards, `@code{* *}' may be entered to designate all time
933 signatures).
934
935 For example, if you want automatic beams to end on every quarter note,
936 you can use the following:
937 @example
938 \property Voice.autoBeamSettings \override
939     #'(end * * * *) = #(make-moment 1 4)
940 @end example
941 Since the duration of a quarter note is 1/4 of a whole note, it is
942 entered as @code{(make-moment 1 4)}.
943
944 The same syntax can be used to specify beam starting points. In this
945 example, automatic beams can only end on a dotted quarter note. 
946 @example
947 \property Voice.autoBeamSettings \override
948     #'(end * * * *) = #(make-moment 3 8)
949 @end example
950 In 4/4 time signature, this means that automatic beams could end only on
951 3/8 and on the fourth beat of the measure (after 3/4, that is 2 times
952 3/8 has passed within the measure).
953
954 You can also restrict rules to specific time signatures. A rule that
955 should only be applied in @var{N}/@var{M} time signature is formed by
956 replacing the second asterisks by @var{N} and @var{M}. For example, a
957 rule for 6/8 time exclusively looks like
958 @example
959 \property Voice.autoBeamSettings \override
960     #'(begin * * 6 8) =  ... 
961 @end example
962
963 If you want a rule to apply to certain types of beams, you can use the
964 first pair of asterisks. Beams are classified according to the shortest
965 note they contain. For a beam ending rule that only applies to beams
966 with 32nd notes (and no shorter notes), you would use @code{(end 1
967 32 * *)}.
968
969 @c not true
970 @c Automatic beams can not be put on the last note in a score.
971
972 If a score ends while an automatic beam has not been ended and is still
973 accepting notes, this last beam will not be typeset at all.
974
975 @cindex automatic beam generation
976 @cindex autobeam
977 @cindex @code{Voice.noAutoBeaming}
978
979 Automatic beaming is on by default, but can be switched off by setting
980 @code{Voice.noAutoBeaming} to true.  You you may find this necessary for
981 a melody that goes with lyrics.
982
983 @refbugs
984
985 It is not possible to specify beaming parameters for beams with mixed
986 durations, that differ from the beaming parameters of all separate
987 durations, i.e., you'll have to specify manual beams to get:
988 @lilypond[fragment,singleline,relative]
989   \property Voice.autoBeamSettings
990   \override #'(end * * * *) = #(make-moment 3 8)
991   \time 12/8 c'8 c c c16 c c c c c [c c c c] c8 c c4
992 @end lilypond
993
994 It is not possible to specify beaming parameters that act differently in
995 different parts of a measure. This means that it is not possible to use
996 automatic beaming in irregular meters such as @code{5/8}.
997
998 @c .    {Manual beams}
999 @cindex Automatic beams
1000 @subsection Manual beams
1001 @cindex beams, manual
1002 @cindex @code{]}
1003 @cindex @code{[}
1004
1005 In some cases it may be necessary to override LilyPond's automatic
1006 beaming algorithm.  For example, the auto beamer will not beam over
1007 rests or bar lines, If you want that, specify the begin and end point
1008 manually using a @code{[} before the first beamed note and a @code{]}
1009 after the last note:
1010
1011 @lilypond[fragment,relative,verbatim]
1012   \context Staff {
1013     r4 [r8 g' a r8] r8 [g | a] r8
1014   }
1015 @end lilypond
1016 Whenever an manual beam is busy, the automatic beamer will not produce
1017 anything.
1018
1019 @cindex @code{stemLeftBeamCount}
1020
1021 Normally, beaming patterns within a beam are determined automatically.
1022 When this mechanism fouls up, the properties
1023 @code{Voice.stemLeftBeamCount} and @code{Voice.stemRightBeamCount}.  can
1024 be used to control the beam subdivision on a stem.  If you set either
1025 property, it's value will be used only once, and then it is erased.
1026
1027 @lilypond[fragment,relative,verbatim]
1028   \context Staff {
1029     [f8 r16 f g a]
1030     [f8 r16 \property Voice.stemLeftBeamCount = #1 f g a]
1031   }
1032 @end lilypond
1033 @cindex @code{stemRightBeamCount}
1034
1035 The beam symbol (grob @code{Voice.Beam}, both for automatic and manual
1036 beams) can be tweaked through grob-properties @code{height} and
1037 @code{staff-position}. These specify vertical location and vertical
1038 span. Both are measured in half staff-spaces, @code{staff-position=0}
1039 corresponds to the middle staff line.
1040
1041 Set @code{height} to zero, to get horizontal beams:
1042
1043 @lilypond[fragment,relative,verbatim]
1044   \property Voice.Beam \set #'direction = #1
1045   \property Voice.Beam \set #'height = #0
1046   [a'8 e' d c]
1047 @end lilypond
1048
1049 Here's how you'd specify a weird looking beam that instead of being
1050 horizontal, falls two staff spaces:
1051
1052 @lilypond[fragment,relative,verbatim]
1053   \property Voice.Beam \set #'staff-position = #4
1054   \property Voice.Beam \set #'height = #-4
1055   [c8 c] 
1056 @end lilypond
1057
1058 @c TODO -> why this ref? Document? 
1059 @cindex @code{neutral-direction}
1060
1061 @node Expressive marks
1062 @section Expressive marks
1063
1064 @c .   {Slurs}
1065 @menu
1066 * Slurs ::                      
1067 * Phrasing slurs::              
1068 * Breath marks::                
1069 * Tempo::                       
1070 * Text spanners::               
1071 @end menu
1072
1073 @node Slurs 
1074 @subsection Slurs
1075 @cindex slurs
1076
1077 A slur indicates that notes are to be played bound or @emph{legato}.
1078 They are entered using parentheses:
1079
1080 @lilypond[fragment,verbatim,center]
1081   f'()g'()a' [a'8 b'(] a'4 g'2 )f'4
1082 @end lilypond
1083
1084
1085 Slurs avoid crossing stems, and are generally attached to note heads.
1086 However, in some situations with beams, slurs may be attached to stem
1087 ends.  If you want to override this layout you can do this through the
1088 @code{Voice.Slur}'s grob-property @code{attachment}. It's value is a
1089 pair of symbols, specifying the attachment type of the left and right end points.
1090
1091 @lilypond[fragment,relative,verbatim]
1092   \property Voice.Slur \set #'direction = #1
1093   \property Voice.Stem \set #'length = #5.5
1094   g'8(g)g4
1095   \property Voice.Slur \set #'attachment = #'(stem . stem)
1096   g8(g)g4
1097 @end lilypond
1098
1099 If a slur would strike through a stem or beam, the slur will be moved
1100 away upward or downward. If this happens, attaching the slur to the
1101 stems might look better:
1102
1103 @lilypond[fragment,relative,verbatim]
1104   \property Voice.Stem \set #'direction = #1
1105   \property Voice.Slur \set #'direction = #1
1106   d32( d'4 )d8..
1107   \property Voice.Slur \set #'attachment = #'(stem . stem)
1108   d,32( d'4 )d8..
1109 @end lilypond
1110
1111
1112 Similarly, the curvature of a slur is adjusted to stay clear of note
1113 heads and stems.  When that would increase the curvature too much, the
1114 slur is reverted to its default shape.  The threshold for this decision
1115 is in @code{Voice.Slur}'s grob-property @code{beautiful}.  It is loosely
1116 related to the enclosed area between the slur and the notes.  Usually,
1117 the default setting works well, but in some cases you may prefer a
1118 curved slur when LilyPond decides for a vertically moved one.  You can
1119 indicate this preference by increasing the @code{beautiful} value:
1120
1121 @lilypond[verbatim,singleline,relative]
1122   \property Voice.Beam \override #'direction = #-1
1123   \property Voice.Slur \override #'direction = #1
1124   c16( a' f' a a f a, )c,
1125   c( a' f' a a f d, )c
1126   \property Voice.Slur \override #'beautiful = #5.0
1127   c( a' f' a a f d, )c
1128 @end lilypond
1129
1130 @refbugs
1131
1132 @code{beautiful} is an arbitrary parameter in the slur formatter.
1133 Useful values can only be determined by trial and error.
1134
1135 @cindex Adjusting slurs
1136
1137 @node Phrasing slurs
1138 @subsection Phrasing slurs
1139
1140 @cindex phrasing slurs
1141 @cindex phrasing marks
1142
1143 A phrasing slur (or phrasing mark) connects chords and is used to
1144 indicate a musical sentence. It is started using @code{\(} and @code{\)}
1145 respectively.
1146
1147 @lilypond[fragment,verbatim,center,relative]
1148   \time 6/4 c' \( ( d ) e f ( e ) \) d
1149 @end lilypond
1150
1151 Typographically, the phrasing slur behaves almost exactly like a normal
1152 slur. The grob associated with it is @code{Voice.PhrasingSlur}.
1153
1154 @node Breath marks
1155 @subsection Breath marks
1156
1157 Breath marks are entered using @code{\breathe}.  The result is a
1158 @code{Voice.BreathingSign} grob.
1159
1160 @lilypond[fragment,relative]
1161 c'4 \breathe d4
1162 @end lilypond
1163
1164
1165
1166
1167 @refbugs
1168
1169   Currently, only tick marks are supported, not comma style breath marks.
1170
1171
1172 @c .  {Tempo}
1173 @node Tempo
1174 @subsection Tempo
1175 @cindex Tempo
1176 @cindex beats per minute
1177 @cindex metronome marking
1178
1179 Metronome settings can be entered as follows:
1180
1181 @cindex @code{\tempo}
1182 @example
1183   \tempo @var{duration} = @var{perminute} 
1184 @end example
1185
1186 For example, @code{\tempo 4 = 76} requests output with 76 quarter notes
1187 per minute.
1188   
1189 @refbugs
1190   
1191 The tempo setting is not printed, but is only used in the MIDI
1192 output. You can trick lily into producing a metronome mark,
1193 though. Details are in @ref{Text markup}.
1194   
1195
1196
1197 @node Text spanners
1198 @subsection Text spanners
1199 @cindex Text spanners
1200
1201 Some textual indications, e.g. rallentando or accelerando, often extend
1202 over many measures. This is indicated by following the text with a
1203 dotted line.  You can create such texts using text spanners. The syntax
1204 is as follows:
1205 @example
1206 \spanrequest \start "text"
1207 \spanrequest \stop "text"
1208 @end example
1209 LilyPond will respond by creating a @code{Voice.TextSpanner} grob.  The
1210 string to be printed, as well as the style is set through grob
1211 properties.
1212
1213 An application---or rather, a hack---is to fake octavation indications.
1214 @lilypond[fragment,relative,verbatim]
1215  \relative c' {  a''' b c a
1216   \property Voice.TextSpanner \set #'type = #'dotted-line
1217   \property Voice.TextSpanner \set #'edge-height = #'(0 . 1.5)
1218   \property Voice.TextSpanner \set #'edge-text = #'("8va " . "")
1219   \property Staff.centralCPosition = #-13
1220   a\spanrequest \start "text" b c a \spanrequest \stop "text" }
1221 @end lilypond
1222
1223
1224 @c .  {Ornaments}
1225 @node Ornaments
1226 @section Ornaments
1227 @cindex Ornaments
1228 @menu
1229 * Articulations::               
1230 * Text scripts::                
1231 * Grace notes::                 
1232 * Glissando ::                  
1233 * Dynamics::                    
1234 @end menu
1235
1236 @c .   {Articulation}
1237 @node Articulations
1238 @subsection Articulations
1239 @cindex Articulations
1240
1241 @cindex articulations
1242 @cindex scripts
1243 @cindex ornaments
1244
1245 A variety of symbols can appear above and below notes to indicate
1246 different characteristics of the performance.  These symbols can be
1247 added to a note with `@var{note}@code{-\}@var{name}'.  Numerous symbols
1248 are defined in @file{script.ly}.  Symbols can be forced to appear above
1249 or below the note by writing `@var{note}@code{^\}@var{name}' and
1250 `@var{note}@code{_\}@var{name}' respectively.  Here is a chart showing
1251 symbols on notes, with the name of the corresponding symbol appearing
1252 underneath.
1253
1254 @lilypond[]
1255   \score {
1256     <
1257       \property Score.LyricSyllable \override #'font-family =#'typewriter
1258       \property Score.LyricSyllable \override #'font-shape = #'upright
1259       \context Staff \notes {
1260         c''-\accent      c''-\marcato      c''-\staccatissimo c''^\fermata 
1261         c''-\stopped     c''-\staccato     c''-\tenuto        c''-\upbow
1262         c''-\downbow     c''^\lheel        c''-\rheel         c''^\ltoe
1263         c''-\rtoe        c''-\turn         c''-\open          c''-\flageolet
1264         c''-\reverseturn c''-\trill        c''-\prall         c''-\mordent
1265         c''-\prallprall  c''-\prallmordent c''-\upprall       c''-\downprall
1266         c''-\upmordent   c''-\downmordent  c''-\pralldown     c''-\prallup
1267         c''-\lineprall   c''-\thumb        c''-\segno         c''-\coda
1268       }
1269       \context Lyrics \lyrics {
1270         accent__      marcato__      staccatissimo__ fermata
1271         stopped__     staccato__     tenuto__        upbow
1272         downbow__     lheel__        rheel__         ltoe
1273         rtoe__        turn__         open__          flageolet
1274         reverseturn__ trill__        prall__         mordent
1275         prallprall__  prallmordent__ uprall__        downprall
1276         upmordent__   downmordent__  pralldown__  prallup__
1277         lineprall__   thumb__       segno__        coda
1278       }
1279     >
1280     \paper {
1281       linewidth = 5.875\in
1282       indent    = 0.0
1283     }
1284   }
1285 @end lilypond
1286
1287 To save typing work, some shorthands are available:
1288 @lilypond[singleline]
1289   \score {
1290     \notes \context Voice {
1291       \property Voice.TextScript \set #'font-family = #'typewriter
1292       \property Voice.TextScript \set #'font-shape = #'upright
1293       c''4-._"c-."      s4
1294       c''4--_"c-{}-"    s4
1295       c''4-+_"c-+"      s4
1296       c''4-|_"c-|"      s4
1297       c''4->_"c->"      s4
1298       c''4-^_"c-\\^{ }" s4
1299     }
1300   }
1301 @end lilypond
1302
1303 @cindex fingering
1304
1305 Fingering instructions can also be entered in  this shorthand.
1306 @lilypond[verbatim, singleline, fragment]
1307       c'4-1 c'4-2 c'4-3 c'4-4
1308 @end lilypond
1309
1310
1311 @cindex @code{\script}
1312 @cindex scripts
1313 @cindex superscript
1314 @cindex subscript
1315
1316 You can add scripts by editing @file{scm/script.scm}. This file contains
1317 a table, listing script definitions and aliases. The following syntax
1318 accesses a script definition from the table:
1319
1320 @example
1321   \script @var{alias}
1322 @end example
1323
1324 Usually the @code{\script} keyword is not used directly.  Various
1325 helpful identifier definitions appear in @file{script.ly}.
1326
1327 Grobs for these objects are @code{Script} and @code{Fingering}.
1328
1329 @refbugs
1330
1331 All of these note ornaments appear in the printed output but have no
1332 effect on the MIDI rendering of the music.
1333
1334 Unfortunately, there is no support for adding fingering instructions or 
1335 ornaments to individual note heads. Some hacks exist, though. See
1336 @file{input/test/script-horizontal.ly}.
1337
1338
1339 @c .  {Text scripts}
1340 @node Text scripts
1341 @subsection Text scripts
1342 @cindex Text scripts
1343
1344 In addition, it is possible to place arbitrary strings of text or markup
1345 text (see @ref{Text markup}) above or below notes by using a string:
1346 @code{c^"text"}. 
1347
1348 By default, these indications do not influence the note spacing, but
1349 if @code{Voice.textNonEmpty} is set to true the widths will be taken
1350 into account.  The identifier @code{\fatText} is defined in the standard
1351 includes.
1352 @lilypond[fragment,singleline,verbatim]
1353 \relative c' { c4^"longtext" \fatText c4_"longlongtext" c4 }
1354 @end lilypond
1355
1356 Text scripts are created in form of @code{Voice.TextScript} grobs.
1357
1358 @ref{Text markup} describes how to change the font or access
1359 special symbols in text scripts.
1360
1361 @c .   {Grace notes}
1362 @node Grace notes
1363 @subsection Grace notes
1364
1365
1366
1367
1368
1369
1370
1371 @cindex Grace music
1372 @cindex @code{\grace}
1373 @cindex ornaments
1374 @cindex grace notes
1375 @cindex @code{graceAlignPosition}
1376
1377 Grace notes are ornaments that are written out, but do not take up  any
1378 logical time in a measure. LilyPond has limited support for grace notes.
1379 The syntax is as follows. 
1380 @example
1381   \grace @var{musicexpr}
1382 @end example
1383
1384 Unbeamed eighth notes and shorter by default have a slash through the
1385 stem.
1386
1387 @lilypond[fragment,verbatim]
1388 \relative c'' {
1389   \grace c8 c4 \grace { [c16 c16] } c4
1390   \grace { 
1391     \property Voice.Stem \override #'flag-style = #'() 
1392     c16 
1393     \property Voice.Stem \revert #'flag-style
1394   } c4
1395 }
1396 @end lilypond
1397
1398 A grace note expression has duration 0; the next real note is assumed to
1399 be the main note. If you want the note to appear after the main note,
1400 set @code{Voice.graceAlignPosition} to @code{1}.
1401
1402 @refbugs
1403
1404 Nesting @code{\grace} notes is not supported. The following may cause
1405 run-time errors: @example
1406   @code{\grace @{ \grace c32 c16 @} c4}
1407 @end example
1408 Since the meaning of such a construct is unclear, we don't consider this
1409 a loss.  Similarly, juxtaposing two @code{\grace} sections is
1410 syntactically valid, but makes no sense and may cause runtime errors.
1411 Ending a staff or score with grace notes may also generate a run-time
1412 error, since there will be no main note to attach the grace notes to.
1413
1414 @menu
1415 * Glissando ::                  
1416 * Dynamics::                    
1417 @end menu
1418
1419
1420
1421 @c .   {Glissando}
1422 @node Glissando 
1423 @subsection Glissando
1424 @cindex Glissando 
1425
1426 @cindex @code{\glissando}
1427
1428 A glissando line (grob @code{Voice.Glissando}) can be requested by attaching a
1429 @code{\glissando} to a note:
1430
1431 @lilypond[fragment,relative,verbatim]
1432   c'-\glissando c'
1433 @end lilypond
1434
1435 @refbugs
1436
1437 Printing of an additional text (such as @emph{gliss.}) must be done
1438 manually.
1439
1440
1441
1442 @c .   {Dynamics}
1443 @node Dynamics
1444 @subsection Dynamics
1445 @cindex Dynamics
1446
1447
1448
1449 @cindex @code{\ppp}
1450 @cindex @code{\pp}
1451 @cindex @code{\p}
1452 @cindex @code{\mp}
1453 @cindex @code{\mf}
1454 @cindex @code{\f}
1455 @cindex @code{\ff}
1456 @cindex @code{\fff}
1457 @cindex @code{\ffff}
1458 @cindex @code{\fp}
1459 @cindex @code{\sf}
1460 @cindex @code{\sff}
1461 @cindex @code{\sp}
1462 @cindex @code{\spp}
1463 @cindex @code{\sfz}
1464 @cindex @code{\rfz}
1465
1466
1467 Absolute dynamic marks are specified using an identifier after a
1468 note: @code{c4-\ff}.  The available dynamic marks are: @code{\ppp},
1469 @code{\pp}, @code{\p}, @code{\mp}, @code{\mf}, @code{\f}, @code{\ff},
1470 @code{\fff}, @code{\fff}, @code{\fp}, @code{\sf}, @code{\sff},
1471 @code{\sp}, @code{\spp}, @code{\sfz}, and @code{\rfz}.
1472
1473 @lilypond[verbatim,singleline,fragment,relative]
1474   c'\ppp c\pp c \p c\mp c\mf c\f c\ff c\fff
1475   c2\sf c\rfz
1476 @end lilypond
1477
1478 @cindex @code{\cr}
1479 @cindex @code{\rc}
1480 @cindex @code{\decr}
1481 @cindex @code{\rced}
1482 @cindex @code{\<}
1483 @cindex @code{\>}
1484 @cindex @code{\"!}
1485
1486
1487 A crescendo mark is started with @code{\cr} and terminated with
1488 @code{\rc} (the textual reverse of @code{cr}).  A decrescendo mark is
1489 started with @code{\decr} and terminated with @code{\rced}.  There are
1490 also shorthands for these marks.  A crescendo can be started with
1491 @code{\<} and a decrescendo can be started with @code{\>}.  Either one
1492 can be terminated with @code{\!}.  Note that @code{\!}  must go before
1493 the last note of the dynamic mark whereas @code{\rc} and @code{\rced} go
1494 after the last note.  Because these marks are bound to notes, if you
1495 want several marks during one note, you have to use spacer notes.
1496
1497 @lilypond[fragment,verbatim,center]
1498   c'' \< \! c''   d'' \decr e'' \rced 
1499   < f''1 { s4 s4 \< \! s4 \> \! s4 } >
1500 @end lilypond
1501
1502 You can also use a text saying @emph{cresc.} instead of hairpins. Here
1503 is an example how to do it:
1504
1505 @cindex crescendo
1506 @cindex decrescendo
1507
1508 @lilypond[fragment,relative,verbatim]
1509   \context Voice {
1510     \property Voice.crescendoText = "cresc."
1511     \property Voice.crescendoSpanner = #'dashed-line
1512     a'2\mf\< a a \!a 
1513   }
1514 @end lilypond
1515
1516 For everyday use, we recommend the identifiers @code{\cresc},
1517 @code{endcresc}, @code{\dim} and @code{\enddim}.
1518
1519 @cindex diminuendo
1520
1521 Dynamics are grobs of @code{Voice.DynamicText} and
1522 @code{Voice.Hairpin}. They are put together on
1523 @code{Voice.DynamicLineSpanner} to align them vertically.
1524
1525
1526 @c .  {Repeats}
1527 @node Repeats
1528 @section Repeats
1529
1530
1531 @cindex repeats
1532 @cindex @code{\repeat}
1533
1534 To specify repeats, use the @code{\repeat} keyword.  Since repeats
1535 should work differently when played or printed, there are a few
1536 different variants of repeats.
1537
1538 @table @asis
1539 @item unfold
1540 Repeated music is fully written (played) out.  Useful for MIDI
1541 output, and entering repetitive music.
1542
1543 @item volta  
1544 This is the normal notation: Repeats are not written out, but
1545 alternative endings (voltas) are printed, left to right.
1546
1547 @item fold
1548 Alternative endings are written stacked. This has limited use but may be
1549 used to typeset two lines of lyrics in songs with repeats, see
1550 @file{input/star-spangled-banner.ly}.
1551
1552 @item tremolo
1553 Make tremolo beams.
1554
1555 @item percent
1556 Make beat or measure repeats. These look like percent signs.
1557
1558 @end table  
1559
1560 @menu
1561 * Repeat syntax::               
1562 * Manual repeat commands::      
1563 * Tremolo repeats::             
1564 * Tremolo subdivisions::        
1565 * Measure repeats::             
1566 @end menu
1567
1568 @node Repeat syntax
1569 @subsection Repeat syntax
1570
1571 The syntax for repeats is
1572
1573 @example
1574   \repeat @var{variant} @var{repeatcount} @var{repeatbody}
1575 @end example
1576
1577 If you have alternative endings, you may add
1578 @cindex @code{\alternative}
1579 @example
1580  \alternative @code{@{} @var{alternative1}
1581             @var{alternative2}
1582             @var{alternative3} @dots{} @code{@}}
1583 @end example
1584 where each @var{alternative} is a music expression.
1585
1586 Normal notation repeats are used like this:
1587 @lilypond[fragment,verbatim]
1588   c'1
1589   \repeat volta 2 { c'4 d' e' f' }
1590   \repeat volta 2 { f' e' d' c' }
1591 @end lilypond
1592
1593 With alternative endings:
1594 @lilypond[fragment,verbatim]
1595   c'1
1596   \repeat volta 2 {c'4 d' e' f'} 
1597   \alternative { {d'2 d'} {f' f} }
1598 @end lilypond
1599
1600 Folded repeats look like this:
1601
1602
1603 @lilypond[fragment,verbatim]
1604   c'1
1605   \repeat fold 2 {c'4 d' e' f'} 
1606   \alternative { {d'2 d'} {f' f} }
1607
1608 @end lilypond
1609
1610 If you don't give enough alternatives for all of the repeats, then
1611 the first alternative is assumed to be repeated often enough to equal
1612 the specified number of repeats.
1613
1614 @lilypond[fragment,verbatim]
1615 \context Staff {
1616   \relative c' {
1617     \partial 4
1618     \repeat volta 4 { e | c2 d2 | e2 f2 | }
1619     \alternative { { g4 g g } { a | a a a a | b2. } }
1620   }
1621 }
1622 @end lilypond
1623
1624 @subsection Unfolding repeats for MIDI output.
1625
1626 @cindex expanding repeats
1627
1628 See @file{input/test/unfold-all-repeats.ly}. 
1629
1630
1631 @refbugs
1632
1633 Notice that timing information is not remembered at the start of an
1634 alternative, so you have to reset timing information after a repeat,
1635 e.g. using a bar-check (See @ref{Bar check}), setting
1636 @code{Score.measurePosition} or entering @code{\partial}.  Slurs or ties
1637 are also not repeated.
1638
1639 It is possible to nest @code{\repeat}s, although this probably is only
1640 meaningful for unfolded repeats.
1641
1642 Folded repeats offer little more over simultaneous music.  However, it
1643 is to be expected that more functionality -- especially for the MIDI
1644 backend -- will be implemented at some point in the future.
1645
1646 Volta repeats are printed over all staves in a score. You must turn them
1647 off explicitly, for example by doing
1648 @example
1649   \property Staff.VoltaBracket = \turnOff
1650 @end example
1651 in all but the top staff.
1652
1653 @node Manual repeat commands
1654 @subsection Manual repeat commands
1655
1656 @cindex @code{repeatCommands}
1657
1658 The property @code{repeatCommands} can be used to control the layout of
1659 repeats. Its value is a Scheme list of repeat commands, where each repeat
1660 command can be
1661
1662 @table @code
1663 @item 'start-repeat
1664  Print a |: bar line
1665 @item 'stop-repeat
1666  Print a :| bar line
1667 @item (volta . @var{text})
1668   Print a volta bracket saying @var{text}.
1669 @item (volta . #f)
1670   Stop a running volta bracket
1671 @end table
1672
1673 @lilypond[verbatim, fragment]
1674  c''4
1675     \property Score.repeatCommands = #'((volta "93") end-repeat)
1676  c''4 c''4
1677     \property Score.repeatCommands = #'((volta #f))
1678  c''4 c''4
1679 @end lilypond
1680
1681
1682 Repeats brackets are @code{Staff.VoltaBracket} grobs.
1683
1684 @node Tremolo repeats
1685 @subsection Tremolo repeats
1686 @cindex tremolo beams
1687
1688 To place tremolo marks between notes, use @code{\repeat} with tremolo
1689 style.  
1690 @lilypond[verbatim,center,singleline]
1691 \score { 
1692   \context Voice \notes\relative c' {
1693     \repeat "tremolo" 8 { c16 d16 }
1694     \repeat "tremolo" 4 { c16 d16 }    
1695     \repeat "tremolo" 2 { c16 d16 }
1696     \repeat "tremolo" 4 c16
1697   }
1698 }
1699 @end lilypond
1700
1701 Tremolo beams are @code{Voice.Beam} grobs. Single stem tremolos are
1702 @code{Voice.StemTremolo}.
1703
1704 @refbugs
1705
1706
1707 At present, the spacing between tremolo beams is not regular, since the
1708 spacing engine does not notice that not all notes are printed.
1709
1710 @node Tremolo subdivisions
1711 @subsection Tremolo subdivisions
1712 @cindex tremolo marks
1713 @cindex @code{tremoloFlags}
1714
1715 Tremolo marks can be printed on a single note by adding
1716 `@code{:}[@var{length}]' after the note.  The length must be at least 8.
1717 A @var{length} value of 8 gives one line across the note stem.  If the
1718 length is omitted, then then the last value (stored in
1719 @code{Voice.tremoloFlags}) is used.
1720
1721 @lilypond[verbatim,fragment,center]
1722   c'2:8 c':32 | c': c': |
1723 @end lilypond
1724
1725 @refbugs
1726
1727
1728 Tremolos in this style do not carry over into the MIDI output.
1729
1730
1731 @node Measure repeats
1732 @subsection Measure repeats
1733
1734 @cindex percent repeats
1735 @cindex measure repeats
1736
1737 In the @code{percent} style, a note pattern can be repeated. It is
1738 printed once, and then the pattern is replaced with a special sign.
1739 Patterns of a one and two measures are replaced by percent-like signs,
1740 patterns that divide the measure length are replaced by slashes.
1741
1742 @lilypond[verbatim,singleline]
1743  \context Voice { \repeat  "percent" 4  { c'4 }
1744     \repeat "percent" 2 { c'2 es'2 f'4 fis'4 g'4 c''4 }
1745 }
1746 @end lilypond
1747
1748 The signs are represented by these grobs: @code{Voice.RepeatSlash} and
1749 @code{Voice.PercentRepeat} and @code{Voice.DoublePercentRepeat}.
1750
1751 @refbugs
1752
1753 You can not nest percent repeats, e.g. by filling in the first measure
1754 with slashes, and repeating that measure with percents.
1755
1756 @node Rhythmic music
1757 @section Rhythmic music
1758
1759
1760 @menu
1761 * Rhythmic staves::             
1762 @end menu
1763
1764 @node Rhythmic staves
1765 @subsection Rhythmic staves
1766
1767 Sometimes you might want to show only the rhythm of a melody.  This can
1768 be done with the rhythmic staff. All pitches of notes on such a staff
1769 are squashed, and the  staff itself  looks has  a single staff line:
1770
1771 @lilypond[fragment,relative,verbatim]
1772   \context RhythmicStaff {
1773       \time 4/4
1774       c4 e8 f  g2 | r4 g r2 | g1:32 | r1 |
1775   }
1776 @end lilypond
1777
1778
1779 @c . {Piano music}
1780 @node Piano music
1781 @section Piano music
1782
1783 Piano music is an odd type of notation. Piano staves are two normal
1784 staves coupled with a brace.  The staves are largely independent, but
1785 sometimes voices can cross between the two staves.  The
1786 @code{PianoStaff} is especially built to handle this cross-staffing
1787 behavior.  In this section we discuss the @code{PianoStaff} and some
1788 other pianistic peculiarities.
1789
1790 @menu
1791 * Automatic staff changes::     
1792 * Manual staff switches::       
1793 * Pedals::                      
1794 * Arpeggio::                    
1795 * Voice follower lines::        
1796 @end menu 
1797
1798
1799 @c .   {Automatic staff changes}
1800 @node Automatic staff changes
1801 @subsection Automatic staff changes
1802 @cindex Automatic staff changes
1803
1804 Voices can switch automatically between the top and the bottom
1805 staff. The syntax for this is
1806 @example
1807         \autochange @var{contexttype} @var{musicexp}
1808 @end example
1809 This will switch the interpretation context of @var{musicexp} between a
1810 @var{contexttype} named @code{up} and @code{down}. Typically, you use
1811 @code{Staff} for @var{contexttype}.  The autochanger switches on basis
1812 of pitch (central C is the turning point), and it looks ahead skipping
1813 over rests to switch rests in advance.
1814         
1815 @lilypond[verbatim,singleline]
1816 \score { \notes \context PianoStaff <
1817   \context Staff = "up" {
1818     \autochange Staff \context Voice = VA < \relative c' {
1819        g4 a  b c d r4 a g } > }
1820   \context Staff = "down" {
1821        \clef bass
1822        s1*2
1823 } > }
1824 @end lilypond
1825
1826 Note how spacer rests are used to prevent the bottom staff from
1827 terminating too soon.
1828
1829
1830 @node Manual staff switches
1831 @subsection Manual staff switches
1832
1833 @cindex manual staff switches
1834 @cindex staff switch, manual
1835
1836 Voices can be switched between staves manually, using the following command:
1837 @example
1838   \translator Staff = @var{staffname} @var{music}
1839 @end example
1840 The string @var{staffname} is the name of the staff. It switches the
1841 current voice from its current staff to the Staff called
1842 @var{staffname}. Typically @var{staffname} is @code{"up"} or
1843 @code{"down"}.
1844
1845 The formal definition of this construct is obtuse, but for the sake of
1846 completeness we give it here.
1847 @cindex @code{\translator}
1848 @example
1849   \translator @var{contexttype} = @var{name}
1850 @end example
1851 Formally, this construct is a music expression indicating
1852 that the context which is a direct child of the context of type
1853 @var{contexttype} should be shifted to a context of type
1854 @var{contexttype} and the specified name.
1855
1856
1857 @c .   {Pedals}
1858 @node Pedals
1859 @subsection Pedals
1860 @cindex Pedals
1861
1862 Piano pedal instruction can be expressed using 
1863 @code{\sustainDown}, @code{\sustainUp}, @code{\unaCorda},
1864 @code{\treCorde}, @code{\sostenutoDown} and @code{\sostenutoUp}.
1865
1866 These identifiers are shorthands for spanner commands of the types
1867 @code{Sustain}, @code{UnaCorda} and @code{Sostenuto}:
1868
1869 @lilypond[fragment,verbatim]
1870 c''4 \spanrequest \start "Sustain" c''4
1871 c''4 \spanrequest \stop "Sustain"
1872 @end lilypond
1873
1874 The symbols that are printed can be modified by setting
1875 @code{pedal@var{X}Strings}, where @var{X} is one of the pedal
1876 types. Refer to the generated documentation of @rgrob{PianoPedal} for
1877 more information.
1878
1879 @refbugs
1880
1881
1882 Currently, brackets are not supported, only text markings (i.e. `*Ped'
1883 style).
1884
1885
1886 @c .   {Arpeggio}
1887 @node Arpeggio
1888 @subsection Arpeggio
1889 @cindex Arpeggio
1890
1891 @cindex broken arpeggio
1892 @cindex @code{\arpeggio}
1893
1894 You can specify an arpeggio sign on a chord by attaching an
1895 @code{\arpeggio} to a note of the chord.
1896
1897
1898 @lilypond[fragment,relative,verbatim]
1899   \context Voice <c\arpeggio e g c>
1900 @end lilypond
1901
1902 When an arpeggio crosses staves in piano music, you attach an arpeggio
1903 to the chords in both staves, and set
1904 @code{PianoStaff.connectArpeggios}.
1905
1906 @lilypond[fragment,relative,verbatim]
1907   \context PianoStaff <
1908     \property PianoStaff.connectArpeggios = ##t
1909     \context Voice = one  { <c'\arpeggio e g c> }
1910     \context Voice = other { \clef bass  <c,,\arpeggio e g>}
1911   >  
1912 @end lilypond
1913
1914 This command creates @code{Voice.Arpeggio} grobs.  Cross staff arpeggios
1915 are @code{PianoStaff.Arpeggio}.
1916
1917 To add an arrow head to explicitly specify the direction of the
1918 arpeggio, you should set the arpeggio grob property
1919 @code{arpeggio-type}.
1920
1921 @lilypond[fragment,relative,verbatim]
1922   \context Voice {
1923      \property Voice.Arpeggio \override #'arpeggio-direction = #1
1924      <c\arpeggio e g c>
1925      \property Voice.Arpeggio \override #'arpeggio-direction = #-1
1926      <c\arpeggio e g c>
1927   }
1928 @end lilypond
1929
1930 @ignore
1931 A square bracket on the left indicates that the player should not
1932 arpeggiate the chord.
1933
1934 @lil ypond[fragment,relative,verbatim]
1935   \context PianoStaff <
1936     \property PianoStaff.connectArpeggios = ##t
1937     \property PianoStaff.Arpeggio \override #'arpeggio-direction = #'bracket
1938     \context Voice = one  { <c'\arpeggio e g c> }
1939     \context Voice = other { \clef bass  <c,,\arpeggio e g>}
1940   >  
1941 @ e nd lilypond
1942 @end ignore
1943
1944
1945 @refbugs
1946
1947 It is not possible to mix connected arpeggios and unconnected arpeggios
1948 at the same time.
1949
1950
1951
1952 @node  Voice follower lines
1953 @subsection Voice follower lines
1954
1955 @cindex follow voice
1956 @cindex staff switching
1957 @cindex cross staff
1958
1959 @cindex @code{followVoice}
1960
1961 Whenever a voice switches to another staff a line connecting the notes
1962 can be printed automatically. This is enabled if the property
1963 @code{PianoStaff.followVoice} is set to true:
1964
1965 @lilypond[fragment,relative,verbatim]
1966   \context PianoStaff <
1967     \property PianoStaff.followVoice = ##t
1968     \context Staff \context Voice {
1969       c1
1970       \translator Staff=two
1971       b2 a
1972     }
1973     \context Staff=two {\clef bass \skip 1*2 }
1974   >  
1975 @end lilypond
1976
1977 The associated grob is @code{Voice.VoiceFollower}.
1978
1979
1980 @node Lyrics
1981 @section Lyrics
1982
1983
1984 @menu
1985 * Lyrics mode::                 
1986 * Printing lyrics::             
1987 * Automatic syllable durations::  
1988 * More stanzas::                
1989 @end menu
1990
1991 @c .  {Lyrics mode}
1992 @node Lyrics mode
1993 @subsection Lyrics mode
1994 @cindex Lyrics mode
1995
1996 To print lyrics, you must first make a music expression from the lyric
1997 text.  That music expression can be printed by selecting an appropriate
1998 context.
1999
2000 @cindex lyric mode
2001 @cindex @code{\lyrics}
2002
2003 You can enter lyrics in a special input mode of LilyPond. This mode is
2004 called Lyrics mode, and it is introduced by the keyword @code{\lyrics}.
2005 The purpose of this mode is that you can enter lyrics as plain text,
2006 punctuation and accents without any hassle.
2007
2008 Syllables are entered like notes, with pitches replaced by text.  For
2009 example, @code{Twin- kle twin- kle} enters four syllables.  Note that
2010 the hyphen has no special meaning for lyrics, and does not introduce
2011 special symbols.
2012
2013 Spaces can be introduced into a lyric either by using quotes:
2014 @code{"He could"4 not4} or by using an underscore without quotes:
2015 @code{He_could4 not4}.  All unquoted underscores are converted to
2016 spaces.
2017
2018 The precise definition of this mode can be found in @ref{Lyrics mode
2019 definition}. 
2020
2021 @c .  {Printing lyrics}
2022 @node Printing lyrics
2023 @subsection Printing lyrics
2024 @cindex lyrics
2025
2026 Lyrics are printed by interpreting them in the @code{Lyrics}  context.
2027
2028 @c Maybe more pedagogical to avoid \addlyrics in this first example? /MB
2029
2030 @lilypond[verbatim,singleline]
2031 \addlyrics \notes \relative c' {
2032         \time 7/4
2033         \property Staff.automaticMelismata = ##t
2034         d'2 c4 b16 ( a g a b a b ) c a2
2035         b2 c4 b8 ( a16 g ) a4 g2 }
2036     \context Lyrics \lyrics { 
2037        Join us now __ and
2038        share the soft -- ware; }
2039 @end lilypond
2040
2041
2042 Notes and syllable durations are matched automatically. This is
2043 accomplished using @code{\addlyrics}, which is documented in
2044 @ref{Automatic syllable durations}. Setting @code{automaticMelismata} in
2045 the melody staff will cause slurs to be interpreted as melismata.
2046
2047 The Lyric syllables are @code{LyricsVoice.LyricSyllable} grobs.
2048
2049 @cindex extender
2050 @cindex lyric extender
2051 @cindex melisma
2052
2053 As you can see, extender lines are entered as @code{__}.  This will
2054 create an extender, a line that extends over the entire duration of the
2055 lyric.  This line will run all the way to the start of the next lyric,
2056 so you may want to shorten it by using a blank lyric (using @code{_}).
2057 The grob for this symbol is @code{LyricsVoice.LyricExtender}.
2058
2059
2060 @cindex hyphen
2061
2062 If you want to have hyphens centered between syllables (rather than
2063 attached to the end of the first syllable) you can use the special
2064 `@code{-}@code{-}' lyric as a separate word between syllables.  This
2065 will result in a hyphen whose length varies depending on the space
2066 between syllables. It will be centered between the syllables.  The grob
2067 for this symbol is @code{LyricsVoice.LyricHyphen}.
2068
2069 @cindex Lyric hyphen
2070
2071 @node Automatic syllable durations
2072 @subsection Automatic syllable durations
2073 @cindex Automatic syllable durations
2074
2075 @cindex automatic lyric durations
2076 @cindex @code{\addlyrics}
2077
2078 If you have lyrics that are set to a melody, you can copy the rhythm
2079 of that melody into the lyrics using @code{\addlyrics}.  The syntax for
2080 this is
2081 @example
2082   \addlyrics @var{musicexpr1 musicexpr2}
2083 @end example
2084
2085 Both @var{musicexpr1} and @var{musicexpr2} are interpreted, but every
2086 music event (``every syllable'') in @var{musicexpr2} is interpreted only
2087 when there are events in @var{musicexpr1}.
2088
2089 @cindex @code{automaticMelismata}
2090
2091 If the property @code{automaticMelismata} is set in the
2092 context of @var{musicexpr1}, no lyrics will be put on slurred or tied
2093 notes.
2094
2095 @lilypond[verbatim,fragment]
2096 \addlyrics
2097 \transpose c'' {
2098   \property Voice.automaticMelismata = ##t
2099   c8 () cis d8. e16 f2
2100 }
2101 \context Lyrics \lyrics {
2102  do4 re mi fa }
2103 @end lilypond
2104
2105 If you want the lyric lines to be above the melody staff, or in some
2106 other, more complex configuration, then build that configuration first
2107 using simultaneous music, and use @code{\addlyrics} after that.
2108
2109 @lilypond[verbatim, singleline]
2110 \notes <
2111   \context Lyrics = LA { s1 }
2112   \context Staff = SA { s1 }
2113   \addlyrics
2114         \context Staff = SA \relative c' { c4 e g g }
2115         \context Lyrics  = LA \lyrics { geen ge -- don -- der } >
2116 @end lilypond
2117
2118 For @code{\addlyrics} you should use a single rhythm melody, and single
2119 rhythm lyrics (a constant duration is the obvious choice).  If you do
2120 not, you can get undesired effects when using multiple stanzas:
2121
2122 @lilypond[verbatim,fragment]
2123 \addlyrics
2124 \transpose c'' {
2125   c8 () cis d8. e16 f2
2126 }
2127 \context Lyrics \lyrics
2128 < { do4 re fa sol }
2129   { do8 re fa sol } >
2130 @end lilypond
2131
2132 It is valid (but probably not very useful) to use notes instead of
2133 lyrics for @var{musicexpr2}.
2134
2135 @node More stanzas
2136 @subsection More stanzas
2137
2138 @cindex phrasing
2139
2140 If you have multiple stanzas printed underneath each other, the vertical
2141 groups of syllables should be aligned around punctuation. LilyPond can
2142 do this if you tell it which lyric lines belong to which melody.
2143
2144 To this end, give the Voice context an identity, and set the LyricsVoice
2145 to a name starting with that identity followed by a dash.
2146 In the following example, the Voice
2147 identity is @code{duet}, and the identities of the LyricsVoices are
2148 @code{duet-1} and @code{duet-2}.
2149
2150
2151 @lilypond[singleline,verbatim]
2152 \score {
2153 \addlyrics
2154   \notes \relative c'' \context Voice = duet { \time 3/4
2155      g2 e4 a2 f4 g2.  }
2156   \lyrics \context Lyrics <
2157   \context LyricsVoice = "duet-1" {
2158     \property LyricsVoice . stanza = "Bert"
2159     Hi, my name is bert.    }
2160   \context LyricsVoice = "duet-2" {
2161     \property LyricsVoice . stanza = "Ernie" 
2162     Ooooo, ch\'e -- ri, je t'aime. }
2163   >
2164 }
2165 @end lilypond
2166
2167 You can add stanza numbers by setting @code{LyricsVoice.Stanza} (for the
2168 first system) and @code{LyricsVoice.stz} for the following
2169 systems. Notice how you must surround dots with spaces in @code{\lyrics}
2170 mode.
2171
2172
2173
2174
2175 @cindex stanza numbering
2176
2177
2178 @c . {Chords}
2179 @node Chords
2180 @section Chords
2181 @cindex Chords
2182
2183 LilyPond has support for both entering and printing chords.  Chords are
2184 characterized by a set of pitches. They are
2185 internally stored as simultaneous music expressions. This means you can
2186 enter chords by name and print them as note head, enter them as notes
2187 and print them as chord names, or (the most common case) enter them by
2188 name, and print them as name.
2189
2190
2191 @lilypond[verbatim,singleline]
2192 twoWays = \notes \transpose c'' {
2193   \chords {
2194     c1 f:sus4 bes/f
2195   }
2196   <c e g>
2197   <f bes c'>
2198   <f bes d'>
2199   }
2200
2201 \score {
2202    < \context ChordNames \twoWays
2203      \context Voice \twoWays > }
2204 @end lilypond
2205
2206 Note that this example also shows that the chord printing routines do
2207 not attempt to be intelligent. If you enter @code{f bes d}, it does not
2208 interpret this as an inversion.
2209
2210 @menu
2211 * Chords mode::                 
2212 * Printing named chords::       
2213 @end menu
2214
2215 @c .  {Chords mode}
2216 @node Chords mode
2217 @subsection Chords mode
2218 @cindex Chords mode
2219
2220 Chord mode is a mode where you can input sets of pitches using common
2221 names.  It is introduced by the keyword @code{\chords}.  It is similar
2222 to note mode, but words are also looked up in a chord modifier table
2223 (containing @code{maj}, @code{dim}, etc).
2224
2225 Dashes and carets are used to indicate chord additions and subtractions,
2226 so articulation scripts can not be entered in Chord mode.
2227
2228 The syntax for named chords is as follows:
2229 @example
2230   @var{tonic}[@var{duration}][@code{-}@var{modifiers}][@code{^}@var{subtractions}][@code{/}@var{inversion}][@code{/+}@var{bass}].
2231 @end example
2232
2233 @var{tonic} should be the tonic note of the chord, and @var{duration} is
2234 the chord duration in the usual notation.  There are two kinds of
2235 modifiers.  One type is formed by @emph{chord additions}. Additions are
2236 obtained by listing intervals separated by dots.  An interval is written
2237 by its number with an optional @code{+} or @code{-} to indicate raising
2238 or lowering by half a step.  Chord additions have two effects: they adds
2239 the specified interval and all lower odd numbered intervals to the
2240 chord, and they may lower or raise the specified interval.
2241
2242 Throughout these examples, chords have been shifted around the staff
2243 using @code{\transpose}.
2244
2245 @lilypond[fragment,verbatim]
2246 \transpose c'' {
2247   \chords {
2248     c1  c:3-       c:7     c:8
2249     c:9 c:9-.5+.7+ c:3-.5- 
2250   }
2251 }
2252 @end lilypond
2253
2254 @cindex @code{aug}
2255 @cindex @code{dim}
2256 @cindex @code{maj}
2257 @cindex @code{sus}
2258
2259 The second type of modifier that may appear after the @code{:} is a
2260 named modifier.  Named modifiers are listed in the file
2261 @file{chord-modifiers.ly}.  The available modifiers are @code{m} and
2262 @code{min} which lower the 3rd half a step, `@code{aug}' which
2263 raises the 5th, `@code{dim}' which lowers the 5th,
2264 `@code{maj}' which adds a raised 7th, and `@code{sus}'
2265 which replaces the 5th with a 4th.
2266
2267 @lilypond[fragment,verbatim]
2268 \transpose c'' {
2269   \chords {
2270     c1:m c:min7 c:maj c:aug c:dim c:sus
2271   }
2272 }
2273 @end lilypond
2274  
2275
2276 Chord subtractions are used to eliminate notes from a chord.  The
2277 notes to be subtracted are listed after a @code{^} character,
2278 separated by dots.
2279
2280 @lilypond[fragment,verbatim,center]
2281   \transpose c'' {
2282     \chords {
2283       c1^3 c:7^5.3 c:8^7
2284     }
2285   }
2286 @end lilypond 
2287 @cindex @code{/}
2288
2289 Chord inversions can be specified by appending `@code{/}' and the name
2290 of a single note to a chord.  In a chord inversion, the inverted note is
2291 transposed down until it is the lowest note in the chord.  If the note
2292 is not in the chord, a warning will be printed.
2293
2294 @lilypond[fragment,verbatim,center]
2295   \transpose c''' {
2296     \chords {
2297       c1 c/e c/g c:7/e
2298     }
2299   }
2300
2301 @end lilypond 
2302 @cindex @code{/+}
2303
2304 Bass notes can be added by `@code{/+}' and
2305 the name of a single note to a chord.  This has the effect of
2306 adding the specified note to the chord, lowered by an octave,
2307 so it becomes the lowest note in the chord.
2308
2309 @lilypond[fragment,verbatim,center]
2310   \transpose c''' {
2311     \chords {
2312       c1 c/+c c/+g c:7/+b
2313     }
2314   }
2315
2316 @end lilypond 
2317
2318 @refbugs
2319
2320 Implementation details are quite gory. For example @code{c:4} not only
2321 adds a fourth, but also removes the third.
2322
2323
2324 @c .  {Printing named chords}
2325 @node Printing named chords
2326 @subsection Printing named chords
2327
2328 @cindex printing chord names
2329 @cindex chord names
2330 @cindex chords
2331 @cindex @code{ChordNames}
2332
2333
2334 For displaying printed chord names, use the @code{ChordNames} context.
2335 The chords may be entered either using the notation described above, or
2336 directly using simultaneous music.
2337
2338 @lilypond[verbatim,singleline]
2339 scheme = \notes {
2340   \chords {a1 b c} <d f g>  <e g b>
2341 }
2342 \score {
2343   \notes<
2344     \context ChordNames \scheme
2345     \context Staff \transpose c'' \scheme
2346   >
2347 }
2348 @end lilypond
2349
2350 You can make the chord changes stand out by setting
2351 @code{ChordNames.chordChanges} to true.  This will only display chord
2352 names when there's a change in the chords scheme and at the start of a
2353 new line.
2354
2355 @lilypond[verbatim]
2356 scheme = \chords {
2357   c1:m c:m \break c:m c:m d
2358 }
2359 \score {
2360   \notes <
2361     \context ChordNames {
2362         \property ChordNames.chordChanges = ##t
2363         \scheme }
2364     \context Staff \transpose c'' \scheme
2365   > }
2366 @end lilypond
2367
2368 LilyPond examines chords specified as lists of notes to determine a name
2369 to give the chord. LilyPond will not try to identify chord inversions or
2370 an added bass note, which may result in strange chord names when chords
2371 are entered as a list of pitches:
2372
2373 @lilypond[verbatim,center,singleline]
2374 scheme = \notes {
2375   <c'1 e' g'>
2376   <e' g' c''>
2377   <e e' g' c''>
2378 }
2379
2380 \score {
2381   <
2382     \context ChordNames \scheme
2383     \context Staff \scheme
2384   >
2385 }
2386 @end lilypond
2387
2388
2389 By default, a chord name system proposed by Harald Banter (See
2390 @ref{Literature}) is used. The system is very regular and predictable.
2391 Typical American style chord names may be selected by setting the
2392 @code{style} property of the @code{ChordNames.ChordName} grob to
2393 @code{'american}. Similarly @code{'jazz} selects Jazz chordnames.
2394
2395 Routines that determine the names to be printed are written in Scheme,
2396 and may be customized by the user.  The code can be found in
2397 @file{scm/chord-name.scm}.  Here's an example showing the differences in
2398 chord name styles:
2399
2400 @c too long?
2401 @c maybe just junk verbatim option?
2402 @lilypond[verbatim,singleline]
2403 scheme = \chords {
2404   c1 c:5^3 c:4^3 c:5+
2405   c:m7+ c:m5-.7
2406   c:5-.7 c:5+.7
2407   c:9^7
2408 }
2409
2410 \score {
2411   \notes <
2412     \context ChordNames = banter \scheme
2413     \context ChordNames = american {
2414       \property ChordNames.ChordName \override
2415         #'style = #'american \scheme }
2416     \context ChordNames = jazz {
2417       \property ChordNames.ChordName \override
2418         #'style = #'jazz \scheme }
2419     \context Staff \transpose c'' \scheme
2420   >
2421 }
2422 @end lilypond
2423
2424
2425 @node Writing parts
2426 @section Writing parts
2427
2428 Orchestral music involves some special notation, both in the full score,
2429 as in the individual parts. This section explains how to tackle common
2430 problems in orchestral music.
2431
2432
2433 @c .  {Transpose}
2434 @menu
2435 * Rehearsal marks::             
2436 * Bar numbers::                 
2437 * Instrument names::            
2438 * Transpose::                   
2439 * Sound output for transposing instruments::  
2440 * Multi measure rests::         
2441 * Automatic part combining::    
2442 * Hara kiri staves::            
2443 @end menu
2444
2445 @c .   {Rehearsal marks}
2446 @node Rehearsal marks
2447 @subsection Rehearsal marks
2448 @cindex Rehearsal marks
2449 @cindex mark
2450 @cindex @code{\mark}
2451 @cindex @code{Mark_engraver}
2452
2453 @example
2454   \mark @var{unsigned}
2455   \mark @var{string}
2456   \mark \default
2457 @end example
2458
2459 This command prints a rehearsal mark above the system. You can provide
2460 a number, a string or a markup text as argument. If you use
2461 @code{\default}, the value of property @code{rehearsalMark} is used and
2462 automatically incremented.
2463
2464 @lilypond[fragment,verbatim]
2465 \relative c'' {
2466   c1 \mark "A2"
2467   c1 \mark \default
2468   c1 \mark \default 
2469   c1 \mark "12"
2470   c1 \mark #'(music "scripts-segno") 
2471   c1
2472 }
2473 @end lilypond
2474
2475 The grob is @code{Score.RehearsalMark}. See
2476 @code{input/test/boxed-molecule.ly} if you need boxes around the marks.
2477
2478 @node Bar numbers
2479 @subsection Bar numbers
2480
2481 Bar numbers (grob: @code{BarNumber}) are printed at the start of the
2482 line. See @code{input/test/boxed-molecule.ly} for boxed bar numbers.
2483
2484 @refbugs
2485
2486 It is not possible to have bar numbers printed at regular intervals
2487 only.
2488
2489 @node Instrument names
2490 @subsection Instrument names
2491
2492 You can specify an instrument name for a staff by setting
2493 @code{Staff.instrument} and @code{Staff.instr}. This will print a string
2494 before the start of the staff. For the first start, @code{instrument} is
2495 used, for the next ones @code{instr} is used.
2496
2497 @lilypond[verbatim,singleline]
2498   \property Staff.instrument = "ploink " { c''4 }  
2499 @end lilypond
2500
2501 You can also use markup texts to construct more complicated instrument
2502 names:
2503
2504
2505 @lilypond[verbatim,singleline]
2506 #(define text-flat
2507   '((font-relative-size . -2 ) (music "accidentals--1")))
2508
2509 \score { \notes {
2510   \property Staff.instrument = #`((kern . 0.5) (lines
2511     "2 Clarinetti" (columns "     (B" ,text-flat ")")))
2512     c'' 4 }
2513 }
2514 @end lilypond
2515
2516
2517 @refbugs
2518
2519 When you put a name on a grand staff or piano staff the width of the
2520 brace is not taken into account. You must add extra spaces to the end of
2521 the name to avoid a collision.
2522
2523 @node Transpose
2524 @subsection Transpose
2525 @cindex Transpose
2526 @cindex transposition of pitches
2527 @cindex @code{\transpose}
2528
2529 A music expression can be transposed with @code{\transpose}.  The syntax
2530 is
2531 @example
2532   \transpose @var{pitch} @var{musicexpr}
2533 @end example
2534
2535 This means that middle C in @var{musicexpr} is transposed to
2536 @var{pitch}.
2537
2538 @code{\transpose} distinguishes between enharmonic pitches: both
2539 @code{\transpose cis'} or @code{\transpose des'} will transpose up half
2540 a tone.  The first version will print sharps and the second version
2541 will print flats.
2542
2543 @lilypond[fragment,verbatim]
2544 \context Staff {
2545   \clef "F"
2546   { \key e \major c d e f }
2547   \clef "G"
2548   \transpose des'' { \key e \major c d e f }
2549   \transpose cis'' { \key e \major c d e f }
2550 }
2551 @end lilypond
2552
2553 If you want to use both @code{\transpose} and @code{\relative}, then
2554 you must use @code{\transpose} first.  @code{\relative} will have no
2555 effect music that appears inside a @code{\transpose}.
2556
2557 @node Sound output for transposing instruments
2558 @subsection Sound output transposing instruments
2559
2560 When you want to make a MIDI file from a score containing transposed and
2561 untransposed 
2562 instruments, you have to instruct LilyPond the pitch offset (in
2563 semitones) for the transposed instruments. This is done using the
2564 @code{transposing} property. It does not affect printed output.
2565
2566 @cindex @code{transposing}
2567
2568 @example
2569         \property Staff.instrument = #"Cl. in B-flat"
2570         \property Staff.transposing = #-2
2571 @end example
2572
2573 @c .  {Multi measure rests}
2574 @node  Multi measure rests
2575 @subsection Multi measure rests
2576 @cindex Multi measure rests
2577
2578 @cindex @code{R}
2579
2580 Multi measure rests are entered using `@code{R}'. It is specifically
2581 meant for full bar rests and for entering parts: the rest can expand to
2582 fill a score with 
2583 rests, or it can be printed as a single multimeasure rest This expansion
2584 is controlled by the property @code{Score.skipBars}. If this is set to true,
2585 Lily will not expand empty measures, and the appropriate number is added
2586 automatically.
2587
2588 @lilypond[fragment,verbatim]
2589  \time 3/4 r2. | R2. | R2.*2 \property Score.skipBars = ##t R2.*17  R2.*4
2590 @end lilypond
2591
2592 Notice that the @code{R2.} is printed as a whole rest, centered in the
2593 measure. 
2594
2595 @cindex whole rests for a full measure 
2596
2597 @refbugs
2598
2599 Currently, there is no way to automatically condense multiple rests into
2600 a single multimeasure rest.
2601
2602 @cindex condensing rests
2603
2604 @node Automatic part combining
2605 @subsection Automatic part combining
2606 @cindex automatic part combining
2607 @cindex part combiner
2608
2609
2610 Automatic part combining is used to merge two parts of music onto a
2611 staff in an intelligent way.  It is aimed primarily at typesetting
2612 orchestral scores.  When the two parts are identical for a period of
2613 time, only one is shown.  In places where the two parts differ, they are
2614 typeset as separate voices, and stem directions are set automatically.
2615 Also, solo and @emph{a due} parts can be identified and marked.
2616
2617 The syntax for part combining is
2618
2619 @example
2620   \partcombine @var{context} @var{musicexpr1} @var{musicexpr2}
2621 @end example
2622 where the pieces of music @var{musicexpr1} and @var{musicexpr2} will be
2623 combined into one context of type @var{context}.  The music expressions
2624 must be interpreted by contexts whose names should start with @code{one}
2625 and @code{two}.
2626
2627 The most useful function of the part combiner is to combine parts into
2628 one voice, as common for wind parts in orchestral scores:
2629
2630 @lilypond[verbatim,singleline,fragment]
2631   \context Staff <
2632     \context Voice=one \partcombine Voice
2633       \context Thread=one \relative c'' {
2634         g a () b r
2635       }
2636       \context Thread=two \relative c'' {
2637         g r4 r f
2638       }
2639   >
2640 @end lilypond
2641
2642 Notice that the first @code{g} appears only once, although it was
2643 specified twice (once in each part).  Stem, slur and tie directions are
2644 set automatically, depending whether there is a solo or unisono. The
2645 first part (with context called @code{one}) always gets up stems, and
2646 `solo', while the second (called @code{two}) always gets down stems and
2647 `Solo II'.
2648
2649 If you just want the merging parts, and not the textual markings, you
2650 may set the property @var{soloADue} to false.
2651
2652 @lilypond[verbatim,singleline,fragment]
2653   \context Staff <
2654     \property Staff.soloADue = ##f
2655     \context Voice=one \partcombine Voice
2656       \context Thread=one \relative c'' {
2657         b4 a c g
2658       }
2659       \context Thread=two \relative c'' {
2660         d,2 a4 g'
2661       }
2662   >
2663 @end lilypond
2664
2665 There are a number of other properties that you can use to tweak the
2666 behavior of part combining, refer to the automatically generated
2667 documentation of @reng{Thread_devnull_engraver} and
2668 @reng{Voice_devnull_engraver}. Look at the documentation of the
2669 responsible engravers, @code{Thread_devnull_engraver},
2670 @code{Voice_devnull_engraver} and @code{A2_engraver}.
2671
2672 @refbugs
2673
2674 In @code{soloADue} mode, when the two voices play the same notes on and
2675 off, the part combiner may typeset @code{a2} more than once in a
2676 measure.
2677
2678 @lilypond[fragment,singleline]
2679   \context Staff <
2680     \context Voice=one \partcombine Voice
2681       \context Thread=one \relative c'' {
2682         c b c b c a c a
2683       }
2684       \context Thread=two \relative c'' {
2685         b b b b f a f a
2686       }
2687   >
2688 @end lilypond
2689
2690 @cindex @code{Thread_devnull_engraver}
2691 @cindex @code{Voice_engraver}
2692 @cindex @code{A2_engraver}
2693
2694 @node Hara kiri staves
2695 @subsection Hara kiri staves
2696
2697 In orchestral scores, staff lines that only have rests are usually removed.
2698 This saves some space.  LilyPond also supports this through the hara
2699 kiri@footnote{Hara kiri, also called Seppuku, is the ritual suicide of
2700 the Japanese Samourai warriors.} staff. This staff commits suicide when
2701 it finds itself to be empty after the line-breaking process.  It will
2702 not disappear when it contains normal rests, you must use multi measure
2703 rests.
2704
2705 The hara kiri staff is specialized version of the Staff context. It is
2706 available as the context identifier @code{\HaraKiriStaffContext}.
2707 Observe how the second staff in this example disappears in the second
2708 line.
2709
2710 @lilypond[verbatim]
2711 \score  {
2712   \notes \relative c' <
2713     \context Staff = SA { e4 f g a \break c1 }
2714     \context Staff = SB { c4 d e f \break R1 }
2715   >
2716   \paper {
2717     linewidth = 6.\cm 
2718     \translator { \HaraKiriStaffContext }
2719   }
2720 }
2721 @end lilypond
2722
2723
2724
2725 @c . {Custodes}
2726 @node Custodes
2727 @section Custodes
2728 @cindex Custos
2729 @cindex Custodes
2730
2731 A @emph{custos} (plural: @emph{custodes}; latin word for `guard') is a
2732 staff context symbol that appears at the end of a staff line.  It
2733 anticipates the pitch of the first note(s) of the following line and
2734 thus helps the player or singer to manage line breaks during
2735 performance, thus enhancing readability of a score.
2736
2737 @lilypond[verbatim]
2738 \score {
2739   \notes { c'1 \break
2740         \property Staff.Custos \set #'style = #'mensural
2741         d' }
2742   \paper {
2743     \translator {
2744       \StaffContext
2745       \consists Custos_engraver
2746     }
2747   }
2748 }
2749 @end lilypond
2750
2751 Custodes were frequently used in music notation until the 17th century.
2752 There were different appearances for different notation styles.
2753 Nowadays, they have survived only in special forms of musical notation
2754 such as via the @emph{editio vaticana} dating back to the beginning of
2755 the 20th century.
2756
2757 For typesetting custodes, just put a @code{Custos_engraver} into the
2758 @code{StaffContext} when declaring the @code{\paper} block.  In this
2759 block, you can also globally control the appearance of the custos symbol
2760 by setting the custos @code{style} property.  Currently supported styles
2761 are @code{vaticana}, @code{medicaea}, @code{hufnagel} and
2762 @code{mensural}.
2763
2764 @example
2765 \paper @{
2766   \translator @{
2767       \StaffContext
2768       \consists Custos_engraver
2769       Custos \override #'style = #'mensural
2770   @}
2771 @}
2772 @end example
2773
2774 The property can also be set locally, for example in a @code{\notes}
2775 block:
2776
2777 @example
2778 \notes @{
2779   \property Staff.Custos \override #'style = #'vaticana
2780   c'1 d' e' d' \break c' d' e' d'
2781 @}
2782 @end example
2783
2784 @c . {Tuning output}
2785 @node Tuning output
2786 @section Tuning output
2787
2788 LilyPond tries to take as much formatting as possible out of your
2789 hands. Nevertheless, there are situations where it needs some help, or
2790 where you want to override its decisions. In this section we discuss
2791 ways to do just that.
2792
2793 Formatting is internally done by manipulating so called grobs (graphic
2794 objects). Each grob carries with it a set of properties (grob
2795 properties) specific to that object.  For example, a stem grob has
2796 properties that specify its direction, length and thickness.
2797
2798 The most direct way of tuning the output is by altering the values of
2799 these properties. There are two ways of doing that: first, you can
2800 temporarily change the definition of a certain type of grob, thus
2801 affecting a whole set of objects.  Second, you can select one specific
2802 object, and set a grob property in that object.
2803
2804 @menu
2805 * Tuning groups of grobs ::     
2806 * Tuning per grob ::            
2807 * What to tune?::               
2808 * Font selection::              
2809 * Text markup::                 
2810 * Invisible grobs::             
2811 * Dirty tricks::                
2812 @end menu
2813
2814 @node Tuning groups of grobs 
2815 @subsection Tuning groups of grobs 
2816
2817 @cindex grob description
2818
2819
2820
2821 A grob definition is a Scheme association list, that is stored in a
2822 context property.  By assigning to that property (using plain
2823 @code{\property}), you can change the resulting grobs.
2824
2825 @lilypond[verbatim, fragment]
2826 c'4 \property Voice.Stem  = #'((meta . ((interfaces . ())))) c'4
2827 @end lilypond
2828
2829 The @code{\property} assignment effectively empties the definition of
2830 the Stem object. One of the effects is that the recipe of how it should be
2831 printed is erased, with the effect of rendering it invisible.  The above
2832 assignment is available as a standard identifier, for the case that you
2833 find this useful:
2834
2835 @example
2836   \property Voice.Stem = \turnOff
2837 @end example
2838
2839 @cindex \override
2840 @cindex \revert
2841 @cindex \set
2842
2843 This mechanism is fairly crude, since you can only set, but not modify,
2844 the definition of a grob. For this reason, there is a more advanced
2845 mechanism.
2846
2847 The definition of a grob is actually a list of default grob
2848 properties. For example, the definition of the Stem grob (available in
2849 @file{scm/grob-description.scm}), defines the following values for
2850 @code{Stem}
2851
2852 @example
2853         (thickness . 0.8)
2854         (beamed-lengths . (0.0 2.5 2.0 1.5))
2855         (Y-extent-callback . ,Stem::height)
2856         @var{...}
2857 @end example
2858
2859 You can add a property on top of the existing definition, or remove a
2860 property, thus overriding the system defaults:
2861 @lilypond[verbatim]
2862 c'4 \property Voice.Stem \override #'thickness = #4.0
2863 c'4 \property Voice.Stem \revert #'thickness
2864 c'4
2865 @end lilypond
2866 You should balance @code{\override} and @code{\revert}. If that's too
2867 much work, you can use the @code{\set} shorthand. It performs a revert
2868 followed by an override. The following example gives exactly the same
2869 result as the previous one. 
2870 @lilypond[verbatim]
2871 c'4 \property Voice.Stem \set #'thickness = #4.0
2872 c'4 \property Voice.Stem \set #'thickness = #0.8
2873 c'4
2874 @end lilypond
2875 If you use @code{\set}, you must explicitly restore the default.
2876
2877
2878 Formally the syntax for these constructions is
2879 @example
2880 \property @var{context}.@var{grobname} \override @var{symbol} = @var{value}
2881 \property @var{context}.@var{grobname} \set @var{symbol} = @var{value}
2882 \property @var{context}.@var{grobname} \revert @var{symbol}
2883 @end example
2884 Here @var{symbol} is a Scheme expression of symbol type, @var{context}
2885 and @var{grobname} are strings and @var{value} is a Scheme expression.
2886
2887
2888 If you revert a setting which was not set in the first place, then it
2889 has no effect. However, if the setting was set as a system default, it
2890 may remove the default value, and this may give surprising results,
2891 including crashes.  In other words, @code{\override} and @code{\revert},
2892 must be carefully balanced.
2893
2894 These are examples of correct nesting of @code{\override}, @code{\set},
2895 @code{\revert}. 
2896
2897 A clumsy but correct form:
2898 @example
2899   \override \revert \override \revert \override \revert
2900 @end example
2901
2902 Shorter version of the same:
2903 @example 
2904   \override \set \set  \revert
2905 @end example
2906
2907 A short form, using only @code{\set}. This requires you to know the
2908 default value:
2909 @example
2910   \set \set \set \set @var{to default value}
2911 @end example
2912
2913 If there is no default (i.e. by default, the grob property is unset),
2914 then you can use
2915 @example
2916   \set \set \set \revert
2917 @end example
2918
2919 For the digirati, the grob description is an Scheme association
2920 list. Since a Scheme list is a singly linked list, we can treat it as a
2921 stack, and @code{\override} and @code{\revert} are just push and pop
2922 operations. This pushing and popping is also used for overriding
2923 automatic beaming settings.
2924
2925 @refbugs
2926
2927 LilyPond will hang or crash if @var{value} contains cyclic references.
2928 The backend is not very strict in type-checking grob properties. If you
2929 @code{\revert} properties that are expected to be set by default,
2930 LilyPond may crash.
2931
2932 Some grobs are created at the moment that their context is created. An
2933 example of such a grob is the staff itself (i.e. the horizontal lines).
2934 You can not change the appearance of the staff symbol by manipulating
2935 @code{\property Staff.StaffSymbol}.  At the moment that @code{\property
2936 Staff} is interpreted, a Staff context is made, and the StaffSymbol is
2937 created before any @code{\override} is effective. You can deal with this
2938 either overriding properties in a @code{\translator} definition, or by
2939 using @code{\outputproperty}.
2940
2941
2942
2943
2944 @node Tuning per grob 
2945 @subsection Tuning per grob 
2946
2947 @cindex \outputproperty
2948
2949 A second way of tuning grobs is the more arcane @code{\outputproperty}
2950 feature.  The syntax is as follows:
2951 @example
2952 \outputproperty @var{predicate} @var{symbol} = @var{value}
2953 @end example
2954 Here @code{predicate} is a Scheme function taking a grob argument, and
2955 returning a boolean.  This statement is processed by the
2956 @code{Output_property_engraver}.  It instructs the engraver to feed all
2957 grobs that it sees to @var{predicate}. Whenever the predicate returns
2958 true, the grob property @var{symbol} will be set to @var{value}.
2959
2960 You will need to combine this statement with @code{\context} to select
2961 the appropriate context to apply this to.
2962
2963 Here are some random examples. 
2964
2965
2966 In the following example, all note heads occurring at current staff
2967 level, are shifted up and right by setting their @code{extra-offset}
2968 property.
2969
2970 @lilypond[fragment,verbatim,singleline]
2971 \relative c'' { c4
2972   \context Staff \outputproperty
2973   #(make-type-checker 'note-head-interface)
2974   #'extra-offset = #'(0.5 . 0.75)
2975   <c8 e g> }
2976 @end lilypond
2977
2978 @cindex @code{extra-offset}
2979
2980 In this example, the predicate checks the @code{text} grob property, to
2981 shift only the `m.d.' text,  but not the fingering instruction "2".
2982 @lilypond[verbatim,singleline]
2983 #(define (make-text-checker text)
2984    (lambda (grob) (equal? text (ly-get-grob-property grob 'text))))
2985
2986 \score {    
2987   \notes\relative c''' {
2988     \property Voice.Stem \set #'direction = #1
2989     \outputproperty #(make-text-checker "m.d.")
2990       #'extra-offset = #'(-3.5 . -4.5)
2991     a^2^"m.d."    
2992   }
2993 }
2994 @end lilypond
2995
2996 @refbugs
2997
2998 If possible, avoid this feature: the semantics are not very clean, and
2999 the syntax and semantics are up for rewrite.
3000
3001
3002
3003
3004 @node What to tune?
3005 @subsection What to tune?
3006
3007 This all tells you how to tune grobs, but you don't know what variables
3008 to set? The question is not answered in this part of the manual
3009 (although you may encounter some examples.).
3010
3011 Grob properties are tied directly to the implementation of LilyPond, and
3012 they are thus a moving target. Documentation of such variables is in the
3013 automatically generated documentation.  Description of properties are
3014 generated from the source code for each version. This documentation is
3015 therefore more up to date.  It should be available from the same place
3016 where you got this manual.
3017
3018 To decide how to tune a grob, you need to find the following information
3019 @itemize @bullet
3020 @item
3021 which grob to modify
3022 @item
3023 which property to modify
3024 @item
3025 which context the grob comes from.
3026 @end itemize
3027
3028 Included with the automatically generated documentation is a master list
3029 of grobs. Selecting a grob will take you to an overview of the
3030 properties available for that grob.
3031
3032 There is also a master list of contexts. Selecting one takes you to an
3033 overview of that context which lists which grob types are created there.
3034
3035
3036 @node Font selection
3037 @subsection Font selection
3038
3039 Most graphics in LilyPond are composed of characters of fonts.  You can
3040 alter the characteristics of the font by setting certain grob
3041 properties. The mechanism that is used for this resembles La@TeX{}'s New
3042 Font Selection Scheme. Within this scheme, a font is entirely
3043 characterized by its font name.
3044
3045 For each grob that uses fonts (in other words, each grob that supports
3046 @code{font-interface}) a font-name must be selected before it can be
3047 printed.  The font name is selected by looking at a number of grob
3048 properties:
3049
3050 @table @code
3051 @item font-family
3052  A symbol indicating the general class of the typeface.  Supported are
3053 @code{roman} (Computer Modern), @code{braces} (for piano staff braces),
3054 @code{music} (the standard music font), @code{dynamic} (font for dynamic
3055 signs) and @code{typewriter}
3056
3057 @item font-shape
3058   A symbol indicating the shape of the font, there are typically several
3059   font shapes available for each font family. Choices are @code{italic},
3060   @code{caps} and @code{upright} 
3061
3062 @item font-series
3063 A  symbol indicating the series of the font. There are typically several
3064 font series for each font family and shape. Choices are @code{medium}
3065 and @code{bold}. 
3066
3067 @item font-relative-size
3068   A number indicating the size relative the standard size.  For example,
3069   with 20pt staff height, relative size -1  corresponds to 16pt staff
3070   height, and relative size +1 corresponds to 23 pt staff height.
3071
3072 @item font-design-size
3073 A number indicating  the design size of the font. 
3074
3075 This is a feature of the Computer Modern Font: each point size has a
3076 slightly different design. Smaller design sizes are relatively wider,
3077 which enhances readability. Scalable type faces such TrueType and Adobe
3078 Type1 usually come as ``one design fits all sizes''.
3079
3080 @item font-name
3081   The name of the font, without the design size, e.g. @code{cmr},
3082 @code{cmti}, etc. Setting this overrides font-family, font-shape and
3083 font-series.
3084
3085 @end table
3086
3087 The font is selected by taking the first font that satisfies all
3088 qualifiers specified. You can override any of these fields through
3089 @code{\override} and @code{\revert}. The special value @code{*} matches
3090 any value for that qualifier.
3091
3092 @example
3093   \property Lyrics.LyricText \override #'font-series = #'bold
3094   \property Lyrics.LyricText \override #'font-shape = #'*
3095 @end example
3096
3097 @cindex @code{font-style}
3098
3099 There are also pre-cooked font selection qualifiers. These are selected
3100 through the grob property @code{font-style}.  For example, the style
3101 @code{finger} selects family @code{number} and relative size @code{-3}.
3102 Styles available include @code{volta}, @code{finger}, @code{tuplet},
3103 @code{timesig}, @code{mmrest}, @code{script}, @code{large}, @code{Large}
3104 and @code{dynamic}.
3105
3106 The style sheets and tables for selecting fonts are located in
3107 @file{scm/font.scm}. Refer to this file for more information.
3108
3109 @refbugs
3110
3111 Relative size is not linked to any real size.
3112
3113 There is no mechanism to select magnification of particular fonts,
3114 meaning that you don't have access to continuously scaled fonts.  You
3115 can scale the entire output, of course, see @ref{Output scaling}.
3116
3117 There is no style sheet provided for other fonts besides the @TeX{}
3118 family.
3119
3120 @cindex font selection
3121 @cindex font magnification
3122 @cindex @code{font-interface}
3123
3124
3125 @node Text markup
3126 @subsection Text markup
3127 @cindex text markup
3128 @cindex markup text
3129
3130 LilyPond has an internal mechanism to typeset texts. You can
3131 form text markup expressions by composing scheme expressions
3132 in the following way.
3133
3134 @lilypond[verbatim, singleline]
3135  \relative c' {
3136     \fatText
3137     a^#"upright"
3138     b_#'(bold "bold")
3139     c^#'(italic "italic")
3140     d_#'((bold italic) "ff")
3141     e^#'(dynamic "ff")
3142     f_#'(lines "one" (bold "two"))
3143     g^#'(music "noteheads-2" ((raise . 2.4) "flags-u3"))
3144   }
3145 @end lilypond
3146
3147 Normally, the Scheme markup text is stored in the @code{text} property
3148 of a grob.  Formally, it is defined as follows:
3149
3150 @example
3151 text: string | (head? text+)
3152 head: markup | (markup+)
3153 markup-item: property | abbrev
3154 property: (@var{key} . @var{value})
3155 abbrev: @code{columns lines roman music bold italic named super sub}
3156         @code{overstrike text finger volta timesig mmrest mark script}
3157         @code{large Large dynamic}
3158 @end example
3159
3160 The markup is broken down and converted into a list of grob properties,
3161 which are prepended to the property list.  The @var{key}-@var{value}
3162 pair is a grob property. A list of properties available is included in
3163 the generated documentation for @rint{Text_interface}.
3164
3165 The following abbreviations are currently defined:
3166 @table @code
3167 @item columns
3168  horizontal mode: set all text on one line (default)
3169 @item lines
3170  vertical mode: set every text on a new line
3171 @item roman
3172  select roman font
3173 @item music
3174  selects the Feta font (the standard font for music notation glyphs),
3175 and uses named lookup
3176
3177 @item bold
3178  select bold series
3179 @item italic
3180  select italic shape
3181 @item named
3182  lookup by character name
3183 @item text
3184  plain text lookup (by character value)
3185 @item super
3186  superscript
3187 @item sub
3188  subscript
3189 @item overstrike
3190  the next text or character overstrikes this one
3191 @item finger
3192  select fingering number fontstyle
3193 @item volta
3194  select volta number fontstyle
3195 @item timesig
3196  select time signature number fontstyle
3197 @item mmrest
3198  select multi measure rest number fontstyle
3199 @item mark
3200  select mark number fontstyle
3201 @item script
3202  select scriptsize roman fontstyle
3203 @item large
3204  select large roman fontstyle
3205 @item Large
3206  select Large roman fontstyle
3207 @item dynamic
3208  select dynamics fontstyle
3209 @end table
3210
3211
3212 @cindex metronome mark
3213
3214 One practical application of complicated markup is to fake a metronome
3215 marking:
3216
3217 @lilypond[verbatim]
3218 #(define note '(columns
3219   (music "noteheads-2" ((kern . -0.1) "flags-stem"))))
3220 #(define eight-note `(columns ,note ((kern . -0.1)
3221   (music ((raise . 3.5) "flags-u3")))))
3222 #(define dotted-eight-note
3223   `(columns ,eight-note (music "dots-dot")))
3224
3225 \score {
3226   \notes\relative c'' {
3227     a1^#`((columns (font-relative-size . -1)) ,dotted-eight-note " = 64")
3228   }
3229   \paper {
3230     linewidth = -1.
3231     \translator{
3232       \ScoreContext
3233       TextScript \override #'font-shape = #'upright
3234     }
3235   }
3236 }
3237 @end lilypond
3238
3239 @node Invisible grobs
3240 @subsection Invisible grobs
3241 @cindex invisible grobs
3242
3243 @ignore
3244
3245 ben nog steeds niet kapot van de informatiedichtheid hier.
3246
3247 --hwn
3248
3249 @end ignore
3250
3251 You can imagine a number of situations where you would want to make
3252 certain grobs not show up in the output.  There may be aesthetic
3253 reasons, to make the output resemble an (old) manuscript as close as
3254 possible, or to make lessons or exercises for students.
3255
3256 Grobs can be made invisible in a number of ways:
3257
3258 Here's an example with blanked-out notes and stems:
3259 @lilypond[singleline,verbatim]
3260 blanknotes = {
3261   \property Voice.NoteHead \override
3262     #'transparent = ##t
3263   \property Voice.Stem \override
3264     #'transparent = ##t }
3265   
3266 unblanknotes = {
3267   \property Voice.NoteHead \revert #'transparent
3268   \property Voice.Stem \revert #'transparent }
3269
3270 \score {
3271   \notes\relative c'' {
3272     \time 6/4
3273     a b c b \blanknotes c \unblanknotes d
3274   }
3275 }
3276 @end lilypond
3277 This method makes the grobs invisible but they still take the normal space. 
3278 To remove all traces of the grob, you can redefine the function
3279 typesetting them:
3280 @lilypond[verbatim]
3281 \score {
3282   \notes\relative c'' {
3283     \key c \minor
3284     \time 6/4
3285     as bes c bes c d \break
3286     \property Staff.KeySignature \override #'molecule-callback = #'()
3287     as bes c bes c d 
3288   }
3289   \paper{linewidth=5.0\cm indent=0}
3290 }
3291 @end lilypond
3292
3293 A very rigorous way of removing grobs from the whole score is to remove
3294 the engraver that creates them. For example,
3295
3296 @lilypond[singleline,verbatim]
3297 \score {\notes { c'4 d'8 e'8 g2 }
3298   \paper { \translator {
3299      \VoiceContext
3300      \remove Stem_engraver
3301   } }
3302 }
3303 @end lilypond
3304
3305 @node Dirty tricks
3306 @subsection Dirty tricks
3307 @cindex embedded tex
3308
3309 It is possible to use @TeX{} commands in the strings, but this should be
3310 avoided because it makes it impossible for LilyPond to compute the
3311 exact length of the string, which may lead to collisions.  Also, @TeX{}
3312 commands won't work with direct PostScript output (see @ref{PostScript
3313 output}).
3314
3315 @lilypond[fragment,relative,verbatim]
3316   a'^"3 $\\times$ \\`a deux"
3317 @end lilypond
3318
3319 You can also use raw PostScript commands embedded in text scripts.  This
3320 offers ultimate flexibility, but requires you to learn PostScript.
3321 Currently, embedded PostScript will @strong{not} work with direct
3322 PostScript output.  Note that all dimensions that you use are in staff
3323 space.
3324
3325 @lilypond[verbatim]
3326 \score {
3327   \notes \relative c'' {
3328     a-#"\\embeddedps{3 4 moveto 5 3 rlineto stroke}"
3329     -#"\\embeddedps{ [ 0 1 ] 0 setdash 3 5 moveto 5 -3 rlineto stroke}"
3330     b-#"\\embeddedps{3 4 moveto 0 0 1 2 8 4 20 3.5 rcurveto stroke}"
3331     s2
3332     a'1
3333   }
3334   \paper { linewidth = 70*\staffspace }
3335 }
3336 @end lilypond
3337
3338
3339 @c . {Page layout}
3340 @node Page layout
3341 @section Page layout
3342 @cindex Page layout
3343
3344 The page layout is the combined product of LilyPond formatting notation,
3345 and (La)@TeX{} putting the notation on a page, including page breaks.
3346 The part of LilyPond is documented here.
3347
3348 @menu
3349 * Paper block::                 
3350 * Paper variables::             
3351 * Font Size::                   
3352 * Paper size::                  
3353 * Line break::                  
3354 * Page break::                  
3355 * Output scaling::              
3356 @end menu
3357
3358 @c .  {Paper block}
3359 @node Paper block
3360 @subsection Paper block
3361 @cindex Paper block
3362
3363 The most important output definition is the @code{\paper} block, for
3364 music notation.  The syntax is
3365
3366 @example
3367   @code{\paper @{} [@var{paperidentifier}] @var{items} @code{@}}
3368 @end example
3369
3370 where each of the items is one of
3371
3372 @itemize @bullet
3373   @item  An assignment.
3374
3375   @item  A context definition.  See @ref{Interpretation context} for
3376        more information on context definitions.
3377
3378   @item  \stylesheet  declaration.  Its syntax is
3379        @example
3380                 \stylesheet @var{alist}
3381        @end example
3382
3383         See @file{scm/font.scm} for details of @var{alist}.
3384   @item an @code{\elementdescriptions} declaration.
3385         @example
3386                 \elementdescriptions @var{alist}
3387         @end example
3388         See @file{scm/grob-description.scm} for details of
3389 @var{alist}. This command is not user-serviceable.
3390
3391 @end itemize
3392
3393 @c .  {Paper variables}
3394 @node Paper variables
3395 @subsection Paper variables 
3396 @cindex Paper variables
3397
3398 The paper block has some variables you may want to use or change:
3399
3400 @table @code
3401 @cindex @code{indent}
3402   @item @code{indent}  
3403     The indentation of the first line of music.
3404 @cindex @code{staffspace}
3405
3406   @item @code{staffspace}
3407     The distance between two staff lines, calculated from the center
3408     of the lines.
3409
3410 @cindex @code{linewidth}
3411   @item @code{linewidth}  
3412     Sets the width of the lines.
3413
3414 If set to a negative value, a single unjustified line is produced.
3415 @c rename to singleLinePaper ?
3416 The shorthand @code{\singleLine} defines a default paper block that
3417 produces a single line.
3418
3419 @cindex @code{textheight}
3420
3421   @item @code{textheight}  
3422     Sets the total height of the music on each page. Only used by
3423 @code{ly2dvi}.
3424
3425 @cindex @code{interscoreline}
3426
3427   @item @code{interscoreline}  
3428     Sets the spacing between systems. The default is 16pt.
3429     
3430 @cindex @code{interscorelinefill}
3431
3432   @item @code{interscorelinefill}  
3433     If set to a positive number, the distance between the score 
3434     lines will stretch in order to fill the full page. In that
3435     case @code{interscoreline} specifies the minimum spacing.
3436
3437         Not set by default.
3438
3439
3440 @cindex @code{stafflinethickness}
3441
3442   @item @code{stafflinethickness}  
3443     Determines the thickness of staff lines, and also acts as a scaling
3444     parameter for other line thicknesses.
3445 @end table
3446
3447 You may enter these dimension using units (@code{cm}, @code{in},
3448 @code{mm}, @code{pt}), or relative to another dimension
3449 @example
3450         linewidth = 20.0 * \staffspace
3451         indent  = 0.5 \cm
3452 @end example
3453
3454
3455 @c .  {Font size}
3456 @node Font Size
3457 @subsection Font size
3458 @cindex font size
3459
3460 The Feta font provides musical symbols at six different sizes.  These
3461 fonts are 11 point, 13 point, 16 point, 20 point,
3462 23 point, and 26 point.  The point size of a font is the
3463 height of the five lines in a staff when displayed in the font.
3464
3465 Definitions for these sizes are the files @file{paperSZ.ly}, where
3466 @code{SZ} is one of 11, 13, 16, 20, 23 and 26.  If you include any of
3467 these files, the identifiers @code{paperEleven}, @code{paperThirteen},
3468 @code{paperSixteen}, @code{paperTwenty}, @code{paperTwentythree}, and
3469 @code{paperTwentysix} are defined respectively.  The default
3470 @code{\paper} block is also set.
3471
3472 The font definitions are generated using a Scheme function. For more
3473 details, see the file @file{scm/font.scm}.
3474
3475
3476
3477 @c .  {Paper size}
3478 @node Paper size
3479 @subsection Paper size
3480 @cindex Paper size
3481
3482 @cindex paper size
3483 @cindex page size
3484 @cindex @code{papersize}
3485
3486 To change the paper size, you must first set the
3487 @code{papersize} variable at top level.  Set it to
3488 the strings @code{a4}, @code{letter}, or @code{legal}.  After this
3489 specification, you must set the font as described above.  If you want
3490 the default font, then use the 20 point font.
3491
3492 @example
3493         papersize = "a4"
3494         \include "paper16.ly"
3495 @end example
3496
3497 The file @code{paper16.ly}  will now include a file named @file{a4.ly}, which
3498 will set the paper variables @code{hsize} and @code{vsize} (used by
3499 @code{ly2dvi})
3500
3501 @c .  {Line break}
3502 @node Line break
3503 @subsection Line break
3504
3505 @cindex line breaks
3506 @cindex breaking lines
3507
3508 Line breaks are normally computed automatically. They are chosen such
3509 that the resulting spacing has low variation, and looks neither cramped
3510 nor loose.
3511
3512 Occasionally you might want to override the automatic breaks; you can do
3513 this by specifying @code{\break}. This will force a line break at this
3514 point. Do remember that line breaks can only occur at places where there
3515 are bar lines.  If you want to have a line break where there is no
3516 bar line, you can force an invisible bar line by entering @code{\bar
3517 ""}. Similarly, @code{\noBreak} forbids a line break at a certain point.
3518
3519 @cindex @code{\penalty}
3520
3521 The @code{\break} and @code{\noBreak} commands are defined in terms of
3522 the penalty command:
3523 @example
3524   \penalty @var{int} 
3525 @end example
3526
3527 This encourages or discourages LilyPond to make a line break at this
3528 point.
3529
3530 @refbugs
3531
3532 The scaling of the @code{\penalty} argument is not well-defined.  The
3533 command is rather kludgey, and slated for rewriting.
3534
3535 @c .  {Page break}
3536 @node Page break
3537 @subsection Page break
3538
3539 @cindex page breaks
3540 @cindex breaking pages
3541
3542 Page breaks are normally computed by @TeX{}, so they are not under
3543 direct control of LilyPond.  However, you can insert a commands into the
3544 @file{.tex} output to instruct @TeX{} where to break pages, by inserting
3545 the command @code{\newpage}
3546 @cindex @code{\newpage}
3547
3548 @example
3549   \newpage
3550 @end example
3551
3552 @c why do so difficult?
3553 @c maybe should explain contents of between-system.ly,
3554 @c but not now, we're talking about page breaks here.
3555 @c For more
3556 @c details, see the example file @file{input/test/between-systems.ly}
3557
3558
3559 @c .  {Output scaling}
3560 @node Output scaling
3561 @subsection Output scaling
3562
3563 [TODO]
3564
3565 @example
3566 dvips ...
3567 @end example
3568
3569 @example
3570 pstops ...
3571 @end example
3572
3573
3574 @refbugs
3575
3576 There is no mechanism to select magnification of particular fonts,
3577 meaning that you don't have access to continuously scaled fonts.
3578
3579
3580
3581 @c . {Output formats}
3582 @node Output formats
3583 @section Output formats
3584
3585 LilyPond can output processed music in different output formats.  
3586
3587 @menu
3588 * TeX output::                  
3589 * PostScript output::           
3590 * Scheme output::               
3591 * ASCIIScript output::          
3592 @end menu
3593
3594 @node TeX output
3595 @subsection TeX output
3596 @cindex TeX output
3597
3598 LilyPond will use @TeX{} by default.  Even if you want to produce
3599 PostScript output for viewing or printing, you should normally have
3600 LilyPond produce @TeX{} first.  The .tex output must be processed by
3601 @TeX{} (@strong{not} La@TeX{}) to generate a .dvi.  Then, @file{Dvips}
3602 is used to generate PostScript.  Alternatively, @file{ly2dvi} can be
3603 used to generate the .dvi for you.
3604
3605 @refbugs
3606
3607 Titling is not generated unless you use @file{ly2dvi}. 
3608
3609
3610 @node PostScript output
3611 @subsection PostScript output
3612 @cindex PostScript output
3613 @cindex direct PostScript output
3614
3615 LilyPond can produce PostScript directly, without going through @TeX{}.
3616 Currently, this is mainly useful if you cannot use TeX, because direct
3617 PostScript output has some problems; see Bugs below.
3618
3619 @example
3620 $ lilypond -fps foo.ly
3621 GNU LilyPond 1.3.144
3622 Now processing: `foo.ly'
3623 Parsing...
3624 Interpreting music...[3]
3625 Preprocessing elements... 
3626 Calculating column positions... 
3627 paper output to foo.ps...
3628
3629 $ cat /usr/share/lilypond/pfa/feta20.pfa foo.ps | lpr
3630 @end example
3631
3632
3633 @refbugs
3634
3635 Text font selection is broken.
3636
3637 The .ps file does not contain the .pfa font files.  To print a .ps
3638 created through direct postscript output, you should prepend the
3639 necessary .pfa files to LilyPond's .ps output, or upload them to the
3640 printer before printing.
3641
3642 The line height calculation is broken, you must set @var{lineheight} in
3643 the paperblock if you have more than one staff in your score, e.g.
3644
3645 @example
3646   ...
3647   \paper @{
3648     % Set line height to 40 staff spaces
3649     lineheight = 40    
3650   @}
3651 @end example
3652
3653 @node Scheme output
3654 @subsection Scheme output
3655 @cindex Scheme output
3656
3657 In the typesetting stage, LilyPond builds a page description, which is
3658 then written to disk in postscript, @TeX{} or ASCII art. Before it is
3659 written, the page description is represented as Scheme expressions.  You
3660 can also dump these  Scheme expressions to a file, which may be
3661 convenient for debugging output routines.  This is done with the Scheme
3662 output format
3663
3664 @example
3665 $ lilypond -fscm foo.ly
3666 GNU LilyPond 1.3.144
3667 Now processing: `foo.ly'
3668 Parsing...
3669 Interpreting music...[3]
3670 Preprocessing elements... 
3671 Calculating column positions... 
3672 paper output to foo.scm...
3673
3674 $ head -4 foo.scm 
3675 ;;; Usage: guile -s x.scm > x.tex
3676  (primitive-load-path 'standalone.scm)
3677 ; (scm-tex-output)
3678  (scm-ps-output)
3679
3680 $ guile -s foo.scm > foo.tex
3681 @end example
3682
3683
3684 @node ASCIIScript output
3685 @subsection ASCIIScript output
3686 @cindex ASCIIScript output
3687 @cindex ascii script
3688 @cindex ascii art
3689
3690 LilyPond can output ASCII Art.  This is a two step process, LilyPond
3691 produces an ASCII description file, dubbed ASCIIScript (extension
3692 @file{.as}).  ASCIIScript has a small and simple command set that
3693 includes font selection, character and string printing and line drawing
3694 commands.  The program @file{as2text} is used to translate an .as file
3695 to text.
3696
3697 To produce ASCII Art, you must include an ASCII Art paper definition
3698 file in your .ly, one of:
3699 @example
3700 \include "paper-as5.ly"
3701 \include "paper-as9.ly"
3702 @end example
3703
3704 Here's an example use for ASCII Art output (the example file
3705 @file{as-email.ly} is included in the LilyPond distribution), the staff
3706 symbol has been made invisible:
3707
3708 @example
3709 $ lilypond -fas as-email.ly
3710 GNU LilyPond 1.3.144
3711 Now processing: `as-email.ly'
3712 Parsing...
3713 Interpreting music...[3]
3714 Preprocessing elements... 
3715 Calculating column positions... [2]
3716 paper output to as-email.as...
3717
3718 $ as2text as-email.as 2>/dev/null
3719           |\
3720           |/     |##|##|      |  |  |  |  |
3721          /|      |  |  | |    |\ |\ |\ |\ |\ |
3722         / |_  3  |  |  | | 5  | )| )| )| )| )|
3723        | /| \ 8 *  *  *  | 8 *  *  *  *  *   |
3724         \_|_/            |                   |
3725         *_|
3726
3727                                                lily
3728 @end example
3729
3730
3731 @refbugs
3732
3733 The ASCII Art fonts are far from complete and not very well designed.
3734 It's easy to change the glyphs, though; if you think you can do better,
3735 have a look at @file{mf/*.af}.
3736
3737 Lots of resizable symbols such as slurs, ties and tuplets are missing.
3738
3739 The poor looks of most ASCII Art output and its limited general
3740 usefulness gives ASCII Art output a low priority; it may be
3741 dropped in future versions.
3742
3743 @c . {Sound}
3744 @node Sound
3745 @section Sound
3746 @cindex Sound
3747
3748 LilyPond can produce MIDI output.  The performance lacks lots of
3749 interesting effects, such as swing, articulation, slurring, etc., but it
3750 is good enough for proof-hearing the music you have entered.  Ties,
3751 dynamics and tempo changes are interpreted.
3752
3753 Dynamic marks, crescendi and decrescendi translate into MIDI volume
3754 levels.  Dynamic marks translate to a fixed fraction of the available
3755 MIDI volume range, crescendi and decrescendi make the the volume vary
3756 linearly between their two extremities.  The fractions be adjusted by
3757 overriding the @code{absolute-volume-alist} defined in
3758 @file{scm/midi.scm}.
3759
3760 For each type of musical instrument (that MIDI supports), a volume range
3761 can be defined.  This gives you basic equalizer control, which can
3762 enhance the quality of the MIDI output remarkably.  You can add
3763 instruments and ranges or change the default settings by overriding the
3764 @code{instrument-equalizer-alist} defined in @file{scm/midi.scm}.
3765
3766 Both loudness controls are combined to produce the final  MIDI volume. 
3767
3768
3769 @refbugs
3770
3771 It is currently not possible to use the percussion channel (generally
3772 channel 10 of a MIDI file).
3773
3774 @menu
3775 * MIDI block::                  
3776 * MIDI instrument names::       
3777 @end menu
3778
3779 @c .  {MIDI block}
3780 @node MIDI block
3781 @subsection MIDI block
3782 @cindex MIDI block
3783
3784
3785 The MIDI block is analogous to the paper block, but it is somewhat
3786 simpler.  The @code{\midi} block can contain:
3787 @cindex MIDI block
3788
3789 @itemize @bullet
3790   @item  a @code{\tempo} definition
3791   @item  context definitions
3792 @end itemize
3793
3794 Assignments in the @code{\midi} block are not allowed.
3795
3796
3797
3798 @cindex context definition
3799
3800 Context definitions follow precisely the same syntax as within the
3801 \paper block.  Translation modules for sound are called performers.
3802 The contexts for MIDI output are defined in @file{ly/performer.ly}.
3803
3804
3805 @node MIDI instrument names
3806 @subsection MIDI instrument names
3807
3808 @cindex instrument names
3809 @cindex @code{Staff.midiInstrument}
3810 @cindex @code{Staff.instrument}
3811
3812 The MIDI instrument name is set by the @code{Staff.midiInstrument}
3813 property or, if that property is not set, the @code{Staff.instrument}
3814 property.  The instrument name should be chosen from the list in
3815 @ref{MIDI instruments}.
3816
3817 @refbugs
3818
3819 If the selected string does not exactly match, then LilyPond uses the
3820 default (Grand Piano). It is not possible to select an instrument by
3821 number.
3822
3823
3824
3825
3826
3827
3828
3829
3830 @c FIXME: Note entry vs Music entry at top level menu is confusing.
3831 @c . {Music entry}
3832 @node Music entry
3833 @section Music entry
3834 @cindex Music entry
3835 @menu
3836 * Relative::                    
3837 * Bar check::                   
3838 * Point and click::             
3839 @end menu
3840
3841 When entering music with LilyPond, it is easy to introduce errors. This
3842 section deals with tricks and features that help you enter music, and
3843 find and correct mistakes.
3844
3845 @c .  {Relative}
3846 @node Relative
3847 @subsection Relative
3848 @cindex Relative
3849 @cindex relative octave specification
3850
3851 Octaves are specified by adding @code{'} and @code{,} to pitch names.
3852 When you copy existing music, it is easy to accidentally put a pitch in
3853 the wrong octave and hard to find such an error.  To prevent these
3854 errors, LilyPond features octave entry.
3855
3856 @cindex @code{\relative}
3857 @example
3858   \relative @var{startpitch} @var{musicexpr}
3859 @end example
3860
3861 The octave of notes that appear in @var{musicexpr} are calculated as
3862 follows: If no octave changing marks are used, the basic interval
3863 between this and the last note is always taken to be a fourth or less
3864 (This distance is determined without regarding alterations; a
3865 @code{fisis} following a @code{ceses} will be put above the
3866 @code{ceses})
3867
3868 The octave changing marks @code{'} and @code{,} can be added to raise or
3869 lower the pitch by an extra octave.  Upon entering relative mode, an
3870 absolute starting pitch must be specified that will act as the
3871 predecessor of the first note of @var{musicexpr}.
3872
3873 Entering music that changes octave frequently  is easy in relative mode.
3874 @lilypond[fragment,singleline,verbatim,center]
3875   \relative c'' {
3876     b c d c b c bes a 
3877   }
3878 @end lilypond
3879
3880 And octave changing marks are used for intervals greater than a fourth.
3881 @lilypond[fragment,verbatim,center]
3882   \relative c'' {
3883     c g c f, c' a, e'' }
3884 @end lilypond
3885
3886 If the preceding item is a chord, the first note of the chord is used
3887 to determine the first note of the next chord. However, other notes
3888 within the second chord are determined by looking at the immediately
3889 preceding note.
3890
3891 @lilypond[fragment,verbatim,center]
3892   \relative c' {
3893     c <c e g> 
3894     <c' e g>
3895     <c, e' g>
3896   }
3897 @end lilypond 
3898 @cindex @code{\notes}
3899
3900 The pitch after the @code{\relative} contains a note name.  To parse
3901 the pitch as a note name, you have to be in note mode, so there must
3902 be a surrounding @code{\notes} keyword (which is not
3903 shown here).
3904
3905 The relative conversion will not affect @code{\transpose},
3906 @code{\chords} or @code{\relative} sections in its argument.  If you
3907 want to use relative within transposed music, you must place an
3908 additional @code{\relative} inside the @code{\transpose}.
3909
3910
3911 @c .  {Bar check}
3912 @node Bar check
3913 @subsection Bar check
3914 @cindex Bar check
3915
3916 @cindex bar check
3917 @cindex @code{barCheckNoSynchronize}
3918 @cindex @code{|}
3919
3920
3921 Whenever a bar check is encountered during interpretation, a warning
3922 message is issued if it doesn't fall at a measure boundary.  This can
3923 help you find errors in the input.  Depending on the value of
3924 @code{barCheckNoSynchronize}, the beginning of the measure will be
3925 relocated, so this can also be used to shorten measures.
3926
3927 A bar check is entered using the bar symbol, @code{|}:
3928 @example
3929   \time 3/4 c2 e4 | g2.
3930 @end example
3931
3932 @c .  {Point and click}
3933 @node Point and click
3934 @subsection Point and click
3935
3936 Point and click lets you find notes in the input by clicking on them in
3937 the Xdvi window. This makes it very easy to find input that causes some
3938 error in the sheet music.
3939
3940 To use it, you need the following software
3941
3942 @unnumberedsubsec Installation
3943
3944 @itemize @bullet
3945 @item 
3946 @uref{ftp://ftp.math.berkeley.edu/pub/Software/TeX/xdvi.tar.gz,plain
3947 Xdvi} version 22.36 or newer.
3948
3949   Note that most @TeX{} distributions ship with xdvik, which is a
3950   different and less well maintained program. To find out which xdvi you
3951   are running, try @code{xdvi --version} or @code{xdvi.bin --version}.
3952 @item emacs
3953 @end itemize
3954
3955 Xdvi must be configured to find the TeX fonts and music
3956 fonts. Refer to the Xdvi documentation for more information.
3957
3958
3959 @unnumberedsubsec Using it
3960
3961 Add one of these lines to the top of your .ly file. The first one is for
3962 line location only. The second one is more convenient, but requires
3963 patching @code{emacsclient} and @code{server.el}.
3964
3965 @example
3966 #(set! point-and-click line-location)
3967 @end example
3968
3969 In the emacs startup file (usually @file{~/.emacs}), add the following
3970 @example
3971 (server-start)
3972 @end example
3973
3974 Make sure that  the environment  variable @code{XEDITOR} is set
3975 to
3976 @example
3977 emacsclient --no-wait +%l %f
3978 @end example
3979 The second one, that also specifies the column, only works if you have
3980 patched your emacsclient and server, and have compiled your @code{.ly}
3981 file using the @code{line-column-location} setting.
3982
3983 When viewing, control-mousebutton 1 will take you to the originating
3984 spot in the @file{.ly} file. Control-mousebutton 2 will show all
3985 clickable boxes.
3986
3987
3988 @unnumberedsubsec Column location
3989
3990 If you want emacs to jump to the exact spot (and not just the line) on a
3991 click, you must enable column positioning. To do so, you need to patch
3992 emacsclient. Apply @file{emacsclient.patch} (included with the source
3993 package) to @file{emacsclient.c} and @file{server.el} from the emacs
3994 source code. Recompile and stick the recompiled emacsclient into a bin
3995 directory, and put @file{server.el} into a elisp directory
3996 (e.g. @file{~/usr/share/emacs/}). Add the following to your @file{.emacs}
3997 init file, before invoking server-start.
3998
3999 @example
4000  (setq load-path (cons "~/usr/share/emacs" load-path))
4001 @end example
4002
4003 Set @code{XEDITOR} to @code{emacsclient --no-wait +%l:%c %f}
4004
4005 At the top of the @code{ly} file, replace the @code{set!} line with the
4006 following line
4007 @example
4008 #(set! point-and-click line-column-location)
4009 @end example
4010
4011 One final hint: if you correct large files with point-and-click, then
4012 start correcting at the end of the file. When you start at the top, and
4013 insert one line, all subsequent locations will be off by a line.
4014
4015
4016 @refbugs
4017
4018 When you convert the @TeX{} file to PostScript using @code{dvips}, it
4019 will complain about not finding @code{src:X:Y} files. Those complaints
4020 are harmless, and can be ignored.
4021
4022 @node Skipping corrected music
4023 @section Skipping corrected music
4024
4025 The property @code{Score.skipTypesetting} can be used to switch on and
4026 off typesetting completely during the interpretation phase. When
4027 typesetting is switched off, the music is processed much more quickly.
4028 You can use this to skip over the parts of a score that you have already
4029 checked for errors. 
4030
4031 @lilypond[fragment,singleline,verbatim]
4032 \relative c'' { c8 d
4033 \property Score.skipTypesetting = ##t
4034   e f g a g c, f e d
4035 \property Score.skipTypesetting = ##f
4036 c d b bes a g c2 } 
4037 @end lilypond
4038
4039
4040 @node Interpretation context
4041 @section Interpretation context
4042
4043 @menu
4044 * Creating contexts::           
4045 * Default contexts::            
4046 * Context properties::          
4047 * Engravers and performers::    
4048 * Changing context definitions::  
4049 * Defining new contexts::       
4050 @end menu
4051
4052
4053 Interpretation contexts are objects that only exist during a run of
4054 LilyPond.  During the interpretation phase of LilyPond (when it prints
4055 "interpreting music"), the music expression in a @code{\score} block is
4056 interpreted in time order. This is the same order that humans hear and
4057 play the music.
4058
4059 During this interpretation, the interpretation context holds the
4060 state for the current point within the music. It contains information
4061 like
4062
4063 @itemize @bullet
4064   @item What notes are playing at this point?
4065   @item What symbols will be printed at this point?
4066   @item What is the current key signature, time signature, point within
4067        the measure, etc.?
4068 @end itemize
4069
4070 Contexts are grouped hierarchically: A @code{Voice} context is
4071 contained in a @code{Staff} context (because a staff can contain
4072 multiple voices at any point), a @code{Staff} context is contained in
4073 @code{Score}, @code{StaffGroup}, or @code{ChoirStaff} context.
4074
4075 Contexts associated with sheet music output are called @emph{notation
4076 contexts}, those for sound output are called @emph{performance
4077 contexts}. The default definitions of the standard notation and
4078 performance contexts can be found in @file{ly/engraver.ly} and
4079 @file{ly/performer.ly}, respectively.
4080
4081
4082 @node Creating contexts
4083 @subsection Creating contexts
4084
4085 @cindex @code{\context}
4086 @cindex context selection
4087
4088 Contexts for a music expression can be selected manually, using the
4089 following music expression.
4090
4091 @example
4092   \context @var{contexttype} [= @var{contextname}] @var{musicexpr}
4093 @end example
4094
4095 This instructs lilypond to interpret @var{musicexpr} within the context
4096  of type @var{contexttype} and with name @var{contextname}.  If this
4097 context does not exist, it will be created.  
4098
4099 @lilypond[verbatim,singleline]
4100 \score {
4101   \notes \relative c'' {
4102     c4 <d4 \context Staff = "another" e4> f
4103   }
4104 }
4105
4106 @end lilypond
4107
4108 In this example, the @code{c} and @code{d} are printed on the
4109 default staff.  For the @code{e}, a context Staff called
4110 @code{another} is specified; since that does not exist, a new
4111 context is created.  Within @code{another}, a (default) Voice context
4112 is created for the @code{e4}.  When all music referring to a
4113 context is finished, the context is ended as well.  So after the
4114 third quarter, @code{another} is removed.
4115
4116
4117
4118 @node Default contexts
4119 @subsection Default contexts
4120
4121 Most music expressions don't need an explicit @code{\context}
4122 declaration: they inherit the 
4123 notation context from their parent. Each note is a music expression, and
4124 as you can see in the following example, only the sequential music
4125 enclosing the three notes has an explicit context. 
4126
4127 @lilypond[verbatim,singleline]
4128 \score { \notes \context Voice = goUp { c'4 d' e' } } 
4129 @end lilypond
4130
4131 There are some quirks that you must keep in mind when dealing with
4132 defaults:
4133
4134 First, every top level music is interpreted by the Score context, in other
4135 words, you may think of @code{\score} working like
4136 @example
4137         \score @{
4138                 \context Score @var{music}
4139         @}
4140 @end example
4141
4142 Second, contexts are created automatically to be able to interpret the
4143 music expressions. Consider the following example.
4144
4145 @lilypond[verbatim, singleline]
4146 \score { \context Score \notes { c'4 (  d' )e' } }
4147 @end lilypond
4148
4149 The sequential music is interpreted by the Score context initially
4150 (notice that the @code{\context} specification is redundant), but when a
4151 note is encountered, contexts are setup to accept that note. In this
4152 case, a Thread, Voice and Staff are created. The rest of the sequential
4153 music is also interpreted with the same Thread, Voice and Staff context,
4154 putting the notes on the same staff, in the same voice.
4155
4156 This is a convenient mechanism, but do not expect opening chords to work
4157 without @code{\context}. For every note, a separate staff is
4158 instantiated.
4159
4160 @lilypond[verbatim, singleline]
4161 \score { \notes <c'4 es'> } 
4162 @end lilypond
4163
4164 Of course, if the chord is preceded by a normal note in sequential
4165 music, the chord will be interpreted by the Thread of the preceding
4166 note:
4167 @lilypond[verbatim,singleline]
4168 \score { \notes { c'4 <c'4 es'> }  }
4169 @end lilypond
4170
4171
4172
4173 @node Context properties
4174 @subsection Context properties
4175
4176 Notation contexts have properties. These properties are from
4177 the @file{.ly} file using the following  expression:
4178 @cindex @code{\property}
4179 @example
4180   \property @var{contextname}.@var{propname} =  @var{value}
4181 @end example
4182
4183 Sets the @var{propname} property of the context @var{contextname} to the
4184 specified Scheme expression @var{value}.  All @var{propname} and
4185 @var{contextname} are strings, which are typically unquoted.
4186
4187 Properties that are set in one context are inherited by all of the
4188 contained contexts.  This means that a property valid for the
4189 @code{Voice} context can be set in the @code{Score} context (for
4190 example) and thus take effect in all @code{Voice} contexts.
4191
4192 Properties can be unset using the following expression:
4193 @example
4194   \property @var{contextname}.@var{propname} \unset
4195 @end example
4196
4197 @cindex properties, unsetting
4198 @cindex @code{\unset} 
4199
4200 This removes the definition of @var{propname} in @var{contextname}. If
4201 @var{propname} was not defined in @var{contextname} (but was inherited
4202 from a higher context), then this has no effect.
4203
4204
4205 @refbugs
4206
4207 The syntax of @code{\unset} is asymmetric: @code{\property \unset} is not
4208 the inverse of @code{\property \set}.
4209
4210 @node Engravers and performers
4211 @subsection Engravers and performers
4212
4213 [TODO]
4214
4215 Basic building blocks of translation are called engravers; they are
4216 special C++ classes.
4217
4218
4219
4220 @c .  {Context definitions}
4221 @node Changing context definitions
4222 @subsection Changing context definitions
4223
4224 @cindex context definition
4225 @cindex translator definition
4226
4227 The most common way to define a context is by extending an existing
4228 context.  You can change an existing context from the paper block, by
4229 first initializing a translator with an existing context identifier:
4230 @example
4231 \paper @{
4232   \translator @{
4233     @var{context-identifier}
4234   @} @}
4235 @end example
4236 Then you can add and remove engravers using the following syntax:
4237 @example
4238  \remove @var{engravername}
4239  \consists @var{engravername}
4240 @end example
4241
4242
4243 Here @var{engravername} is a string, the name of an engraver in the
4244 system.
4245
4246
4247 @lilypond[verbatim,singleline]
4248 \score {  \notes {
4249         c'4 c'4 }
4250   \paper {
4251     \translator  { \StaffContext
4252         \remove Clef_engraver
4253        } } }
4254 @end lilypond
4255
4256 @cindex engraver
4257
4258 You can also set properties in a translator definition. The syntax is as
4259 follows:
4260 @example
4261  @var{propname} = @var{value}
4262  @var{propname} \set  @var{grob-propname} = @var{pvalue}
4263  @var{propname} \override @var{grob-propname} =  @var{pvalue}
4264  @var{propname} \revert @var{grob-propname} 
4265 @end example
4266 @var{propname} is a string, @var{grob-propname} a symbol, @var{value}
4267 and @code{pvalue} are Scheme expressions. These type of property
4268 assignments happen before interpretation starts, so a @code{\property}
4269 command will override any predefined settings.
4270
4271
4272  To simplify editing translators, all standard contexts have standard
4273 identifiers called @var{name}@code{Context}, e.g. @code{StaffContext},
4274 @code{VoiceContext}, see @file{ly/engraver.ly}.
4275
4276 @node Defining new contexts
4277 @subsection Defining new contexts
4278
4279 If you want to build a context from scratch, you must also supply the
4280 following extra information:
4281 @itemize @bullet
4282   @item  A name, specified by @code{\name @var{contextname}}.
4283
4284   @item A cooperation module. This is specified by   @code{\type
4285 @var{typename}}.
4286 @end itemize
4287
4288 This is an example:
4289 @example
4290 \translator @code{
4291   \type "Engraver_group_engraver"
4292   \name "SimpleStaff"
4293   \alias "Staff"
4294   \consists "Staff_symbol_engraver"
4295   \consists "Note_head_engraver"
4296   \consistsend "Axis_group_engraver"
4297 }@
4298 @end example
4299
4300 The argument of @code{\type} is the name for a special engraver that
4301 handles cooperation between simple engravers such as
4302 @code{Note_head_engraver} and @code{Staff_symbol_engraver}. Alternatives
4303 for this engraver are the following:
4304 @table @code
4305 @cindex @code{Engraver_group_engraver}
4306   @item @code{Engraver_group_engraver}  
4307     The standard cooperation engraver.
4308
4309 @cindex @code{Score_engraver}
4310
4311   @item @code{Score_engraver}  
4312     This is cooperation module that should be in the top level context,
4313 and only the top level context.
4314
4315 @cindex @code{Grace_engraver_group}
4316
4317   @item @code{Grace_engraver_group}  
4318     This is a special cooperation module (resembling
4319     @code{Score_engraver}) that is used to create an embedded
4320     `miniscore'.
4321 @end table 
4322
4323 Other modifiers   are
4324
4325 @itemize @bullet
4326   @item @code{\alias} @var{alternate-name}
4327     This specifies a different name. In the above example,
4328 @code{\property Staff.X = Y} will also work on @code{SimpleStaff}s
4329
4330   @item  @code{\consistsend} @var{engravername} 
4331     Analogous to @code{\consists}, but makes sure that
4332     @var{engravername} is always added to the end of the list of
4333     engravers.
4334
4335     Some engraver types need to be at the end of the list; this
4336     insures they stay there even if a user adds or removes engravers.
4337 End-users generally don't need this command.
4338     
4339   @item  @code{\accepts} @var{contextname}
4340     Add @var{contextname} to the list of contexts this context can
4341     contain in the context hierarchy. The first listed context is the
4342     context to create by default.
4343
4344   @item @code{\denies}. The opposite of @code{\accepts}. Added for
4345 completeness, but is never used in practice.
4346  
4347   
4348   @item  @code{\name} @var{contextname} 
4349     This sets the type name of the context, e.g. @code{Staff},
4350     @code{Voice}.  If the name is not specified, the translator won't do
4351     anything. 
4352 @end itemize
4353
4354 In the @code{\paper} block, it is also possible to define translator
4355 identifiers.  Like other block identifiers, the identifier can only
4356 be used as the very first item of a translator.  In order to define
4357 such an identifier outside of @code{\score}, you must do
4358
4359 @quotation
4360 @example 
4361 \paper @{
4362   foo = \translator @{ @dots{} @}
4363 @}
4364 \score @{
4365   \notes @{
4366     @dots{}
4367   @}
4368   \paper @{
4369     \translator @{ \foo @dots{} @}
4370   @}
4371 @} 
4372 @end example 
4373
4374 @end quotation
4375
4376
4377 @cindex paper types, engravers, and pre-defined translators
4378
4379       
4380
4381
4382
4383
4384 @c . {Syntactic details}
4385 @node Syntactic details
4386 @section Syntactic details
4387 @cindex Syntactic details
4388
4389 This section describes details that were too boring to be put elsewhere.
4390
4391 @menu
4392 * Top level::                   
4393 * Identifiers::                 
4394 * Music expressions::           
4395 * Manipulating music expressions::  
4396 * Assignments::                 
4397 * Lexical modes::               
4398 * Ambiguities::                 
4399 @end menu
4400
4401 @c .  {Top level}
4402 @node Top level
4403 @subsection Top level
4404 @cindex Top level
4405
4406 This section describes what you may enter at top level.
4407
4408
4409 @c .   {Score}
4410 @subsubsection Score
4411 @cindex Score
4412
4413 @cindex score definition
4414
4415 The output is generated combining a music expression with an output
4416 definition.  A score block has the following syntax:
4417
4418 @example
4419   \score @{ @var{musicexpr} @var{outputdefs} @}
4420 @end example
4421
4422 @var{outputdefs} are zero or more output definitions.  If none is
4423 supplied, the default @code{\paper} block will be added.
4424
4425
4426
4427 @c .   {Default output}
4428 @subsubsection Default output
4429
4430 Default values for the @code{\paper} and @code{\midi} block are set by
4431 entering such a block at the top level.
4432
4433 @c .   {Header}
4434 @subsubsection Header
4435 @cindex Header
4436 @cindex @code{\header}
4437
4438
4439 A header describes bibliographic information of the file's contents.  It
4440 can also appear in a @code{\score} block.  Tools like @code{ly2dvi} can
4441 use this information for generating titles.  Key values that are used by
4442 @code{ly2dvi} are: title, subtitle, composer, opus, poet, instrument,
4443 meter, arranger, piece and tagline.
4444
4445 @cindex @code{ly2dvi}
4446
4447 The syntax is
4448 @example
4449   \header @{ @var{key1} = @var{val1}
4450              @var{key2} = @var{val2} @dots{} @}
4451 @end example
4452
4453 It is customary to put the @code{\header} at the top of the file.
4454
4455 @subsubsection Default output
4456
4457 A @code{\midi} or @code{\paper} block at top level sets the default
4458 paper block for all scores that lack an explicit paper block.
4459
4460 @c .  {Identifiers}
4461 @node Identifiers
4462 @subsection Identifiers
4463 @cindex  Identifiers
4464
4465 @ignore
4466  What has this section got to do with identifiers?
4467  It seems more appropriate in the introduction to Chapter 4,
4468  "Internals".
4469
4470    /MB
4471 @end ignore
4472
4473 All of the information in a LilyPond input file, is internally
4474 represented as a Scheme value. In addition to normal Scheme data types
4475 (such as pair, number, boolean, etc.), LilyPond has a number of
4476 specialized data types,
4477
4478 @itemize @bullet
4479 @item Input
4480 @item c++-function
4481 @item Music
4482 @item Identifier
4483 @item Translator_def
4484 @item Duration
4485 @item Pitch
4486 @item Score
4487 @item Music_output_def
4488 @item Moment (rational number)
4489 @end itemize
4490
4491 LilyPond also includes some transient object types. Objects of these
4492 types are built during a LilyPond run, and do not `exist' per se within
4493 your input file. These objects are created as a result of your input
4494 file, so you can include commands in the input to manipulate them,
4495 during a lilypond run.
4496
4497 @itemize @bullet
4498 @item Grob: short for Graphical object. See @ref{Grobs}. 
4499 @item Molecule: device-independent page output object,
4500 including dimensions.  Produced by some Grob functions
4501 See @ref{Molecules}
4502 @item Translator: object that produces audio objects or Grobs. This is
4503 not yet user accessible.
4504 @item Font_metric: object representing a font. (See @ref{Font metrics})
4505
4506 @end itemize
4507
4508
4509 @node Music expressions
4510 @subsection Music expressions
4511
4512 @cindex music expressions
4513
4514 Music in LilyPond is entered as a music expression.  Notes, rests, lyric
4515 syllables are music expressions, and you can combine music expressions
4516 to form new ones, for example by enclosing a list of expressions in
4517 @code{\sequential @{ @}} or @code{< >}.  In the following example, a
4518 compound expression is formed out of the quarter note @code{c} and a
4519 quarter note @code{d}:
4520
4521 @example 
4522 \sequential @{ c4 d4 @} 
4523 @end example 
4524
4525 @cindex Sequential music
4526 @cindex @code{\sequential}
4527 @cindex sequential music
4528 @cindex @code{<}
4529 @cindex @code{>}
4530 @cindex Simultaneous music
4531 @cindex @code{\simultaneous}
4532
4533 The two basic compound  music expressions are simultaneous  and
4534 sequential music.
4535
4536 @example
4537   \sequential @code{@{} @var{musicexprlist} @code{@}}
4538   \simultaneous @code{@{} @var{musicexprlist} @code{@}}
4539 @end example
4540 For both, there is a shorthand:
4541 @example
4542   @code{@{} @var{musicexprlist} @code{@}}
4543 @end example
4544 for sequential and
4545 @example
4546   @code{<} @var{musicexprlist} @code{>}
4547 @end example
4548 for simultaneous music.
4549 In principle, the way in which you nest sequential and simultaneous to
4550 produce music is not relevant.  In the following example, three chords
4551 are expressed in two different ways:
4552
4553 @lilypond[fragment,verbatim,center]
4554   \notes \context Voice {
4555     <a c'> <b  d' > <c' e'>
4556     < { a b  c' } { c' d' e' } >
4557   }
4558 @end lilypond
4559
4560
4561 Other compound music expressions include
4562 @example
4563  \repeat @var{expr}
4564  \transpose @var{pitch} @var{expr}
4565  \apply @var{func} @var{expr}
4566  \context @var{type} = @var{id} @var{expr}
4567  \times @var{fraction} @var{expr}
4568 @end example
4569
4570
4571 @c . {Manipulating music expressions}
4572 @node Manipulating music expressions
4573 @subsection  Manipulating music expressions
4574
4575 The @code{\apply} mechanism gives you access to the internal
4576 representation of music. You can write Scheme-functions that operate
4577 directly on it. The syntax is 
4578 @example
4579         \apply #@var{func} @var{music}
4580 @end example
4581 This means that @var{func} is applied to @var{music}.  The function
4582 @var{func} should return a music expression.
4583
4584 This example replaces the text string of a script. It also shows a dump
4585 of the music it processes, which is useful if you want to know more
4586 about how music is stored.
4587
4588 @lilypond[verbatim,singleline]
4589 #(define (testfunc x)
4590         (if (equal? (ly-get-mus-property x 'text) "foo")
4591                 (ly-set-mus-property x 'text "bar"))
4592         ;; recurse
4593         (ly-set-mus-property x 'elements
4594           (map testfunc (ly-get-mus-property x 'elements)))
4595         (display x)
4596         x        
4597 )
4598 \score { \notes
4599   \apply #testfunc { c'4_"foo" }
4600
4601 @end lilypond
4602
4603 For more information on what is possible, see the automatically
4604 generated documentation.
4605
4606
4607 Directly accessing internal representations is dangerous: the
4608 implementation is subject to changes, so you should avoid this feature
4609 if possible.
4610
4611 A final example is a function that reverses a piece of music in time:
4612
4613 @lilypond[verbatim,singleline]
4614 #(define (reverse-music music)
4615   (let* ((elements (ly-get-mus-property music 'elements))
4616          (reversed (reverse elements))
4617          (span-dir (ly-get-mus-property music 'span-direction)))
4618     (ly-set-mus-property music 'elements reversed)
4619     (if (dir? span-dir)
4620         (ly-set-mus-property music 'span-direction (- span-dir)))
4621     (map reverse-music reversed)
4622     music))
4623
4624 music = \notes { c'4 d'4( e'4 f'4 }
4625
4626 \score { \context Voice {
4627     \music
4628     \apply #reverse-music \music
4629   }
4630 }
4631 @end lilypond
4632
4633 More examples are given in the distributed example files in
4634 @code{input/test/}.
4635
4636 @c .   {Span requests}
4637 @menu
4638 * Span requests::               
4639 @end menu
4640
4641 @node Span requests
4642 @subsubsection Span requests
4643 @cindex Span requests
4644
4645 Notational constructs that start and end on different notes can be
4646 entered using span requests. The syntax is as follows:
4647
4648
4649 @example
4650   \spanrequest @var{startstop} @var{type}
4651 @end example
4652
4653
4654 @cindex @code{\start}
4655 @cindex @code{\stop}
4656
4657 This defines a spanning request. The @var{startstop} parameter is either
4658 -1 (@code{\start}) or 1 (@code{\stop}) and @var{type} is a string that
4659 describes what should be started.  Much of the syntactic sugar is a
4660 shorthand for @code{\spanrequest}, for example,
4661
4662 @lilypond[fragment,verbatim,center]
4663   c'4-\spanrequest \start "slur"
4664   c'4-\spanrequest \stop "slur"
4665 @end lilypond
4666
4667 Among the supported types are @code{crescendo}, @code{decrescendo},
4668 @code{beam}, @code{slur}. This is an internal command.  Users are
4669 encouraged to use the shorthands which are defined in the initialization
4670 file @file{spanners.ly}.
4671
4672
4673 @c .   {Assignments}
4674 @node Assignments
4675 @subsection Assignments
4676 @cindex Assignments
4677
4678 Identifiers allow objects to be assigned to names during the parse
4679 stage.  To assign an identifier, you use @var{name}@code{=}@var{value}
4680 and to refer to an identifier, you precede its name with a backslash:
4681 `@code{\}@var{name}'.  @var{value} is any valid Scheme value or any of
4682 the input-types listed above.  Identifier assignments can appear at top
4683 level in the LilyPond file, but also in @code{\paper} blocks.
4684
4685 An identifier can be created with any string for its name, but you will
4686 only be able to refer to identifiers whose names begin with a letter,
4687 being entirely alphabetical.  It is impossible to refer to an identifier
4688 whose name is the same as the name of a keyword.
4689
4690 The right hand side of an identifier assignment is parsed completely
4691 before the assignment is done, so it is allowed to redefine an
4692 identifier in terms of its old value, e.g.
4693
4694 @example
4695 foo = \foo * 2.0
4696 @end example
4697
4698 When an identifier is referenced, the information it points to is
4699 copied.  For this reason, an identifier reference must always be the
4700 first item in a block.
4701 @example
4702 \paper  @{
4703   foo = 1.0
4704   \paperIdent % wrong and invalid
4705 @}
4706
4707 \paper @{
4708   \paperIdent % correct
4709   foo = 1.0 @}
4710 @end example
4711
4712
4713 @c .  {Lexical modes}
4714 @node Lexical modes
4715 @subsection Lexical modes
4716 @cindex Lexical modes
4717 @cindex input mode
4718 @cindex mode, input 
4719 @cindex @code{\notes}
4720 @cindex @code{\chords}
4721 @cindex @code{\lyrics}
4722
4723 To simplify entering notes, lyrics, and chords, LilyPond has three
4724 special input modes in addition to the default mode: note, lyrics and
4725 chords mode.  These input modes change the way that normal, unquoted
4726 words are interpreted: for example, the word @code{cis} may be
4727 interpreted as a C-sharp, as a lyric syllable `cis' or as a C-sharp
4728 major triad respectively.
4729
4730 A mode switch is entered as a compound music expression
4731 @example
4732 @code{\notes} @var{musicexpr}
4733 @code{\chords} @var{musicexpr}
4734 @code{\lyrics} @var{musicexpr}.
4735 @end example
4736
4737 In each of these cases, these expressions do not add anything to the
4738 meaning of their arguments.  They just instruct the parser in what mode
4739 to parse their arguments.  The modes are treated in more detail in
4740 @ref{Lyrics} and @ref{Chords}.
4741
4742 Different input modes may be nested.
4743
4744 @c .  {Ambiguities}
4745 @node Ambiguities
4746 @subsection Ambiguities
4747 @cindex ambiguities
4748 @cindex grammar
4749
4750
4751 The grammar contains a number of ambiguities. We hope to resolve them at
4752 some time.
4753
4754 @itemize @bullet
4755   @item  The assignment
4756
4757 @example 
4758 foo = bar 
4759 @end example 
4760          is interpreted as the string identifier assignment. However,
4761 it can also  be interpreted as making a string identifier @code{\foo}
4762        containing @code{"bar"}, or a music identifier @code{\foo}
4763        containing the syllable `bar'.  
4764
4765   @item  If you do a nested repeat like
4766
4767        @quotation
4768
4769 @example 
4770 \repeat @dots{}
4771 \repeat @dots{}
4772 \alternative 
4773 @end example 
4774
4775        @end quotation
4776
4777        then it is ambiguous to which @code{\repeat} the
4778        @code{\alternative} belongs.  This is the classic if-then-else
4779        dilemma.  It may be solved by using braces.
4780
4781   @item The parser is not sophisticated enough to distinguish at the
4782 right time between
4783         @code{c4*2 / 3 } and @code{c4*2 / g} (in chord mode).
4784
4785 [checkme]
4786
4787 @end itemize
4788
4789
4790 @c .  {Lexical details}
4791 @node Lexical details
4792 @section Lexical details
4793
4794 Even more boring details, now on lexical side of the input parser.
4795
4796 @menu
4797 * Comments::                    
4798 * Direct Scheme::               
4799 * Keywords::                    
4800 * Integers::                    
4801 * Reals::                       
4802 * Strings::                     
4803 * Main input::                  
4804 * File inclusion::              
4805 * Version information::         
4806 @end menu
4807
4808
4809 @node Comments
4810 @subsection Comments
4811
4812 @cindex comments
4813 @cindex block comment
4814 @cindex line comment
4815
4816 @cindex @code{%}
4817
4818 A one line comment is introduced by a @code{%} character. 
4819 Block comments are started by @code{%@{} and ended by @code{%@}}. 
4820 They cannot be nested.
4821
4822 @node Direct Scheme
4823 @subsection Direct Scheme
4824
4825 @cindex Scheme
4826 @cindex GUILE
4827 @cindex Scheme, in-line code
4828
4829
4830 LilyPond contains a Scheme interpreter (the GUILE library) for
4831 internal use. In some places, Scheme expressions also form valid syntax:
4832 wherever it is allowed,
4833 @example
4834   #@var{scheme}
4835 @end example
4836 evaluates the specified Scheme code.  Example:
4837 @example
4838   \property Staff.TestObject \override #'foobar =  #(+ 1 2)
4839 @end example
4840 @code{\override} expects two Scheme expressions, so there are two Scheme
4841 expressions. The first one is a symbol (@code{foobar}), the second one
4842 an integer (namely, 3).
4843
4844 In-line scheme may be used at the top level. In this case the result is
4845 discarded.
4846
4847 Scheme is a full-blown programming language, and a full discussion is
4848 outside the scope of this document. Interested readers are referred to
4849 the website @uref{http://www.schemers.org/} for more information on
4850 Scheme.
4851
4852
4853 @node Keywords
4854 @subsection Keywords
4855 @cindex Keywords
4856
4857
4858 Keywords start with a backslash, followed by a number of lower case
4859 alphabetic characters.  These are all the keywords.
4860
4861 @example
4862 apply arpeggio autochange spanrequest commandspanrequest
4863 simultaneous sequential accepts alternative bar breathe
4864 char chordmodifiers chords clef cm consists consistsend
4865 context denies duration dynamicscript elementdescriptions
4866 font grace header in lyrics key mark pitch
4867 time times midi mm name pitchnames notes outputproperty
4868 override set revert partial paper penalty property pt
4869 relative remove repeat addlyrics partcombine score
4870 script stylesheet skip textscript tempo translator
4871 transpose type
4872 @end example
4873
4874 @node Integers
4875 @subsection Integers
4876
4877 @cindex integers
4878 @cindex @code{+}
4879 @cindex @code{-}
4880 @cindex @code{*}
4881 @cindex @code{/}
4882
4883 Formed from an optional minus sign followed by digits.  Arithmetic
4884 operations cannot be done with integers, and integers cannot be mixed
4885 with reals.
4886
4887 @node Reals
4888 @subsection Reals
4889 @cindex real numbers
4890
4891
4892
4893
4894
4895 Formed from an optional minus sign and a sequence of digits followed
4896 by a @emph{required} decimal point and an optional exponent such as
4897 @code{-1.2e3}.  Reals can be built up using the usual operations:
4898 `@code{+}', `@code{-}', `@code{*}', and
4899 `@code{/}', with parentheses for grouping.
4900
4901 @cindex @code{\mm},
4902 @cindex @code{\in}
4903 @cindex @code{\cm}
4904 @cindex @code{\pt}
4905 @cindex dimensions
4906
4907 A real constant can be followed by one of the dimension keywords:
4908 @code{\mm} @code{\pt}, @code{\in}, or @code{\cm}, for millimeters,
4909 points, inches and centimeters, respectively.  This converts the number
4910 a number that is the internal representation of that dimension.
4911
4912
4913 @node Strings
4914 @subsection Strings
4915 @cindex string
4916 @cindex concatenate
4917
4918 Begins and ends with the @code{"} character.  To include a @code{"}
4919 character in a string write @code{\"}.  Various other backslash
4920 sequences have special interpretations as in the C language.  A string
4921 that contains no spaces can be written without the quotes.  Strings can
4922 be concatenated with the @code{+} operator.
4923
4924
4925 @node Main input
4926 @subsection Main input
4927 @cindex Main input
4928
4929 @cindex @code{\maininput}
4930
4931 The @code{\maininput} command is used in init files to signal that the
4932 user file must be read. This command cannot be used in a user file.
4933
4934 @node File inclusion
4935 @subsection File inclusion
4936 @cindex @code{\include}
4937 @example
4938   \include @var{filename}
4939 @end example
4940
4941 Include @var{filename}.  The argument @var{filename} may be a quoted string (an
4942 unquoted string will not work here!) or a string identifier.  The full
4943 filename including the @file{.ly} extension must be given,
4944
4945
4946 @node Version information
4947 @subsection Version information 
4948 @cindex @code{\version}
4949 @example
4950   \version @var{string} 
4951 @end example
4952
4953 Specify the version of LilyPond that a file was written for.  The
4954 argument is a version string in quotes, for example @code{"1.2.0"}. 
4955 This is used to detect invalid input, and to aid
4956 @code{convert-ly}  a tool that automatically upgrades input files. See
4957 See @ref{convert-ly} for more information on @code{convert-ly}.
4958
4959 @cindex convert-ly
4960
4961
4962
4963
4964
4965
4966 @c .{Local emacs vars}
4967 @c Local variables:
4968 @c mode: texinfo
4969 @c minor-mode: font-lock
4970 @c minor-mode: outline
4971 @c outline-layout: (-1 : 0)
4972 @c outline-use-mode-specific-leader: "@c \."
4973 @c outline-primary-bullet: "{"
4974 @c outline-stylish-prefixes: nil
4975 @c outline-override-protect: t
4976 @c End:
4977