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