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