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