]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/user/refman.itely
release: 1.2.15
[lilypond.git] / Documentation / user / refman.itely
1
2
3 @node Reference Manual, ,  , Top
4 @menu
5 * Overview::                      Overview
6 * Top level::                     Top level
7 * notenames::                     notenames
8 * Lexical conventions::           Lexical conventions
9 * Other languages::                      notelang
10 * modes::                         modes
11 * Types::                         Types
12 * Music expressions::             Music expressions
13 * Atomic music expressions::      Atomic music expressions
14 * Note specification::                      notedesc
15 * barlines::                      barlines
16 * Manual beams::                  Manual beam
17 * tremolo::                       tremolo
18 * Compound music expressions::    Compound music expressions
19 * relative::                      relative
20 * Repeats::                       Repeats       
21 * transpose::                     transpose
22 * Ambiguities::                   Ambiguities
23 * Notation conversion specifics:: Notation conversion specifics
24 * autobeam::                      autobeam
25 * lyricprint::                    lyricprint
26 * Notation Contexts::             Notation Contexts
27 * Properties::                    Changing formatting
28 * Notation output definitions::   Notation output definitions
29 * paper::                         paper
30 * Paper variables::                     papervars
31 * contextdefs::                   contextdefs
32 * engravers::                     engravers
33 * Sound output::                  Sound output
34 * midilist::                      midilist
35 * Pre-defined Identifiers::       Pre-defined Identifiers
36 @end menu
37
38 @chapter Reference Manual
39
40
41
42 @node Overview, , , Reference Manual
43 @section Overview
44
45 This document@footnote{This document has been revised for
46 LilyPond 1.2.} describes the the GNU LilyPond input format, which is
47 a language for defining music.  We call this language @emph{Music
48 Definition Language} or @emph{Mudela}, for short.@footnote{If anybody
49 comes up with a better name, we'd gladly take this.  Gourlay already
50 uses a ``Musical Description Language,'' ISO standard 10743 defines a
51 ``Standard Music Description Language.''  We're not being original
52 here.}
53
54 @emph{Mudela} is a language that allows you to
55
56 @itemize @bullet
57   @item  create musical expressions by combining pitches, durations 
58   @item  output those musical expressions to various formats
59   @item  give those musical expressions and output definitions names, so
60        you can enter them in manageable chunks.
61 @end itemize
62
63 @emph{Mudela} aims to define a piece of music completely, both from
64 typesetting and from a performance point of view.
65
66
67
68 @node Top level, , , Reference Manual
69 @section Top level
70
71 @cindex top level
72
73 This section describes what you may enter at top level.
74
75
76
77 @cindex score definition
78
79 The output is generated combining a music expression with an output
80 definition.  A score block has the following syntax:
81
82 @example
83   \score @{ @var{musicexpr} @var{outputdefs} @}
84 @end example
85
86 @var{outputdefs} are zero or more output definitions.  If no output
87 definition is supplied, the default @code{\paper} block will be added.
88
89
90
91 @cindex header
92
93 @keyindex{header}
94
95 The syntax is
96
97 @example
98   \header @{ @var{key1} = @var{val1};
99                         @var{key2} = @var{val2}; @dots{} @}
100 @end example
101
102 A header describes the file's contents.  It can also appear in a
103 @code{\score} block.  Tools like @code{ly2dvi}@indexcode{ly2dvi} can use this
104 information for generating titles.  Key values that are used by
105 @code{ly2dvi} are: title, subtitle, composer, opus, poet, instrument,
106 metre, arranger, piece and tagline.
107
108 It is customary to put the @code{\header} at the top of the file.
109
110
111 @node notenames, , ,  Reference Manual
112
113 Note name tables can be specified using
114
115 @example
116    \notenames@keyindex{notenames}
117   @{ @var{assignmentlist} @}
118 @end example
119
120 @var{assignmentlist} is a list of definitions of the form
121
122 @example
123   @var{name} = @var{pitch}
124 @end example
125
126 Chord modifiers can be set analogously, with
127 @code{\chordmodifiers}@keyindex{chordmodifiers}.
128
129 A @code{\paper} block at top level sets the default paper block.  A
130 @code{\midi} block at top level works similarly.
131
132
133
134 LilyPond contains a Scheme interpreter (the GUILE library) for
135 internal use.  The following commands access the interpreter
136 directly.
137
138 @example
139   \scm @keyindex{scm} @var{scheme} ;
140 @end example
141
142 Evaluates the specified Scheme code.  The result is discarded.
143
144 @example
145 \scmfile@keyindex{scmfile} @var{filename};
146 @end example
147
148 Reads Scheme code from the specified file.  The result is discarded.
149
150
151
152 Identifier assignments may appear at top level.  Semicolons are
153 forbidden after top level assignments.
154
155
156
157 @node Lexical conventions, , ,  Reference Manual
158 @section Lexical conventions
159
160 @cindex lexical conventions
161
162
163
164 @cindex comment
165
166 @indexcode{%}
167
168
169 A one line comment is introduced by a `@code{%}' character. 
170 Block comments are started by `@code{%@{}' and ended by `@code{%@}}'. 
171 They cannot be nested.
172
173
174
175 @cindex keyword
176
177 Keywords start with a backslash, followed by a number of lower case
178 alphabetic characters.  These are all the keywords.
179
180 @example
181   \accepts
182   \addlyrics
183   \alternative
184   \bar
185   \breathe
186   \cadenza
187   \chordmodifiers
188   \chords
189   \clef
190   \cm
191   \consists
192   \consistsend
193   \context
194   \duration
195   \font
196   \grace
197   \header
198   \in
199   \key
200   \keysignature
201   \lyrics
202   \mark
203   \midi
204   \mm
205   \musicalpitch
206   \name
207   \notenames
208   \notes
209   \paper
210   \partial
211   \penalty
212   \property
213   \pt
214   \relative
215   \remove
216   \repeat
217   \repetitions
218   \scm
219   \scmfile
220   \score
221   \script
222   \sequential
223   \shape
224   \simultaneous
225   \skip
226   \spanrequest
227   \tempo
228   \textscript
229   \time
230   \times
231   \translator
232   \transpose
233   \type
234 @end example
235
236
237
238
239 @cindex integer
240
241 Formed from an optional minus sign followed by digits.  Arithmetic
242 operations cannot be done with integers, and integers cannot be mixed
243 with reals.
244
245
246
247 @cindex real
248  
249
250 Formed from an optional minus sign and a sequence of digits followed
251 by a @emph{required} decimal point and an optional exponent such as
252 @code{-1.2e3}.  Reals can be built up using the usual operations:
253 `@code{+}@indexcode{+}', `@code{-}@indexcode{-}', `@code{*}@indexcode{*}', and
254 `@code{/}@indexcode{/}', with parentheses for grouping.
255
256 A real constant can be followed by one of the dimension
257 keywords:
258 @cindex dimensions
259  @code{\mm}@keyindex{mm},
260 @code{\pt}@keyindex{pt}, @code{\in}@keyindex{in}, or
261 @code{\cm}@keyindex{cm}, for millimeters, points, inches and
262 centimeters, respectively.  This converts the number to a real that
263 is the internal representation of dimensions.
264
265
266
267 @cindex string
268  
269
270 Begins and ends with the `@code{"}' character.  To include a `@code{"}'
271 character in a string write `@code{\"}'.  Various other backslash
272 sequences have special interpretations as in the C language.  A
273 string that contains no spaces can be written without the quotes. 
274 See section XREF-modes [FIXME] for details on unquoted strings; their
275 interpretation varies depending on the situation.  Strings can be
276 concatenated with the `@code{+}' operator.
277
278
279 The tokenizer accepts the following commands.  They can appear
280 anywhere.
281
282 @example
283   \maininput@keyindex{maininput}
284 @end example
285
286 This command is used in init files to signal that the user file must
287 be read. This command cannot be used in a user file.
288
289 @example
290   \include@keyindex{include} @var{file}
291 @end example
292
293 Include @var{file}.  The argument @var{file} may be a quoted string (an
294 unquoted string will not work here!) or a string identifier.  The full
295 filename including the @file{.ly} extension must be given,
296
297 @example
298   \version@keyindex{version} @var{string} ;
299 @end example
300
301 Specify the version of LilyPond that a file was written for.  The
302 argument is a version string in quotes, for example @code{"1.2.0"}. 
303 This is used to detect invalid input, and to aid
304 @code{convert-mudela}, a tool that automatically upgrades input files.
305
306
307
308 @cindex other languages
309
310 @node Other languages, , ,  Reference Manual
311
312 Note name definitions have been provided in various languages. 
313 Simply include the language specific init file.  For example:
314 `@code{\include "english.ly"}'.  The available language files and the
315 names they define are:
316
317 @quotation
318
319 @example 
320                         Note Names               sharp       flat
321 nederlands.ly  c   d   e   f   g   a   bes b   -is         -es
322 english.ly     c   d   e   f   g   a   bf  b   -s/-sharp   -f/-flat
323 deutsch.ly     c   d   e   f   g   a   b   h   -is         -es
324 norsk.ly       c   d   e   f   g   a   b   h   -iss/-is    -ess/-es
325 svenska.ly     c   d   e   f   g   a   b   h   -iss        -ess
326 italiano.ly    do  re  mi  fa  sol la  sid si  -d          -b
327 catalan.ly     do  re  mi  fa  sol la  sid si  -d/-s       -b 
328 @end example 
329
330 @end quotation
331
332 Pitch names can be redefined using the
333 @code{\notenames}@keyindex{notenames} command, see
334 subsection XREF-notenames [FIXME].
335
336
337
338 @cindex lexical modes
339
340 @cindex modes
341
342 @node modes, , ,  Reference Manual
343
344 To simplify entering notes, lyrics, and chords, @emph{Mudela} has three
345 special input modes on top of the default mode.  In each mode, words
346 are identified on the input.  If @code{"word"} is encountered, it is
347 treated as a string.  If @code{\word} is encountered, it is treated as
348 a keyword or as an identifier.  The behavior of the modes differs in
349 two ways: Different modes treat unquoted words differently, and
350 different modes have different rules for deciding what is a word.
351
352 @table @samp
353   @item Normal mode.
354 @cindex mode!normal
355  
356     At the start of parsing, @emph{Mudela} is in Normal mode.  In Normal
357     mode, a word is an alphabetic character followed by alphanumeric
358     characters.  If @code{word} is encountered on the input it is
359     treated as a string.
360
361   @item Note mode.
362 @cindex mode!note
363
364     Note mode is introduced by the keyword
365     @code{\notes}@keyindex{notes}.  In Note mode, words can only
366     contain alphabetic characters.  If @code{word} is encountered,
367     LilyPond first checks for a notename of @code{word}.  If no
368     notename is found, then @code{word} is treated as a string.
369
370     Since combinations of numbers and dots are used for indicating
371     durations, it is not possible to enter real numbers in this mode.
372
373   @item Chord mode.
374 @cindex mode!chord
375
376     Chord mode is introduced by the keyword
377     @code{\chords}@keyindex{chords}.  It is similar to Note mode, but
378     words are also looked up in a chord modifier table (containing
379     @code{maj}, @code{dim}, etc).
380
381     Since combinations of numbers and dots are used for indicating
382     durations, you can not enter real numbers in this mode.  Dashes
383     and carets are used to indicate chord additions and subtractions,
384     so scripts can not be entered in Chord mode.
385
386   @item Lyrics mode. 
387 @cindex mode!lyric
388
389     Lyrics mode is introduced by the keyword
390     @code{\lyrics}@keyindex{lyrics}.  This mode has rules that make it
391     easy to include punctuation and diacritical marks in words.  A
392     word in Lyrics mode begins with: an alphabetic character,
393     `@code{_}', `@code{?}', `@code{!}', `@code{:}', `@code{'}', the
394     control characters @code{^A} through @code{^F}, @code{^Q} through
395     @code{^W}, @code{^Y}, @code{^^}, any 8-bit character with ASCII code
396     over 127, or a two-character combination of a backslash followed
397     by one of `@code{`}', `@code{'}', `@code{"}', or
398     `@code{^}'.@footnote{The purpose of Lyrics mode is that you can
399     enter lyrics in TeX format or a standard encoding without
400     needing quotes.  The precise definition of this mode indeed is
401     ludicrous.  This will remain so until the authors of LilyPond
402     acquire a deeper understanding of character encoding, or someone
403     else steps up to fix this.}
404
405     Subsequent characters of a word can be any character that is not
406     a digit and not white space.  One important consequence of this
407     is that a word can end with `@code{@}}', which may be confusing if
408     you thought the closing brace was going to terminate Lyrics
409     mode.@footnote{LilyPond will issue a warning, though.}  Any
410     `@code{_}' characters which appear in an unquoted word are
411     converted to spaces.  This provides a mechanism for introducing
412     spaces into words without using quotes.  Quoted words can also be
413     used in Lyrics mode to specify words that cannot be written with
414     the above rules.  Here are some examples.  Not all of these words
415     are printable by TeX.
416
417
418     @quotation
419
420 @example 
421 Ah!             % a word
422 2B_||_!2B       % not a word because it starts with a digit
423 ``Hello''       % not a word because it starts with `
424 _ _ _ _         % 4 words, each one a space 
425 @end example 
426
427     @end quotation
428
429     Since combinations of numbers and dots are used for indicating
430     durations, you can not enter real numbers in this mode.
431 @end table
432
433 It is possible to create words that break the rules by prefixing them
434 with the dollar sign `@code{$}@indexcode{$}'.  Regardless of the context, a
435 word beginning with `@code{$}' extends until the next white space
436 character.  Such words can contain numbers (even in Note mode), or
437 other forbidden characters.  The dollar sign can be used to create
438 and access identifiers that could not otherwise be used.@footnote{Use
439 of `@code{$}' hampers readability and portability to future LilyPond
440 versions, thus the use of the dollar sign is discouraged.}
441
442
443
444 @node Types, , ,  Reference Manual
445 @section Types
446
447 @cindex types and identifiers
448
449 @emph{Mudela} has a limited set of types:
450
451 @itemize @bullet
452   @item  integers
453   @item  reals
454   @item  strings
455   @item  music expressions
456   @item  durations of notes and rests (specified with
457        @code{\notenames}@keyindex{notenames})
458   @item  note name tables
459   @item  context definitions, part of output definitions.  See
460        section XREF-contextdefs [FIXME] for more information
461   @item  output definitions (like @code{\paper}@keyindex{paper} blocks
462        and @code{\midi}@keyindex{midi} blocks)
463   @item  score definitions (@code{\score}@keyindex{score} blocks)
464 @end itemize
465
466 Type is a syntactical property: @emph{Mudela} has no real type system,
467 so there is no support for generic expressions, functions, or user
468 defined types.  For the same reason, it is not possible to mix reals
469 and integers in arithmetic expressions, and ``type
470 errors''
471 @cindex type error
472  (e.g., using a string identifier to
473 initialize a @code{\paper}@keyindex{paper} block) will yield a ``parse
474 error''.
475
476 Identifiers allow objects to be assigned to names.  To assign an
477 identifier, you use `@var{name}=@var{value}' and to refer to an
478 identifier, you preceed its name with a backslash:
479 `@code{\}@var{name}'.  Identifier assignments must appear at top level
480 in the @emph{Mudela} file.  Semicolons are forbidden after assignments
481 appearing at top level but they are obligatory after assignments
482 appearing in the @code{\paper} block, see Section XREF-paper [FIXME].
483
484 @var{value} is any of the types listed above.
485
486 An identifier can be created with any string for its name, but you
487 will only be able to refer to identifiers whose names begin with a
488 letter, being entirely alphanumeric.  It is impossible to refer to an
489 identifier whose name is the same as the name of a keyword.
490
491 The right hand side of an identifier assignment is parsed completely
492 before the assignment is done, so it is allowed to redefine an
493 identifier in terms of its old value, e.g.
494
495 @example
496   foo = \foo * 2.0
497 @end example
498
499 When an identifier is referenced, the information it points to is
500 copied.  Therefore it only makes sense to put identifiers for
501 translators, output definitions, and @code{\score}@keyindex{score}
502 blocks as the first item in a block.  For this reason, if you
503 reference a @code{\foo} variable in a @code{\foo} block, it must be the
504 first item in the list following @code{\foo}.@footnote{@code{\paper@{\one
505 \two@}} does not make sense, because the information of @code{\two}
506 would overwrite the information of @code{\one}, thereby making the
507 reference to the first identifier useless.}
508
509
510
511 @node Music expressions, , ,  Reference Manual
512 @section Music expressions
513
514 @cindex music expressions
515
516 Music in @emph{Mudela} is entered as a music expression.  Notes, rests,
517 lyric syllables are music expressions (the atomic
518 expressions)
519 @cindex atomic music expressions
520 , and you can combine
521 music expressions to form new ones.  This example forms a compound
522 expressions out of the quarter @code{c} note and a @code{d}
523 note:
524
525 @example 
526 \sequential @{ c4 d4 @} 
527 @end example 
528
529 The meaning of this compound expression is to play the `@code{c}'
530 first, and then the `@code{d}' (as opposed to playing them
531 simultaneously, for instance).
532
533 Atomic music expression are discussed in
534 subsection XREF-atomicmusic [FIXME].  Compound music expressions are
535 discussed in subsection XREF-compoundmusic [FIXME].
536
537
538
539 @node Atomic music expressions, , ,  Reference Manual
540 @section Atomic music expressions
541
542
543
544
545 @cindex pitch
546
547 @cindex duration
548  
549
550 The syntax for pitch specification is
551
552
553 @example
554   \musicalpitch@keyindex{musicalpitch} @{ @var{octave} @var{note} @var{shift} @}
555 @end example
556
557 @var{octave} is specified by an integer, zero for the octave
558 containing middle C.  @var{note} is a number from 0 to 7, with 0
559 corresponding to C and 7 corresponding to B.  The shift is zero for a
560 natural, negative to add flats, or positive to add sharps.
561
562 In Note and Chord mode, pitches may be designated by names.  See
563 section XREF-notelang [FIXME] for pitch names in different languages.
564
565 The syntax for duration specification is
566
567 @example
568  \duration@keyindex{duration}
569    @{ @var{length} @var{dotcount} @}
570 @end example
571
572 @var{length} is the negative logarithm (base 2) of the duration:
573 1 is a half note, 2 is a quarter note, 3 is an eighth
574 note, etc.  The number of dots after the note is given by
575 @var{dotcount}.
576
577 In Note, Chord, and Lyrics mode, durations may be designated by
578 numbers and dots.  See Section XREF-notelang [FIXME] for details.
579
580
581 @node Note specification, , ,  Reference Manual
582
583 @cindex note specification
584
585 @cindex pitches
586
587 @cindex entering notes
588
589 A note specification has the form
590
591 @example
592   @var{pitch}[@var{octavespec}][!][?][@var{duration}]
593 @end example
594
595 The pitch of the note is specified by the note's name.
596
597
598 The default names are the Dutch note names.  The notes are specified
599 by the letters `@code{c}' through `@code{b}', where `@code{c}' is an
600 octave below middle C and the letters span the octave above that C. 
601 In Dutchcindex(notenames!Dutch), a sharp is formed by adding
602 `@code{-is}' to the end of a pitch name.  A flat is formed by adding
603 `@code{-es}'. Double sharps and double flats are obtained by adding
604 `@code{-isis}' or `@code{-eses}'.  `@code{aes}' and `@code{ees}' are
605 contracted to `@code{as}' and `@code{es}' in Dutch, but both forms will
606 be accepted.
607
608 LilyPond has predefined sets of notenames for various languages.  See
609 section XREF-notelang [FIXME] for details.
610
611
612 The optional octave specification takes the form of a series of
613 single quote (`@code{'}@indexcode{'}') characters or a series of comma
614 (`@code{,}@indexcode{,}') characters.  Each @code{'} raises the pitch by one
615 octave; each @code{,} lowers the pitch by an octave.
616
617 @mudela[fragment,verbatim,center]
618   c' d' e' f' g' a' b' c''
619 @end mudela
620
621 @mudela[fragment,verbatim,center]
622   cis' dis' eis' fis' gis' ais' bis'
623 @end mudela
624
625 @mudela[fragment,verbatim,center]
626   ces' des' es' fes' ges' as' bes'
627 @end mudela
628
629 @mudela[fragment,verbatim,center]
630   cisis' eisis' gisis' aisis' beses'
631 @end mudela
632
633 @mudela[fragment,verbatim,center]
634   ceses' eses' geses' ases' beses'
635 @end mudela
636
637 Whenever a C-sharp is desired,  you must specify a C-sharp.  LilyPond
638 will determine what accidentals to typeset depending on the key and
639 context.  A reminder accidental 
640 @cindex reminder accidental
641  can be
642 forced by adding an exclamation mark `@code{!}' after the pitch.  A
643 cautionary accidental, 
644 @cindex cautionary accidental
645  i.e., an
646 accidental within parentheses can be obtained by adding the question
647 mark `@code{?}@indexcode{?}' after the pitch.
648
649 @mudela[fragment,verbatim,center]
650   cis' d' e' cis'  c'? d' e' c'!
651 @end mudela
652
653
654 @cindex duration
655
656 Durations are entered as their reciprocal values.  For notes longer
657 than a whole note, use identifiers.
658
659 @quotation
660
661 @example 
662 c'\longa c'\breve  
663 c'1 c'2 c'4 c'8 c'16 c'32 c'64 c'64 
664 @end example 
665
666 @end quotation
667
668 @quotation
669
670 @mudela[]
671 \score {
672   \notes \relative c'' {
673     a\longa a\breve  
674     a1 a2 a4 a8 a16 a32 a64 a64 
675   }
676   \paper {
677     loose_column_distance = 2.5 * \interline;
678     linewidth = -1.0;
679     \translator {
680       \type "Score_engraver";
681       \name "Score";
682       \consists "Note_heads_engraver";
683       \consists "Stem_engraver";
684       \consists "Rhythmic_column_engraver";
685     }
686   }
687 }
688 @end mudela
689 @end quotation
690
691 @quotation
692
693 @example 
694 r\longa r\breve  
695 r1 r2 r4 r8 r16 r32 r64 r64 
696 @end example 
697
698 @end quotation
699
700 @quotation
701
702 @mudela[]
703 \score {
704   \notes \relative c'' {
705     r\longa r\breve  
706     r1 r2 r4 r8 r16 r32 r64 r64 
707   }
708   \paper {
709     loose_column_distance = 2.5 * \interline;
710     linewidth = -1.0;
711     \translator {
712       \type "Score_engraver";
713       \name "Score";
714       \consists "Rest_engraver";
715       \consists "Stem_engraver";
716       \consists "Rhythmic_column_engraver";
717     }
718   }
719 }
720 @end mudela
721 @end quotation
722
723 If the duration is omitted then it is set equal to the previous
724 duration.  If there is no previous duration, a quarter note is
725 assumed.  The duration can be followed by a dot (`@code{.}@indexcode{.}')
726 to obtain dotted note lengths.
727
728 @mudela[fragment,verbatim,center]
729   a'4. b'4.
730 @end mudela
731
732 You can alter the length of duration by writing
733 `@code{*}@var{fraction}' after it.  This will not affect the
734 appearance of note heads or rests.
735
736
737 Rests are entered like notes, with note name `@code{r}@indexcode{r}',
738 or `@code{R}@indexcode{R}'.  There is also a note name `@code{s}@indexcode{s}',
739 which produces a space of the specified duration. 
740 `@code{R}' is specifically meant for entering parts: the @code{R} rest
741 can expand to fill a score with rests, or it can be printed as a
742 single multimeasure rest.
743
744
745 @cindex lyrics expressions
746
747 Syllables are entered like notes, with pitches replaced by text.  For
748 example, `@code{Twin-4 kle4 twin-4 kle4}' enters four syllables, each
749 with quarter note duration.  Note that the hyphen has no special
750 meaning for lyrics, and does not introduce special symbols.  See
751 section XREF-modes [FIXME] for a description of what is interpreted as
752 lyrics.
753
754 Spaces can be introduced into a lyric either by using quotes
755 (`@code{"}') or by using an underscore without quotes: `@code{He_could4
756 not4}'.  All unquoted underscores are converted to spaces.  Printing
757 lyrics is discussed in section XREF-lyricprint [FIXME].
758
759
760
761 @cindex properties
762
763 @example
764   \property@keyindex{property}
765     @var{contextname}.@var{propname} =  @var{value}
766 @end example
767
768 Sets the @var{propname} property of the context @var{contextname} to
769 the specified @var{value}.  All three arguments are strings. 
770 Depending on the context, it may be necessary to quote the strings or
771 to leave space on both sides of the dot.
772
773
774
775 @cindex translator switches
776
777 @example
778   \translator@keyindex{translator}
779     @var{contexttype} = @var{name}
780 @end example
781
782 A music expression indicating that the context which is a direct
783 child of the a context of type @var{contexttype} should be shifted to
784 a context of type @var{contexttype} and the specified name.
785
786 Usually this is used to switch staffs in Piano music, e.g.
787
788 @example
789   \translator Staff = top @var{Music}
790 @end example
791
792
793
794 @cindex commands
795
796 Commands are music expressions that have no duration.   
797
798
799 @example
800
801   @code{\key}@keyindex{key} @var{pitch} @var{type} @code{;}
802 @end example
803
804 Change the key signature.  @var{type} should be
805 @code{\major}@keyindex{major} or @code{\minor}@keyindex{minor} to get
806 @var{pitch}-major or @var{pitch}-minor, respectively.  The second
807 argument is optional; the default is major keys.  The @var{\context}
808 argument can also be given as an integer, which tells the number of
809 semitones that should be added to the pitch given in the subsequent
810 @code{\key}@keyindex{key} commands to get the corresponding major key,
811 e.g., @code{\minor}@keyindex{minor} is defined as 3.  The standard
812 mode names @code{\ionian}@keyindex{ionian},
813 @code{\locrian}@keyindex{locrian}, @code{\aeolian}@keyindex{aeolian},
814 @code{\mixolydian}@keyindex{mixolydian}, @code{\lydian}@keyindex{lydian},
815 @code{\phrygian}@keyindex{phrygian}, and @code{\dorian}@keyindex{dorian}
816 are also defined.
817
818 @example
819
820   @code{\keysignature}@keyindex{keysignature} @var{pitchseq} @code{;}
821 @end example
822
823 Specify an arbitrary key signature.  The pitches from @var{pitch} will
824 be printed in the key signature in the order that they appear on the
825 list.
826
827         
828 @example
829   \mark@keyindex{mark} @var{unsigned};
830   \mark @var{string};
831 @end example
832
833 Prints a mark over or under (depending on the
834 @code{markDirection}@indexcode{markDirection} property) the staff.  You must add
835 @code{Mark_engraver}@indexcode{Mark_engraver} to either the Score or Staff context for
836 this to work.
837
838 @node barlines, , ,  Reference Manual
839
840 @example
841   \bar@keyindex{bar} @var{bartype};
842 @end example
843
844 This is a request to print a special bar symbol. It replaces the 
845 regular bar symbol with a special
846 symbol.  The argument @var{bartype} is a string which specifies the
847 kind of bar to print.  Options are @code{":|"}
848 @cindex "|A@@@code{:|}
849 ,
850 @code{"|:"}
851 @cindex "|B@@@code{|:}
852 , @code{":|:"}
853 @cindex "|C@@@code{:|:}
854 ,
855 @code{"||"}
856 @cindex "|D@@@code{||}
857 , @code{"|."}
858 @cindex "|E@@@code{|.}
859 ,
860 @code{".|"}
861 @cindex "|F@@@code{.|}
862 , and @code{".|."}
863 @cindex "|G@@@code{.|.}
864
865 These produce, respectively, a right repeat, a left repeat, a double
866 repeat, a double bar, a start bar, an end bar, and a thick double
867 bar.  If @var{bartype} is set to @code{"empty"} then nothing is
868 printed, but a line break is allowed at that spot.
869
870 You are encouraged to use @code{\repeat} for repetitions.
871 See section XREF-sec-repeats [FIXME].
872
873  
874
875 @example
876   \cadenza@keyindex{cadenza} @var{togglevalue} @code{;}
877 @end example
878
879 Music expression that toggles the automatic generation of bar lines. 
880 If @var{togglevalue} is 1, bar line generation is turned off.  If
881 @var{togglevalue} is 0, a bar line is immediately printed and 
882 automatic bar generation is turned on.
883
884 @example
885
886   \time@keyindex{time} @var{numerator}@code{/}@var{denominator} @code{;}
887 @end example
888
889 Change the time signature.  The default time signature is 4/4. 
890 The time signature is used to generate bar lines.
891
892 @example
893
894   \tempo@keyindex{tempo} @var{duration} = @var{perminute} @code{;}
895 @end example
896
897 Used to specify the tempo.  For example, `@code{\tempo 4 = 76;}'
898 requests output with 76 quarter notes per minute.
899
900 @example
901
902   \partial@keyindex{partial} @var{duration} @code{;}
903 @end example
904
905 @cindex anacrusis
906
907 @cindex upstep
908
909 This creates an incomplete measure (anacrusis, upbeat) at the start of 
910 the music, e.g., `@code{\partial 8*2;}' creates a starting measure 
911 lasting two eighth notes.
912
913 @example
914
915   @code{|}@indexcode{|}
916 @cindex bar check
917
918 @end example
919
920 @cindex shorten measures
921
922 @cindex upstep
923
924 `@code{|}' is a barcheck.  Whenever a barcheck is encountered during
925 interpretation, a warning message is issued if it doesn't fall at a
926 measure boundary.  This can help you finding errors in the input. 
927 The beginning of the measure will be relocated, so this can also
928 be used to shorten measures.
929
930
931 @example
932
933   \penalty@keyindex{penalty} @var{int} @code{;}
934 @end example
935
936 Discourage or encourage line breaks.  See identifiers
937 @code{\break}@keyindex{break} and @code{\nobreak}@keyindex{nobreak} in
938 section [on identifiers] [FIXME].
939
940 @example
941
942   \clef@keyindex{clef} @var{clefname} @code{;}
943 @end example
944
945 Music expression that sets the current clef.  The argument is a
946 string which specifies the name of the clef.  Several clef names are
947 supported.  If `@code{_8}' or `@code{^8}' is added to the end of a clef
948 name, then the clef lowered or raised an octave will be generated. 
949 Here are the supported clef names with middle C shown in each
950 clef:
951
952 @quotation
953
954 @mudela[]
955 \score {
956   \notes {
957     \cadenza 1;
958     %\property Voice.textStyle = typewriter
959     \clef subbass;     c'4-"\kern -5mm subbass" 
960     \clef bass;        c'4^"\kern -2mm bass"
961     \clef baritone;    c'4_"\kern -5mm baritone"
962     \clef varbaritone; c'4^"\kern -6mm varbaritone"
963     \clef tenor;       c'4_"\kern -3mm tenor"
964     \clef "G_8";       c'4^"\kern -2mm G\\_8" 
965   }  
966   \paper {
967     linewidth = -1.0;
968   }
969 }
970 @end mudela
971 @end quotation
972
973 @quotation
974
975 @mudela[]
976 \score {
977   \notes {
978     \cadenza 1;
979     \clef alto;         c'4_"\kern -2mm alto"
980     \clef mezzosoprano; c'4^"\kern -9mm mezzosoprano"
981     \clef soprano;      c'4_"\kern -6mm soprano"
982     \clef treble;       c'4^"\kern -4mm treble"
983     \clef french;       c'4_"\kern -4mm french"
984   }
985   \paper {
986     linewidth = 4.5 \in;
987   }
988 }
989 @end mudela
990 @end quotation
991
992 The three clef symbols can also be obtained using the names `@code{G}', 
993 `@code{C}' or `@code{F}', optionally followed by an integer which 
994 indicates at which note line the clef is located. An as example, the 
995 @code{mezzosoprano} clef can also be given as `@code{C2}'.
996
997 @example
998
999   \skip@keyindex{skip} @var{duration} @code{;}
1000 @end example
1001
1002 Skips the amount of time specified by @var{duration}.  If no other
1003 music is played, a gap will be left for the skipped time with no
1004 notes printed.  It works in Note Mode or Lyrics Mode.  In Note mode,
1005 this has the same effect as the space rest `@code{s}'.
1006
1007
1008 @cindex beams
1009
1010 @node Manual beams, , ,  Reference Manual
1011
1012 A beam is specified by surrounding the beamed notes with brackets
1013 `@code{[}@indexcode{[}' and `@code{]}@indexcode{]}'.  
1014
1015 @mudela[fragment,verbatim,center]
1016   [a'8 a'] [a'16 a' a' a']
1017 @end mudela
1018
1019 Some more elaborate constructions:
1020
1021 @mudela[fragment,verbatim,center]
1022   [a'16 <a' c''> c'' <a' c''>]
1023   \times 2/3 { [e'8 f' g'] }
1024 @end mudela
1025
1026 Beaming can be generated automatically; see section XREF-autobeam [FIXME].
1027
1028 To place tremolo marks 
1029 @cindex tremolo beams
1030  between two notes, begin
1031 with `@code{[:}@var{length}' and end with `@code{]}'.  Tremolo marks
1032 will appear instead of beams.  Putting more than two notes in such a
1033 construction will produce odd effects.  To create tremolo beams on a
1034 single note, simply attach `@code{:}@var{length}' to the note itself
1035 (see also section XREF-tremolo [FIXME]).
1036   
1037 @mudela[fragment,verbatim,center]
1038   [:16 e'1 g'] [:8 e'4 f']
1039 @end mudela
1040   
1041 @mudela[fragment,verbatim,center]
1042   c'4:32 [:16 c'8 d'8]
1043 @end mudela
1044
1045
1046 @cindex --@@@code{-}@code{-}
1047
1048 @indexcode{__}
1049
1050 @cindex extender
1051
1052 @cindex hyphen
1053
1054 The syntax for an extender mark is `@code{__}'.  This syntax can only
1055 be used within lyrics mode.  The syntax for a spanning hyphen (i.e.,
1056 a hyphen that will be printed between two lyric syllables) is
1057 `@code{-}@code{-}'.
1058
1059
1060 @cindex ties
1061
1062 A tie connects two adjacent note heads of the same pitch.  When used
1063 with chords, it connects all of the note heads whose pitches match.
1064 Ties are indicated using the tilde symbol `@code{~}@indexcode{~}'.
1065 If you try to tie together chords which have no common pitches, a
1066 warning message will appear and no ties will be created.
1067
1068 @mudela[fragment,verbatim,center]
1069   e' ~ e' <c' e' g'> ~ <c' e' g'>
1070 @end mudela
1071
1072
1073
1074 [TODO: explain Requests]
1075
1076
1077 @cindex articulations
1078
1079 @cindex scripts
1080
1081 @cindex ornaments
1082
1083 A variety of symbols can appear above and below notes to indicate
1084 different characteristics of the performance.  These symbols can be
1085 added to a note with `@var{note}@code{-\}@var{name}'.  Numerous symbols
1086 are defined in @file{script.ly} and @file{script.scm}.  Symbols can be
1087 forced to appear above or below the note by writing
1088 `@var{note}@code{^\}@var{name}' and `@var{note}@code{_\}@var{name}'
1089 respectively.  Here is a chart showing symbols above notes, with the
1090 name of the corresponding symbol appearing underneath.
1091
1092 @mudela[]
1093
1094   \score {
1095     < \notes {
1096         c''-\accent      c''-\marcato      c''-\staccatissimo c''-\fermata 
1097         c''-\stopped     c''-\staccato     c''-\tenuto        c''-\upbow
1098         c''-\downbow     c''^\lheel        c''-\rheel         c''^\ltoe
1099         c''-\rtoe        c''-\turn         c''-\open          c''-\flageolet
1100         c''-\reverseturn c''-\trill        c''-\prall         c''-\mordent
1101         c''-\prallprall  c''-\prallmordent c''-\upprall       c''-\downprall
1102         c''-\thumb       c''-\segno        c''-\coda
1103       }
1104       \context Lyrics \lyrics {  
1105         accent__      marcato__      staccatissimo__ fermata
1106         stopped__     staccato__     tenuto__        upbow
1107         downbow__     lheel__        rheel__         ltoe
1108         rtoe__        turn__         open__          flageolet
1109         reverseturn__ trill__        prall__         mordent
1110         prallprall__  prallmordent__ uprall__        downprall
1111         thumb__       segno__        coda
1112       }
1113     >
1114     \paper {
1115       linewidth = 5.875\in;          
1116       indent    = 0.0;
1117     }
1118   }
1119
1120 @end mudela
1121
1122 In addition, it is possible to place arbitrary strings of text or
1123 TeX above or below notes by using a string instead of an
1124 identifier: `@code{c^"text"}'.  Fingerings 
1125 @cindex fingering
1126  can be
1127 placed by simply using digits.  All of these note ornaments appear in
1128 the printed output but have no effect on the MIDI rendering of the
1129 music.
1130
1131 To save typing, fingering instructions (digits 0 to 9 are
1132 supported) and single characters shorthands exist for a few
1133 common symbols
1134
1135 @mudela[]
1136
1137   \score {
1138     \notes {
1139       \property Voice.textStyle = typewriter
1140       c''4-._"c-."      s4
1141       c''4--_"c-{}-"    s4
1142       c''4-+_"c-+"      s4
1143       c''4-|_"c-|"      s4
1144       c''4->_"c->"      s4
1145       c''4-^_"c-\\^{ }" s4
1146       c''4-1_"c-1"      s4
1147       c''4-2_"c-2"      s4
1148       c''4-3_"c-3"      s4
1149       c''4-4_"c-4"      s4
1150     }
1151     \paper {
1152       linewidth = 5.875 \in;
1153       indent    = 0.0;
1154     }
1155   }
1156
1157 @end mudela
1158
1159 Dynamic marks are specified by using an identifier after a note:
1160 `@code{c4-\ff}' (the dash is optional for dynamics: `@code{c4 \ff})'.  
1161 The available dynamic marks are:
1162 @code{\ppp}@keyindex{ppp},
1163 @code{\pp}@keyindex{pp}, @code{\p}@keyindex{p}, @code{\mp}@keyindex{mp},
1164 @code{\mf}@keyindex{mf}, @code{\f}@keyindex{f}, @code{\ff}@keyindex{ff},
1165 @code{\fff}@keyindex{fff}, @code{\fff}@keyindex{ffff},
1166 @code{\fp}@keyindex{fp}, @code{\sf}@keyindex{sf},
1167 @code{\sff}@keyindex{sff}, @code{\sp}@keyindex{sp},
1168 @code{\spp}@keyindex{spp}, @code{\sfz}@keyindex{sfz}, and
1169 @code{\rfz}@keyindex{rfz}.
1170
1171
1172 @example
1173
1174   \textscript@keyindex{textscript} @var{text} @var{style}
1175 @end example
1176
1177 Defines a text to be printed over or under a note.  @var{style} is a
1178 string that may be one of @code{roman}, @code{italic}, @code{typewriter}, 
1179 @code{bold}, @code{Large}, @code{large}, @code{dynamic} or @code{finger}.
1180
1181 You can attach a general textscript request using this syntax:
1182
1183 @quotation
1184
1185 @example 
1186 c4-\textscript "6" "finger"
1187 c4-\textscript "foo" "normal" 
1188 @end example 
1189
1190 @end quotation
1191
1192 This is equivalent to `@code{c4-6 c4-"foo"}'.  
1193
1194
1195 @cindex scripts
1196
1197 @example
1198
1199   \script@keyindex{script} @var{alias}
1200 @end example
1201
1202 Prints a symbol above or below a note.  The argument is a string
1203 which points into the script-alias table defined in @file{script.scm}.
1204 The scheme definitions specify whether the symbol follows notes into
1205 the staff, dependence of symbol placement on staff direction, and a
1206 priority for placing several symbols over one note.  Usually the
1207 @code{\script}@keyindex{script} keyword is not used directly.  Various
1208 helpful identifier definitions appear in @file{script.ly}.
1209
1210
1211 @cindex slur
1212
1213 Slurs connects chords and try to avoid crossing stems.  A slur is
1214 started with `@code{(}' and stopped with `@code{)}'.  The
1215 starting `@code{(}' appears to the right of the first note in
1216 the slur.  The terminal `@code{)}' appears to the left of the
1217 first note in the slur.  This makes it possible to put a note in
1218 slurs from both sides:
1219
1220 @mudela[fragment,verbatim,center]
1221   f'()g'()a' [a'8 b'(] a'4 g'2 )f'4
1222 @end mudela
1223
1224
1225 @cindex crescendo
1226
1227 A crescendo mark is started with @code{\cr}@keyindex{cr} and terminated
1228 with @code{\rc}@keyindex{rc}.  A decrescendo mark is started with
1229 @code{\decr}@keyindex{decr} and terminated with
1230 @code{\rced}@keyindex{rced}.  There are also shorthands for these
1231 marks.  A crescendo can be started with @code{\<}@keyindex{<} and a
1232 decrescendo can be started with @code{\>}@keyindex{>}.  Either one can
1233 be terminated with @code{\!}@keyindex{"!}.  Note that @code{\!}
1234 must go before the last note of the dynamic mark whereas @code{\rc}
1235 and @code{\rced} go after the last note.  Because these marks are
1236 bound to notes, if you want to get several marks during one note, you
1237 must use spacer notes.
1238
1239 @mudela[fragment,verbatim,center]
1240   c'' \< \! c''   d'' \decr e'' \rced 
1241   < f''1 { s4 \< \! s2 \> \! s4 } >
1242 @end mudela
1243
1244
1245 @example
1246
1247   \spanrequest@keyindex{spanrequest} @var{startstop} @var{type}
1248 @end example
1249
1250 Define a spanning request. The @var{startstop} parameter is either -1
1251 (@code{\start}@keyindex{start}) or 1 (@code{\stop}@keyindex{stop}) and
1252 @var{type} is a string that describes what should be started.
1253 Supported types are @code{crescendo}, @code{decrescendo},
1254 @code{beam}, @code{slur}.  This is an internal command.  Users should
1255 use the shorthands which are defined in the initialization file
1256 @file{spanners.ly}.
1257
1258 You can attach a (general) span request to a note using
1259
1260 @mudela[fragment,verbatim,center]
1261   c'4-\spanrequest \start "slur"
1262   c'4-\spanrequest \stop "slur"
1263 @end mudela
1264
1265 The slur syntax with parentheses is a shorthand for this.
1266
1267
1268
1269 @cindex tremolo marks
1270
1271 @node tremolo, , ,  Reference Manual
1272
1273 Tremolo marks can be printed on a single note by adding
1274 `@code{:}[@var{length}]' after the note.  The length must be at
1275 least 8.  A @var{length} value of 8 gives one line across
1276 the note stem.  If the length is omitted, then the last value is
1277 used, or the value of the @code{abbrev}@indexcode{abbrev} property if there was
1278 no last value.
1279
1280 @mudela[verbatim,fragment,center]
1281   c'2:8 c':32
1282 @end mudela
1283
1284
1285
1286 @node Compound music expressions, , ,  Reference Manual
1287 @section Compound music expressions
1288
1289 @cindex compound music expressions
1290
1291 Music expressions are compound data structures.  You can nest music
1292 expressions any way you like.  This simple example shows how three
1293 chords can be expressed in two different ways:
1294
1295 @mudela[fragment,verbatim,center]
1296   \notes \context Staff {
1297     \cadenza 1;
1298     <a c'> <b  d' > <c' e'>
1299     < { a b  c' } { c' d' e' } >
1300   }
1301 @end mudela
1302
1303 @cindex context selection
1304 @c @keyindex{context}
1305
1306 @example
1307   \context @var{contexttype} [= @var{contextname}] @var{musicexpr}
1308 @end example
1309
1310 Interpret @var{musicexpr} within a context of type @var{contexttype}. 
1311 If the context does not exist, it will be created.  The new context
1312 can optionally be given a name.  See
1313 section XREF-contextselection [FIXME] and XREF-contextdefs [FIXME] for more
1314 information on interpretation contexts.
1315
1316
1317
1318 @cindex input modes
1319
1320 @cindex mode switch
1321
1322 Mode switching keywords form compound music expressions: @code{\notes}
1323 @keyindex{notes} @var{musicexpr}, @code{\chords} @keyindex{chords}
1324 @var{musicexpr}, and @code{\lyrics} @keyindex{lyrics} @var{musicexpr}. 
1325 These expressions do not add anything to the meaning of their
1326 arguments.  They are just a way to indicate that the arguments should
1327 be parsed in indicated mode.  See section XREF-modes [FIXME] for more
1328 information on modes.
1329
1330 More information on context selection can be found in
1331 section XREF-contextselection [FIXME].
1332
1333
1334
1335 @cindex sequential music
1336
1337
1338
1339 @example
1340
1341   \sequential@keyindex{sequential}
1342     @code{@{} @var{musicexprlist} @code{@}}
1343 @end example
1344
1345 This means that list should be played or written in sequence, i.e.,
1346 the second after the first, the third after the second.  The duration
1347 of sequential music is the the sum of the durations of the elements. 
1348 There is a shorthand, which leaves out the keyword:
1349
1350 @example
1351
1352   @code{@{} @var{musicexprlist} @code{@}}
1353 @end example
1354
1355
1356
1357 @cindex simultaneous music
1358
1359 @indexcode{<}
1360 @indexcode{>}
1361
1362 @example
1363
1364   \simultaneous@keyindex{simultaneous}
1365     @code{@{} @var{musicexprlist} @code{@}}
1366 @end example
1367
1368 It constructs a music expression where all of its arguments start at
1369 the same moment.  The duration is the maximum of the durations of the
1370 elements.  The following shorthand is a common idiom:
1371
1372 @example
1373
1374   @code{<} @var{musicexprlist} @code{>}
1375 @end example
1376
1377 If you try to use a chord as the first thing in your score, you might
1378 get multiple staffs instead of a chord.
1379
1380 @mudela[verbatim,center]
1381   \score {
1382     \notes <c''4 e''>
1383     \paper {
1384       linewidth = -1.;
1385     }
1386   }
1387 @end mudela
1388
1389 This happens because the chord is interpreted by a score context.
1390 Each time a note is encountered a default Voice context (along with a
1391 Staff context) is created.  The solution is to explicitly instantiate
1392 a Voice context:
1393
1394 @mudela[verbatim,center]
1395   \score {
1396     \notes\context Voice <c''4 e''>
1397     \paper {
1398       linewidth = -1.;
1399     }
1400   }
1401 @end mudela
1402
1403
1404
1405 @cindex relative pitch specification
1406
1407 @node relative, , , Reference Manual
1408
1409 It is easy to get confused by octave changing marks and accidentally
1410 putting a pitch in the wrong octave.  A much better way of entering a
1411 note's octave is `the relative octave' mode.
1412
1413 @example
1414
1415   \relative@keyindex{relative} @var{startpitch} @var{musicexpr}
1416 @end example
1417
1418 The octave of notes that appear in @var{musicexpr} are calculated as
1419 follows: If no octave changing marks are used, the basic interval
1420 between this and the last note is always taken to be a fourth or
1421 less.@footnote{The interval is determined without regarding
1422 accidentals.  A @code{fisis} following a @code{ceses} will be put above
1423 the @code{ceses}.}  The octave changing marks `@code{'}' and `@code{,}'
1424 can then be added to raise or lower the pitch by an extra octave. 
1425 Upon entering relative mode, an absolute starting pitch must be
1426 specified that will act as the predecessor of the first note of
1427 @var{musicexpr}.
1428
1429 Entering scales is straightforward in relative mode.
1430
1431 @mudela[fragment,verbatim,center]
1432   \relative c' {
1433     c d e f g a b c c,
1434   }
1435 @end mudela
1436
1437 And octave changing marks are used for intervals greater than a fourth.
1438
1439 @mudela[fragment,verbatim,center]
1440   \relative c'' {
1441     c g c f, c' a, e'' }
1442 @end mudela
1443
1444 If the preceding item is a chord, the first note of the chord is used
1445 to determine the first note of the next chord.  But other notes
1446 within the second chord are determined by looking at the immediately
1447 preceding note.
1448
1449 @mudela[fragment,verbatim,center]
1450   \relative c' {
1451     c <c e g> 
1452     <c' e g>
1453     <c, e' g>
1454   }
1455 @end mudela 
1456
1457 The pitch after the @code{\relative} contains a notename.  To parse
1458 the pitch as a notename, you have to be in note mode, so there must
1459 be a surrounding @code{\notes}@keyindex{notes} keyword (which is not
1460 shown here).
1461
1462 The relative conversion will not affect @code{\transpose} or
1463 @code{\relative} sections in its argument.  If you want to use
1464 relative within transposed music, you must place an additional
1465 @code{\relative} inside the @code{\transpose}.
1466
1467 It is strongly recommended to use relative pitch mode: less work,
1468 less error-prone, and more readable.
1469
1470
1471
1472 Chord names are a way to generate simultaneous music expressions that
1473 correspond with traditional chord names.  It can only be used in
1474 Chord mode (see section XREF-modes [FIXME]).
1475
1476 @example
1477
1478   @var{tonic}[@var{duration}][@code{-}@var{modifiers}][@code{^}@var{subtractions}][@code{/}@var{inversion}].
1479 @end example
1480
1481 @var{tonic} should be the tonic note of the chord, and @var{duration}
1482 is the chord duration in the usual notation.  There are two kinds of
1483 modifiers.  One type is @emph{chord additions}, which are obtained by
1484 listing intervals separated by dots.  An interval is written by its
1485 number with an optional `@code{+}' or `@code{-}' to indicate raising or
1486 lowering by half a step.  Chord additions has two effects: It adds
1487 the specified interval and all lower odd numbered intervals to the
1488 chord, and it may lower or raise the specified interval.  Intervals
1489 must be separated by a dot (`@code{.}').
1490
1491 @quotation
1492
1493 @mudela[fragment,verbatim]
1494 \transpose c'' {
1495   \chords {
1496     c1  c-3-       c-7     c-8
1497     c-9 c-9-.5+.7+ c-3-.5- c-4.6.8
1498   }
1499 }
1500
1501 @end mudela
1502 @end quotation
1503
1504 The second type of modifier that may appear after the `@code{-}' is a
1505 named modifier.  Named modifiers are listed in the file
1506 @file{chord-modifiers.ly}.  The available modifiers are `@code{m}' and
1507 `@code{min}' which lower the 3rd half a step, `@code{aug}@indexcode{aug}' which
1508 raises the 5th, `@code{dim}@indexcode{dim}' which lowers the 5th,
1509 `@code{maj}@indexcode{maj}' which adds a raised 7th, and `@code{sus}@indexcode{sus}'
1510 which replaces the 5th with a 4th.
1511
1512 @quotation
1513
1514 @mudela[fragment,verbatim]
1515 \transpose c'' {
1516   \chords {
1517     c1-m c-min7 c-maj c-aug c-dim c-sus
1518   }
1519 }
1520
1521 @end mudela
1522 @end quotation
1523  
1524
1525 Chord subtractions are used to eliminate notes from a chord.  The
1526 notes to be subtracted are listed after a `@code{^}' character,
1527 separated by dots.
1528
1529 @mudela[fragment,verbatim,center]
1530   \transpose c'' {
1531     \chords {
1532       c1^3 c-7^5.3 c-8^7
1533     }
1534   }
1535 @end mudela 
1536
1537 Chord inversions can be specified by appending `@code{/}@indexcode{/}' and
1538 the name of a single note to a chord.  This has the effect of
1539 lowering the specified note by an octave so it becomes the lowest
1540 note in the chord.  If the specified note is not in the chord, a
1541 warning will be printed.
1542
1543 @mudela[fragment,verbatim,center]
1544   \transpose c''' {
1545     \chords {
1546       c1 c/e c/g c-7/e
1547     }
1548   }
1549
1550 @end mudela 
1551
1552 Throughout these examples, chords have been shifted around the staff
1553 using @code{\transpose}.
1554
1555 You should not combine @code{\relative} with named chords. 
1556
1557
1558
1559 @cindex tuplets
1560
1561 Tuplets are made out of a music expression by multiplying their
1562 duration with a fraction.
1563
1564 @example
1565
1566   \times@keyindex{times} @var{fraction} @var{musicexpr}
1567 @end example
1568
1569 The duration of @var{musicexpr} will be multiplied by the fraction. 
1570 In print, the fraction's denominator will be printed over the notes,
1571 optionally with a bracket.  The most common tuplet is the triplet in
1572 which 3 notes have the length of 2, so the notes are 2/3 of
1573 their written length:
1574
1575 @mudela[fragment,verbatim,center]
1576   g'4 \times 2/3 {c'4 c' c'} d'4 d'4
1577 @end mudela
1578
1579
1580
1581 @cindex grace notes
1582
1583 @example
1584
1585   \grace@keyindex{grace} @var{musicexpr}
1586 @end example
1587
1588 A grace note expression has duration 0; the next real note is
1589 assumed to be the main note.
1590
1591 You cannot have the grace note after the main note, in terms of
1592 duration, and main notes, but you can typeset the grace notes to the
1593 right of the main note using the property
1594 @code{graceAlignPosition}@indexcode{graceAlignPosition}.
1595
1596 When grace music is interpreted, a score-within-a-score is set up:
1597 @var{musicexpr} has its own time bookkeeping, and you could (for
1598 example) have a separate time signature within grace notes.  While in
1599 this score-within-a-score, you can create notes, beams, slurs, etc.
1600 Unbeamed eighth notes and shorter by default have a slash through the
1601 stem.  This behavior can be controlled with the
1602 @code{stemStyle}@indexcode{stemStyle} property.
1603
1604 @quotation
1605
1606 @mudela[fragment,verbatim]
1607 \relative c'' {
1608   \grace c8 c4 \grace { [c16 c16] } c4
1609   \grace { \property Grace.stemStyle = "" c16 } c4
1610 }
1611
1612 @end mudela
1613 @end quotation
1614
1615 At present, nesting @code{\grace}@keyindex{grace} notes, e.g.
1616
1617 @example
1618
1619   @code{\grace @{ \grace c32 c16 @} c4}
1620 @end example
1621
1622 may result in run-time errors of LilyPond.  Since the meaning of such
1623 a construct is unclear, we don't consider this a loss.  Similarly,
1624 juxtaposing two @code{\grace} sections is syntactically valid, but
1625 makes no sense and may cause runtime errors.
1626
1627 Ending a staff or score with grace notes may also generate a run-time
1628 error, since there will be no main note to attach the grace notes to.
1629
1630
1631
1632 @cindex repeats
1633
1634 @node Repeats, , , Reference Manual
1635
1636 In order to specify repeats, use the @code{\repeat}@keyindex{repeat}
1637 keyword.  Since repeats look and sound differently when played or
1638 printed, there are a few different variants of repeats.
1639
1640 @table @samp
1641   @item unfolded  
1642     Repeated music is fully written (played) out.  Useful for MIDI
1643     output.
1644
1645   @item volta  
1646     This is the normal notation: Repeats are not written out, but
1647     alternative endings (voltas) are printed, left to right.
1648
1649   @item folded  
1650     Alternative endings are written stacked, which is useful for
1651     lyrics.
1652 @end table  
1653
1654 The syntax for repeats is
1655
1656 @example
1657
1658   \repeat @var{variant} @var{repeatcount} @var{repeatbody}
1659 @end example
1660
1661 If you have alternative endings, you may add
1662
1663 @example
1664
1665   \alternative@keyindex{alternative}
1666     @code{@{} @var{alternative1}
1667             @var{alternative2}
1668             @var{alternative3} @dots{} @code{@}}
1669 @end example
1670
1671 where each @var{alternative} is a Music expression.
1672
1673 Normal notation repeats are used like this:
1674
1675 @quotation
1676
1677 @mudela[fragment,verbatim]
1678   c'1
1679   \repeat volta 2 { c'4 d' e' f' }
1680   \repeat volta 2 { f' e' d' c' }
1681
1682 @end mudela
1683 @end quotation
1684
1685 With alternative endings:
1686
1687 @quotation
1688
1689 @mudela[fragment,verbatim]
1690   c'1
1691   \repeat volta 2 {c'4 d' e' f'} 
1692   \alternative { {d'2 d'} {f' f} }
1693
1694 @end mudela
1695 @end quotation
1696
1697 Folded repeats look like this:@footnote{Folded repeats offer little
1698 more over simultaneous music.  However, it is to be expected that
1699 more functionality -- especially for the MIDI backend -- will be
1700 implemented.}
1701
1702 @quotation
1703
1704 @mudela[fragment,verbatim]
1705   c'1
1706   \repeat fold 2 {c'4 d' e' f'} 
1707   \alternative { {d'2 d'} {f' f} }
1708
1709 @end mudela
1710 @end quotation
1711
1712 @quotation
1713
1714 @mudela[fragment,verbatim]
1715 \context Staff {
1716   \relative c' {
1717     \partial 4;
1718     \repeat volta 2 { e | c2 d2 | e2 f2 | }
1719     \alternative { { g4 g g } { a | a a a a | b1 } }
1720   }
1721 }
1722
1723 @end mudela
1724 @end quotation
1725
1726 If you don't give enough alternatives for all of the repeats, then
1727 the first alternative is assumed to be repeated often enough to equal
1728 the specified number of repeats.
1729
1730 @quotation
1731
1732 @mudela[fragment,verbatim]
1733 \context Staff {
1734   \relative c' {
1735     \repeat volta 3 { \partial 4; e | c2 d2 | e2 f2 | }
1736     \alternative { { g4 g g }
1737                    {\partial 1; e4 e e } 
1738                    {\partial 1; a a a a | b1 } }
1739   }
1740 }
1741
1742 @end mudela
1743 @end quotation
1744
1745 It is possible to nest @code{\repeat}.  This is not entirely
1746 supported: the notes will come be in the right places, but the repeat
1747 bars will not.
1748
1749
1750
1751 @cindex transposition of pitches
1752
1753 @node transpose, , , Reference Manual
1754
1755 A music expression can be transposed with
1756 @code{\transpose}@keyindex{transpose}.  The syntax is
1757
1758 @example
1759
1760   \transpose @var{pitch} @var{musicexpr}
1761 @end example
1762
1763 This means that middle C in @var{musicexpr} is transposed to
1764 @var{pitch}.
1765
1766 @code{\transpose} distinguishes between enharmonic pitches: both
1767 @code{\transpose cis'} or @code{\transpose des'} will transpose up half
1768 a tone.  The first version will print sharps and the second version
1769 will print flats.
1770
1771 @quotation
1772
1773 @mudela[fragment,verbatim]
1774 \context Staff {
1775   \clef "F";
1776   { \key e; c d e f }
1777   \clef "G";
1778   \transpose des'' { \key e; c d e f }
1779   \transpose cis'' { \key e; c d e f }
1780 }
1781
1782 @end mudela
1783 @end quotation
1784
1785 If you want to use both @code{\transpose} and @code{\relative}, then
1786 you must use @code{\transpose} first.  @code{\relative} will have no
1787 effect music that appears inside a @code{\transpose}.
1788
1789
1790
1791 @cindex automatic lyric durations
1792
1793 If you have lyrics that are set to a melody, you can import the
1794 rhythm of that melody into the lyrics using @code{\addlyrics}.
1795 @keyindex{addlyrics} The syntax for this is
1796
1797 @example
1798
1799   \addlyrics @var{musicexpr1 musicexpr2}
1800 @end example
1801
1802 This means that both @var{musicexpr1} and @var{musicexpr2} are
1803 interpreted, but that every non-command atomic music expression
1804 (``every syllable'') in @var{musicexpr2} is interpreted using timing
1805 of @var{musicexpr1}.
1806
1807 If the property @code{automaticMelismata}@indexcode{automaticMelismata} is set in the
1808 context of @var{musicexpr1}, no lyrics will be put on slurred or tied
1809 notes.
1810
1811 @quotation
1812
1813 @mudela[verbatim,fragment]
1814 \addlyrics
1815 \transpose c'' {
1816   \property Voice.automaticMelismata = "1"
1817   c8 () cis d8. e16 f2
1818 }
1819 \context Lyrics \lyrics {
1820  do4 re mi fa }
1821
1822 @end mudela
1823 @end quotation
1824
1825 You should use a single rhythm melody, and single rhythm lyrics (a
1826 constant duration is the obvious choice).  If you do not, you will get
1827 undesired effects when using multiple stanzas:
1828
1829 @quotation
1830
1831 @mudela[verbatim,fragment]
1832 \addlyrics
1833 \transpose c'' {
1834   c8 () cis d8. e16 f2
1835 }
1836 \context Lyrics \lyrics
1837 < { do4 re mi fa }
1838   { do8 re mi fa } >
1839
1840 @end mudela
1841 @end quotation
1842
1843 It is valid (but probably not very useful) to use notes instead of
1844 lyrics for @var{musicexpr2}.
1845
1846
1847
1848
1849 @node Ambiguities, , ,  Reference Manual
1850 @section Ambiguities
1851
1852 @cindex ambiguities
1853
1854 The grammar contains a number of ambiguities.@footnote{The authors
1855 hope to resolve them at a later time.}
1856
1857 @itemize @bullet
1858   @item  The assignment
1859
1860          @example 
1861 foo = bar 
1862 @end example 
1863
1864        can be interpreted as making a string identifier @code{\foo}
1865        containing @code{"bar"}, or a music identifier @code{\foo}
1866        containing the syllable `bar'.
1867
1868   @item  The assignment
1869
1870          @example 
1871 foo = -6 
1872 @end example 
1873
1874        can be interpreted as making an integer identifier
1875        containing -6, or a Request identifier containing the
1876        fingering `6' (with neutral direction).
1877
1878   @item  If you do a nested repeat like
1879
1880        @quotation
1881
1882 @example 
1883 \repeat @dots{}
1884 \repeat @dots{}
1885 \alternative 
1886 @end example 
1887
1888        @end quotation
1889
1890        then it is ambiguous to which @code{\repeat} the
1891        @code{\alternative} belongs.  This is the classic if-then-else
1892        dilemma.  It may be solved by using braces.
1893
1894   @item  (an as yet unidentified ambiguity :-)
1895 @end itemize
1896
1897
1898
1899 @node Notation conversion specifics, , ,  Reference Manual
1900 @section Notation conversion specifics
1901
1902
1903
1904 @cindex automatic beam generation
1905
1906 @node autobeam, , ,  Reference Manual
1907
1908 By default, LilyPond will generate beams automatically.  This feature
1909 can be disabled by setting the @code{Voice.noAutoBeaming}@indexcode{Voice.noAutoBeaming}
1910 property to 1.  It can be overridden for specific cases by
1911 specifying explicit beams as described in
1912 section XREF-manualbeam [FIXME].
1913
1914 A large number of Voice properties are used to decide how to generate
1915 beams.  Their default values appear in @file{auto-beam-settings.ly}.
1916 In general, beams can begin anywhere, but their ending location is
1917 significant.  Beams can end on a beat, or at durations specified by
1918 the @code{Voice.beamAutoEnd}@indexcode{Voice.beamAutoEnd} property.  To end beams every
1919 quarter note, for example, you could set
1920 @code{Voice.beamAutoEnd}@indexcode{Voice.beamAutoEnd} equal to `@code{"1/4"}'.  To end beams
1921 at every three eighth notes you would set it to `@code{"3/8"}'.  The
1922 same syntax can be used to specify beam starting points using
1923 @code{Voice.beamAutoBegin}@indexcode{Voice.beamAutoBegin}.
1924
1925 To allow different settings for different time signatures, these
1926 property names can start with `@code{time}@var{N}@code{_}@var{M}' to
1927 restrict the definition to `@var{N}@code{/}@var{M}' time.  For example,
1928 to specify beams ending only for 6/8 time you would use the
1929 property @code{Voice.time6_8beamAutoEnd}.  To allow different endings
1930 for notes of different durations, the duration can be tacked onto the
1931 end of the property.  To specify beam endings for beams that contain
1932 32nd notes, you would use @code{Voice.beamAutoEnd_32}.
1933
1934
1935
1936 @cindex chord names
1937
1938 @cindex chords
1939
1940 @cindex printing!chord names
1941
1942 For displaying printed chord names, use the @code{ChordNames}@indexcode{ChordNames}
1943 and @code{ChordNameVoice}@indexcode{ChordNameVoice} contexts.  The chords may be entered
1944 either using the notation described above, or directly using
1945 simultaneous music.
1946
1947 @quotation
1948
1949 @mudela[fragment,verbatim]
1950 <
1951   \context ChordNames {
1952     \chords{a b c} \notes{<d f g>  <e g b>}
1953   }
1954   \context Staff \notes {
1955     a b c' d' e'
1956   }
1957 >
1958
1959 @end mudela
1960 @end quotation
1961
1962 LilyPond examines chords specified as lists of notes to determine a
1963 name to give the chord.  By default, LilyPond will not try to
1964 identify chord inversions:
1965
1966 @mudela[fragment,verbatim,center]
1967   <
1968     \context ChordNameVoice \notes {
1969       <e'1 g' c''>
1970     }
1971     \context Thread \notes {
1972       <e'1 g' c''>
1973     }
1974   >
1975 @end mudela
1976
1977 If you want inversions to be recognized, you must set the property
1978 @code{ChordNames.chordInversion}@indexcode{ChordNames.chordInversion}:
1979
1980 @mudela[fragment,verbatim,center]
1981   <
1982     \property Score.chordInversion = 1
1983     \context ChordNameVoice \notes {
1984       <e'1 g' c''>
1985     }
1986     \context Thread \notes {
1987       <e'1 g' c''>
1988     }
1989   >
1990 @end mudela
1991
1992
1993
1994 @cindex lyrics
1995
1996 @cindex printing!lyrics
1997
1998 @node lyricprint, , ,  Reference Manual
1999
2000 Lyric syllables must be interpreted within a @code{Lyrics} context
2001
2002 @cindex context!Lyrics
2003  for printing them.
2004
2005 Here is a full example: 
2006
2007 @quotation
2008
2009 @mudela[verbatim]
2010 \score {
2011   <
2012     \notes \transpose c'' {
2013       c d e c | c d e c |
2014       e f g2 | e4 f g2 \bar "|.";
2015     }
2016     \context Lyrics \lyrics { 
2017       Va-4 der Ja- cob Va- der Ja- cob
2018       Slaapt gij nog?2 Slaapt4 gij nog?2
2019     }
2020   >
2021 }
2022
2023 @end mudela
2024 @end quotation
2025
2026 You may want a continuous line after the syllables to show melismata. 
2027 To achieve this effect, add a `@code{__}' lyric as a separate word
2028 after the lyric to be extended.  This will create an extender, a line
2029 that extends over the entire duration of the lyric.  This line will
2030 run all the way to the start of the next lyric, so you may want to
2031 shorten it by using a blank lyric (using `@code{_}').
2032
2033 @quotation
2034
2035 @mudela[verbatim]
2036 \score {
2037   <
2038     \notes \relative c'' {
2039       a4 () b () c () d | c () d () b () a | c () d () b () a
2040     }
2041     \context Lyrics \lyrics {
2042       foo1 __ | bar2. __ _4 | baz1 __
2043     }
2044   >
2045 }
2046
2047 @end mudela
2048 @end quotation
2049
2050      
2051 If you want to have hyphens centered between syllables (rather than
2052 attached to the end of the first syllable) you can use the special
2053 `@code{-}@code{-}' lyric as a separate word between syllables.  This
2054 will result in a hyphen which length varies depending on the space
2055 between syllables, and which will be centered between the syllables. 
2056 For example:
2057
2058 @quotation
2059
2060 @mudela[verbatim]
2061 \score {
2062   <
2063     \notes \transpose c'' {
2064       c d e c | c d e c |
2065       e f g2 | e4 f g2 \bar "|.";
2066     }
2067     \context Lyrics \lyrics {
2068       Va4 -- der Ja -- cob | Va -- der Ja -- cob |
2069       Slaapt gij nog?2 | Slaapt4 gij nog?2
2070     }
2071   >
2072 }
2073
2074 @end mudela
2075 @end quotation
2076
2077
2078
2079 @node Notation Contexts, , ,  Reference Manual
2080 @section Notation Contexts
2081
2082 @cindex notation contexts
2083
2084 Notation contexts are objects that only exist during a run of
2085 LilyPond.  During the interpretation phase of LilyPond, the Music
2086 expression contained in a @code{\score} block is interpreted in time
2087 order.  This is the order in which humans read, play, and write
2088 music.
2089
2090 A context is an object that holds the reading state of the
2091 expression; it contains information like
2092
2093 @itemize @bullet
2094   @item  What notes are playing at this point?
2095   @item  What symbols will be printed at this point?
2096   @item  In what style will they printed?
2097   @item  What is the current key signature, time signature, point within
2098        the measure, etc.?
2099 @end itemize
2100
2101 Contexts are grouped hierarchically: A @code{Voice} context is
2102 contained in a @code{Staff} context (because a staff can contain
2103 multiple voices at any point), a @code{Staff} context is contained in
2104 a @code{Score}, @code{StaffGroup}, or @code{ChoirStaff} context (because
2105 these can all contain multiple staffs).
2106
2107 Contexts associated with sheet music output are called @emph{notation
2108 contexts}, those for sound output are called playing contexts.
2109
2110 Contexts are created either manually or automatically.  Initially,
2111 the top level music expression is interpreted by the top level
2112 context (the @code{Score} context).  When a atomic music expression
2113 (i.e. a note, a rest, @code{\bar}, or @code{\time} commands), a nested
2114 set of contexts is created that can process these atomic expressions,
2115 as in this example:
2116
2117 @example
2118
2119   @example 
2120 \score @{ \notes < c4 > @} 
2121 @end example 
2122
2123 @end example
2124
2125 The sequential music, `@code{@{ c4 @}}' is interpreted by @code{Score}
2126 context. When the note `@code{c4}' itself is interpreted, a set of
2127 contexts is needed that will accept notes.  The default for this is a
2128 @code{Voice} context, contained in a @code{Staff} context.  Creation of
2129 these contexts results in the staff being printed.
2130
2131
2132 @cindex context
2133
2134 You can also create contexts manually, and you probably have to do so
2135 if you want to typeset complicated multiple part material.  If a
2136 `@code{\context} @var{name} @var{musicexpr}' expression is encountered
2137 during the interpretation phase, the @var{musicexpr} argument will be
2138 interpreted with a context of type @var{name}.  If you specify a name,
2139 the specific context with that name is searched.
2140
2141 If a context of the specified type and name can not be found, a new
2142 one is created.  For example,
2143
2144 @quotation
2145
2146 @mudela[verbatim]
2147 \score {
2148   \notes \relative c'' {
2149     c4 <d4 \context Staff = "another" e4> f
2150   }
2151 }
2152
2153 @end mudela
2154 @end quotation
2155
2156 In this example, the @code{c} and @code{d} are printed on the
2157 default staff.  For the @code{e}, a context Staff called
2158 `@code{another}' is specified; since that does not exist, a new
2159 context is created.  Within @code{another}, a (default) Voice context
2160 is created for the @code{e4}.  When all music referring to a
2161 context is finished, the context is ended as well.  So after the
2162 third quarter, @code{another} is removed.
2163
2164 Almost all music expressions inherit their interpretation context
2165 from their parent.  In other words, suppose that the syntax for a
2166 music expression is
2167
2168 @example
2169
2170   \keyword @var{musicexpr1} @var{musicexpr2} @dots{}
2171 @end example
2172
2173 When the interpretation of this music expression starts, the context
2174 for @var{musicexpr1}, @var{musicexpr2}, etc. is that of the total
2175 expression.
2176
2177 Lastly, you may wonder, why this:
2178
2179 @quotation
2180
2181 @example 
2182 \score @{
2183   \notes \relative c'' @{
2184     c4 d4 e4
2185   @}
2186 @} 
2187 @end example 
2188
2189 @end quotation
2190
2191 doesn't result in this:
2192
2193 @mudela[]
2194
2195   \score {
2196     \notes \relative c'' {
2197       <c4> <d4> <e4>
2198     }
2199   }
2200
2201 @end mudela
2202
2203 For the @code{c4}, a default @code{Staff} (with a contained
2204 @code{Voice}) context is created.  After the @code{c4} ends, no
2205 music refers to this default staff, so it would be ended, with the
2206 result shown.  To prevent this inconvenient behavior, the context to
2207 which the sequential music refers is adjusted during the
2208 interpretation.  So after the @code{c4} ends, the context of the
2209 sequential music is also the default @code{Voice} context. 
2210 The @code{d4} gets interpreted in the same context
2211 as @code{c4}.
2212
2213
2214
2215 These are the contexts supplied with the package.  They are defined
2216 in the initialization file @file{ly/engraver.ly}.
2217
2218 @table @samp
2219   @item @code{Grace}@indexcode{Grace} 
2220     The context for handling grace notes.  It is instantiated
2221     automatically when you use @code{\grace}.  Basically, it is an
2222     `embedded' miniature of the Score context.  Since this context
2223     needs special interaction with the rest of LilyPond, you should
2224     not explicitly instantiate it.
2225
2226   @item @code{LyricVoice}@indexcode{LyricVoice}  
2227     Corresponds to a voice with lyrics.  Handles the printing of a
2228     single line of lyrics.
2229
2230   @item @code{Thread}@indexcode{Thread}  
2231     Handles note heads, and is contained in the Voice context.  You
2232     have to instantiate this explicitly if you want to adjust the
2233     style of individual note heads.
2234
2235   @item @code{Voice}@indexcode{Voice}  
2236     Corresponds to a voice on a staff.  This context handles the
2237     conversion of dynamic signs, stems, beams, super- and subscripts,
2238     slurs, ties, and rests.
2239
2240     You have to instantiate this explicitly if you want to have
2241     multiple voices on the same staff.
2242
2243   @item @code{ChordNamesVoice}@indexcode{ChordNamesVoice}  
2244     A voice with chord names.  Handles printing of a line of chord
2245     names.
2246
2247   @item @code{ChordNames}@indexcode{ChordNames}  
2248     Typesets chord names.  Can contain @code{ChordNamesVoice}
2249     contexts.
2250
2251   @item @code{Lyrics}@indexcode{Lyrics}  
2252     Typesets lyrics.  It can contain @code{LyricVoice} contexts.
2253
2254   @item @code{Staff}@indexcode{Staff}  
2255     Handles clefs, bar lines, keys, accidentals.  It can contain
2256     @code{Voice} contexts.
2257
2258   @item @code{RhythmicStaff}@indexcode{RhythmicStaff}  
2259     A context like @code{Staff} but for printing rhythms.  Pitches are
2260     ignored; the notes are printed on one line.  It can contain
2261     @code{Voice} contexts.
2262
2263   @item @code{GrandStaff}@indexcode{GrandStaff}  
2264     Contains @code{Staff} or @code{RhythmicStaff} contexts.  It adds a
2265     brace on the left side, grouping the staffs together.  The bar
2266     lines of the contained staffs are connected vertically.  It can
2267     contain @code{Staff} contexts.
2268
2269   @item @code{PianoStaff}@indexcode{PianoStaff}  
2270     Just like @code{GrandStaff} but with @code{minVerticalAlign} set
2271     equal to @code{maxVerticalAlign} so that interstaff beaming and
2272     slurring can be used.
2273
2274   @item @code{StaffGroup}@indexcode{StaffGroup}  
2275     Contains @code{Staff} or @code{RhythmicStaff} contexts.  Adds a
2276     bracket on the left side, grouping the staffs together.  The bar
2277     lines of the contained staffs are connected vertically.  It can
2278     contain @code{Staff}, @code{RhythmicStaff}, @code{GrandStaff}, or
2279     @code{Lyrics} contexts.
2280
2281   @item @code{ChoirStaff}@indexcode{ChoirStaff}  
2282     Identical to @code{StaffGroup} except that the contained staffs
2283     are not connected vertically.
2284
2285   @item @code{Score}@indexcode{Score}  
2286     This is the top level notation context.  No other context can
2287     contain a @code{Score} context.  This context handles the
2288     administration of time signatures.  It also makes sure that items
2289     such as clefs, time signatures, and key-signatures are aligned
2290     across staffs.  It can contain @code{Lyrics}, @code{Staff},
2291     @code{RhythmicStaff}, @code{GrandStaff}, @code{StaffGroup}, and
2292     @code{ChoirStaff} contexts.
2293
2294     You cannot explicitly instantiate a Score context (since it is
2295     not contained in any other context).  It is instantiated
2296     automatically when an output definition (a @code{\score} or
2297     @code{\paper} block) is processed.
2298 @end table
2299
2300
2301
2302 Properties that are set in one context are inherited by all of the
2303 contained contexts.  This means that a property valid for the
2304 @code{Voice} context can be set in the @code{Score} context (for
2305 example) and thus take effect in all @code{Voice} contexts.
2306
2307 Properties can be preset within the @code{\translator} block
2308 corresponding to the appropriate context.  In this case, the syntax
2309 is
2310
2311 @example
2312
2313   @var{propname} @code{=} @var{value}
2314 @end example
2315
2316 This assignment happens before interpretation starts, so a
2317 @code{\property} expression will override any predefined settings.
2318
2319 The @code{\property} expression will create any property you specify.
2320 There is no guarantee that a property will be used.  So if you spell
2321 a property name wrong, there will be no error message.
2322
2323 The property settings are used during the interpretation phase.  They
2324 are read by the LilyPond modules where interpretation contexts are
2325 built of.  These modules are called @emph{translators}.  Translators for
2326 notation are called @emph{engravers}, and translators for sound are
2327 called @emph{performers}.
2328
2329 The precise result of a property is determined by the implementation
2330 of the translator that reads them.  Therefore, the result of a
2331 property can vary, since it is implementation and configuration
2332 dependent.
2333
2334 In order to fully find out what properties are used, you must
2335 currently search the source code for calls to @code{get_property}. 
2336 The rest of the section is devoted to an (incomplete) overview of
2337 available properties.
2338
2339 @mbinclude properties.itely
2340
2341 @node Notation output definitions, , ,  Reference Manual
2342 @section Notation output definitions
2343
2344 @cindex output
2345
2346 @cindex notation output
2347
2348 @cindex output definition
2349
2350 @node paper, , ,  Reference Manual
2351
2352 The most important output definition is the @code{\paper} block, for
2353 music notation.  The syntax is
2354
2355 @example
2356
2357   @code{\paper @{} [@var{paperidentifier}] @var{items} @code{@}}
2358 @end example
2359
2360 where each of the items is one of
2361
2362 @itemize @bullet
2363   @item  An assignment.  The assignment must be terminated by a
2364        semicolon.  See section XREF-papervars [FIXME] for information on
2365        paper variables.
2366
2367   @item  A context definition.  See section XREF-contextdefs [FIXME] for
2368        more information on context definitions.
2369
2370   @item  A margin shape declaration.  The syntax is
2371
2372        @example
2373
2374          \shape @var{indent1}@code{,} @var{width1}@code{,}
2375                       @var{indent2}@code{,} @var{width2} @dots{} @code{;}
2376        @end example
2377
2378        @keyindex{shape}
2379
2380        Each pair of @var{indent} and @var{width} values is a dimension
2381        specifying how far to indent and how wide to make the line. 
2382        The indentation and width of successive lines are specified by
2383        the successive pairs of dimensions.  The last pair of
2384        dimensions will define the characeristics of all lines beyond
2385        those explicitly specified.
2386
2387   @item  A font declaration.  Its syntax is
2388
2389        @example
2390
2391          @var{fontsize} @code{=} \font@keyindex{font} @var{fontname}
2392        @end example
2393
2394        @var{fontsize} is an integer describing the font to be used. 
2395        0 is the default font.  @var{fontname} is the basename of
2396        a font (usually a member of the Feta family).
2397 @end itemize
2398
2399
2400
2401 @cindex changing font size and paper size
2402
2403 The Feta font provides musical symbols at six different sizes.  These
2404 fonts are 11 point, 13 point, 16 point, 20 point,
2405 23 point, and 26 point.  The point size of a font is the
2406 height of the five lines in a staff when displayed in the font.
2407
2408 Definitions for these sizes are the files @file{paperSZ.ly}, where
2409 @code{SZ} is one of 11, 13, 16, 20, 23 and 26.  If you include
2410 any of these files, the identifiers @code{paper_eleven},
2411 @code{paper_thirteen}, @code{paper_sixteen}, @code{paper_twenty},
2412 @code{paper_twentythree}, and @code{paper_twentysix} are defined
2413 respectively.  The default @code{\paper} block is also set.
2414
2415 To change the paper size, you must first set the
2416 @code{papersize}@indexcode{papersize} variable at top level.  Set it to the strings
2417 @code{a4}, @code{letter}, or @code{legal}.  After this specification,
2418 you must set the font as described above.  If you want the default
2419 font, then use the 20 point font.  The new paper size will not
2420 take effect if the font is not loaded and selected afterwards.  Paper
2421 size selection works by loading a file named after the paper size you
2422 select.
2423
2424
2425
2426 @cindex paper variables
2427
2428 @node Paper variables, , ,  Reference Manual
2429
2430 There is a large number of paper variables that are used to control
2431 details of the layout.  These variables control the defaults for the
2432 entire score.  Usually, they do not have to be changed; they are by
2433 default set to values that depend on the font size in use.  The
2434 values are used by the graphic objects while formatting the score;
2435 they are therefore implementation dependent.  Most variables are
2436 accompanied by documentation in the initalization file
2437 @file{params.ly} or @file{paperSZ.ly}, where @code{SZ} is the staff
2438 height in points.
2439
2440 Nevertheless, here are some variables you may want to use or change:
2441
2442 @table @samp
2443   @item @code{indent}@indexcode{indent}  
2444     The indentation of the first line of music.
2445
2446   @item @code{interline}@indexcode{interline}  
2447     The distance between two staff lines, calculated from the center
2448     of the lines.  You should use either this or @code{rulethickness}
2449     as a unit for distances you modify.
2450   
2451   @item @code{linewidth}@indexcode{linewidth}  
2452     Sets the width of the lines.  If set to -1.0, a single
2453     unjustified line is produced.
2454
2455   @item @code{output}@indexcode{output}  
2456     Specifies an alternate name for the the output @file{s}.
2457     A @file{.tex}, @file{.midi} or @file{.ps} extension will be 
2458     added to the string you specify.
2459
2460   @item @code{rulethickness}@indexcode{rulethickness}  
2461     Determines the thickness of staff and bar lines. 
2462 @end table
2463
2464
2465 @node contextdefs, , ,  Reference Manual
2466
2467 @cindex context definition
2468
2469 A notation contexts is defined by the following information
2470
2471 @enumerate i
2472   @item  A name.
2473
2474   @item  The LilyPond modules that do the actual conversion of music to
2475        notation.  Each module is a so-called
2476        @emph{engraver}
2477 @cindex engraver
2478 .
2479
2480   @item  How these modules should cooperate, i.e. which ``cooperation
2481        module'' should be used.  This cooperation module is a special
2482        type of engraver.
2483
2484   @item  What other contexts the context can contain,
2485
2486   @item  What properties are defined.
2487 @end enumerate
2488
2489 A context definition has this syntax:
2490
2491 @example
2492
2493   \translator @code{@{}
2494                       @var{translatorinit} @var{translatormodifierlist}
2495                     @code{@}}
2496 @end example
2497
2498 @var{translatorinit} can be an identifier or of the form
2499
2500 @example
2501
2502   \type @var{typename} @code{;}
2503 @end example
2504
2505 @var{typename} is one of
2506
2507 @table @samp
2508   @item @code{Engraver_group_engraver}@indexcode{Engraver_group_engraver}  
2509     The standard cooperation engraver.
2510
2511   @item @code{Score_engraver}@indexcode{Score_engraver}  
2512     This is cooperation module that should be in the top level context.
2513
2514   @item @code{Grace_engraver_group}@indexcode{Grace_engraver_group}  
2515     This is a special cooperation module (resembling
2516     @code{Score_engraver}) that is used to created an embedded
2517     `miniscore'.
2518 @end table 
2519
2520 @var{translatormodifierlist} is a list of items where each item is
2521 one of
2522
2523 @itemize @bullet
2524   @item  @code{\consists} @var{engravername} @code{;}  
2525     Add @var{engravername} to the list of modules in this context. 
2526     Section XREF-engravers [FIXME] contains an overview of the engravers
2527     available.  The order of engravers added with @code{\consists} is
2528     significant.
2529   
2530   @item  @code{\consistsend} @var{engravername} @code{;}  
2531     Analogous to @code{\consists}, but makes sure that
2532     @var{engravername} is always added to the end of the list of
2533     engravers.
2534
2535     Some engraver types need to be at the end of the list; this
2536     insures they are put there, and stay there, if a user adds or
2537     removes engravers.  This command is usually not needed for
2538     end-users.
2539     
2540   @item  @code{\accepts} @var{contextname} @code{;}  
2541     Add @var{contextname} to the list of  context this context can
2542     contain.  The first listed context the context to create by
2543     default.
2544   
2545   @item  @code{\remove} @var{engravername} @code{;}  
2546     Remove a previously added (with @code{\consists}) engraver.
2547   
2548   @item  @code{\name} @var{contextname} @code{;}  
2549     This sets name of the context, e.g. @code{Staff}, @code{Voice}.  If
2550     the name is not specified, the translator won't do anything.
2551
2552   @item  @var{propname} @code{=} @var{value} @code{;}  
2553     A property assignment.  It is allowed to use reals for
2554     @var{value}.
2555 @end itemize
2556
2557 In the @code{\paper} block, it is also possible to define translator
2558 identifiers.  Like other block identifiers, the identifier can only
2559 be used as the very first item of a translator.  In order to define
2560 such an identifier outside of @code{\score}, you must do
2561
2562 @quotation
2563
2564 @example 
2565 \paper @{
2566   foo = \translator @{ @dots{} @}
2567 @}
2568 \score @{
2569   \notes @{
2570     @dots{}
2571   @}
2572   \paper @{
2573     \translator @{ \foo @dots{} @}
2574   @}
2575 @} 
2576 @end example 
2577
2578 @end quotation
2579
2580
2581 @cindex paper types, engravers, and pre-defined translators
2582
2583 Some pre-defined identifiers can simplify modification of
2584 translators.  The pre-defined identifiers are:
2585
2586 @table @samp
2587   @item @code{StaffContext}@indexcode{StaffContext}  
2588     Default Staff context. 
2589
2590   @item @code{RhythmicStaffContext}@indexcode{RhythmicStaffContext}  
2591     Default RhythmicStaff context. 
2592
2593   @item @code{VoiceContext}@indexcode{VoiceContext}  
2594     Default Voice context.  
2595
2596   @item @code{ScoreContext}@indexcode{ScoreContext}  
2597     Default Score context. 
2598
2599   @item @code{ScoreWithNumbers}@indexcode{ScoreWithNumbers}  
2600     Score context with numbering at the Score level.
2601
2602   @item @code{BarNumberingStaffContext}@indexcode{BarNumberingStaffContext}  
2603     Staff context with numbering at the Staff level.
2604
2605   @item @code{HaraKiriStaffContext}@indexcode{HaraKiriStaffContext}  
2606     Staff context that does not print if it only contains rests. 
2607     Useful for orchestral scores.@footnote{Harakiri, also called
2608     Seppuku, is the ritual suicide of the Samourai.}
2609
2610   @item @code{OrchestralPartStaffContext}@indexcode{OrchestralPartStaffContext}
2611
2612   @item @code{OrchestralScoreContext}@indexcode{OrchestralScoreContext}
2613 @end table
2614
2615 Using these pre-defined values, you can remove or add items to the
2616 translator:
2617
2618 @quotation
2619
2620 @example 
2621 \paper @{
2622   \translator @{
2623     \StaffContext
2624     \remove Some_engraver;
2625     \consists Different_engraver;
2626   @}
2627 @} 
2628 @end example 
2629
2630 @end quotation
2631
2632       
2633
2634 @node engravers, , ,  Reference Manual
2635
2636 The engravers for paper output are:
2637
2638 [incomplete, FIXME]
2639
2640 @table @samp
2641   @item @code{Bar_engraver}@indexcode{Bar_engraver}  
2642     Engraves bar lines.  Normally in @code{Staff} and
2643     @code{RhythmicStaff}.
2644
2645   @item @code{Bar_number_engraver}@indexcode{Bar_number_engraver}  
2646     Engrave bar numbers.  These numbers appear at the start of each
2647     line.  Not normally in any translator.  Can be added to
2648     @code{Score} for score-wide numbering or to @code{Staff} for
2649     numbering on each staff.
2650
2651   @item @code{Beam_engraver}@indexcode{Beam_engraver}  
2652     Handles beam requests by engraving beams.  Normally appears in
2653     the @code{Voice} translator.  If omitted, then notes will be
2654     printed with flags instead of beams.
2655
2656   @item @code{Beam_req_swallow_translator}
2657     @indexcode{Beam_req_swallow_translator}  
2658     Swallows beam requests.  In @code{LyricVoice}.  
2659
2660   @item @code{Chord_name_engraver}@indexcode{Chord_name_engraver}  
2661     Engraves chord names.  Normally in @code{ChordNameVoice} .
2662
2663   @item @code{Chord_tremolo_engraver}@indexcode{Chord_tremolo_engraver}
2664
2665   @item @code{Clef_engraver}@indexcode{Clef_engraver}  
2666     Engraves the clef symbol.  Normally in @code{Staff}.
2667
2668   @item @code{Collision_engraver}@indexcode{Collision_engraver}
2669
2670   @item @code{Dot_column_engraver}@indexcode{Dot_column_engraver}  
2671     Engraves dots on dotted notes shifted to the right of the note. 
2672     Normally in @code{Voice}.  If omitted, then dots appear on top of
2673     the notes.
2674
2675   @item @code{Dynamic_engraver}@indexcode{Dynamic_engraver}  
2676     Engraves dynamics symbols.  Normally in @code{Voice}.
2677
2678   @item @code{Font_size_engraver}@indexcode{Font_size_engraver}
2679
2680   @item @code{Key_engraver}@indexcode{Key_engraver}  
2681     Engraves the key signature.  Normally in @code{Staff}.
2682
2683   @item @code{Local_key_engraver}@indexcode{Local_key_engraver}
2684
2685   @item @code{Lyric_engraver}@indexcode{Lyric_engraver}  
2686     Engraves lyrics.  Normally in @code{LyricVoice}.
2687
2688   @item @code{Multi_measure_rest_engraver}
2689     @indexcode{Multi_measure_rest_engraver}  
2690     Engraves multi-measure rests that are produced with @code{R}. 
2691     Normally in @code{Voice}.
2692
2693   @item @code{Piano_bar_engraver}@indexcode{Piano_bar_engraver}
2694
2695   @item @code{Pitch_squash_engraver}@indexcode{Pitch_squash_engraver}  
2696     Treat all pitches as middle C.  Used in @code{RhythmicStaff}. 
2697     Note that the notes move, but the locations of accidentals stay
2698     the same.
2699
2700   @item @code{Priority_horizontal_align_engraver}
2701     @indexcode{Priority_horizontal_align_engraver}
2702
2703   @item @code{Repeat_engraver}@indexcode{Repeat_engraver}  
2704     Handles repeats?  In @code{Staff} and @code{RhythmicStaff}.
2705
2706   @item @code{Rest_collision_engraver}@indexcode{Rest_collision_engraver}  
2707     Handles collisions of rests.  In @code{Staff}.
2708
2709   @item @code{Rest_engraver}@indexcode{Rest_engraver}  
2710     Engraves rests.  Normally in @code{Voice}.
2711
2712   @item @code{Rhythmic_column_engraver}@indexcode{Rhythmic_column_engraver}
2713
2714   @item @code{Score_priority_engraver}@indexcode{Score_priority_engraver}
2715
2716   @item @code{Script_engraver}@indexcode{Script_engraver}  
2717     Handles note ornaments generated by @code{\script}.  Normally in
2718     @code{Voice}.
2719
2720   @item @code{Separating_line_group_engraver}
2721     @indexcode{Separating_line_group_engraver}
2722
2723   @item @code{Skip_req_swallow_translator}
2724     @indexcode{Skip_req_swallow_translator}
2725
2726   @item @code{Slur_engraver}@indexcode{Slur_engraver}  
2727     Engraves slurs.  Normally in @code{Voice}.
2728
2729   @item @code{Span_bar_engraver}@indexcode{Span_bar_engraver}  
2730     Engraves lines across multiple staffs.  Normally in
2731     @code{Staffgroup} and @code{GrandStaff}.  Removing this from
2732     @code{StaffGroup} gives the definition of @code{ChoirStaff}.
2733
2734   @item @code{Span_score_bar_engraver}@indexcode{Span_score_bar_engraver}
2735
2736   @item @code{Staff_group_bar_engraver}@indexcode{Staff_group_bar_engraver}
2737
2738   @item @code{Staff_margin_engraver}@indexcode{Staff_margin_engraver}  
2739     Prints the name of the instrument (specified by
2740     @code{Staff.instrument} and @code{Staff.instr}) at the left of the
2741     staff.
2742
2743   @item @code{Staff_sym_engraver}@indexcode{Staff_sym_engraver}
2744
2745   @item @code{Stem_engraver}@indexcode{Stem_engraver}  
2746     Engraves stems.  Normally in @code{Voice}.
2747
2748   @item @code{Ties_engraver}@indexcode{Ties_engraver}  
2749     Engraves ties.  Normally in @code{Voice}.
2750
2751   @item @code{Time_signature_engraver}@indexcode{Time_signature_engraver}  
2752     Engraves the time signature.  Normally in @code{Staff} and
2753     @code{RhythmicStaff}.
2754
2755   @item @code{Timing_engraver}@indexcode{Timing_engraver}  
2756     Responsible for synchronizing timing information from staffs. 
2757     Normally in @code{Score}.  In order to create polyrhythmic music,
2758     this engraver should be removed from @code{Score} and placed in
2759     @code{Staff}.
2760
2761   @item @code{Tuplet_engraver}@indexcode{Tuplet_engraver}  
2762     Engraves tuplet brackets?  In @code{Staff}.
2763
2764   @item @code{Vertical_align_engraver}@indexcode{Vertical_align_engraver} 
2765 @end table
2766
2767
2768
2769 @node Sound output, , ,  Reference Manual
2770 @section Sound output
2771
2772
2773
2774 The MIDI block is analogous to the paper block, but it is simpler.
2775 The @code{\midi} block can contain:
2776 @cindex MIDI block
2777
2778 @itemize @bullet
2779   @item  a @code{\tempo} definition
2780   @item  context definitions
2781 @end itemize
2782
2783 Assignments in the @code{\midi} block are not allowed.
2784
2785
2786
2787 @cindex context definition
2788
2789 Context definitions follow precisely the same syntax as within the
2790 \paper block.  Translation modules for sound are called performers.
2791 The contexts for MIDI output are defined in @file{ly/performer.ly}.
2792
2793
2794
2795 @cindex MIDI instrument names
2796
2797 @node midilist, , , Reference Manual
2798
2799 The MIDI instrument name is set by the
2800 @code{Staff.midiInstrument}@indexcode{Staff.midiInstrument} property or,
2801 if that property is not set, the
2802 @code{Staff.instrument}@indexcode{Staff.instrument} property.  The
2803 instrument name should be chosen from the following list.  If the
2804 selected string does not exactly match, then LilyPond uses the default
2805 piano.
2806
2807
2808 @quotation
2809
2810 @example 
2811 "acoustic grand"            "contrabass"           "lead 7 (fifths)"
2812 "bright acoustic"           "tremolo strings"      "lead 8 (bass+lead)"
2813 "electric grand"            "pizzicato strings"    "pad 1 (new age)"
2814 "honky-tonk"                "orchestral strings"   "pad 2 (warm)"
2815 "electric piano 1"          "timpani"              "pad 3 (polysynth)"
2816 "electric piano 2"          "string ensemble 1"    "pad 4 (choir)"
2817 "harpsichord"               "string ensemble 2"    "pad 5 (bowed)"
2818 "clav"                      "synthstrings 1"       "pad 6 (metallic)"
2819 "celesta"                   "synthstrings 2"       "pad 7 (halo)"
2820 "glockenspiel"              "choir aahs"           "pad 8 (sweep)"
2821 "music box"                 "voice oohs"           "fx 1 (rain)"
2822 "vibraphone"                "synth voice"          "fx 2 (soundtrack)"
2823 "marimba"                   "orchestra hit"        "fx 3 (crystal)"
2824 "xylophone"                 "trumpet"              "fx 4 (atmosphere)"
2825 "tubular bells"             "trombone"             "fx 5 (brightness)"
2826 "dulcimer"                  "tuba"                 "fx 6 (goblins)"
2827 "drawbar organ"             "muted trumpet"        "fx 7 (echoes)"
2828 "percussive organ"          "french horn"          "fx 8 (sci-fi)"
2829 "rock organ"                "brass section"        "sitar"
2830 "church organ"              "synthbrass 1"         "banjo"
2831 "reed organ"                "synthbrass 2"         "shamisen"
2832 "accordion"                 "soprano sax"          "koto"
2833 "harmonica"                 "alto sax"             "kalimba"
2834 "concertina"                "tenor sax"            "bagpipe"
2835 "acoustic guitar (nylon)"   "baritone sax"         "fiddle"
2836 "acoustic guitar (steel)"   "oboe"                 "shanai"
2837 "electric guitar (jazz)"    "english horn"         "tinkle bell"
2838 "electric guitar (clean)"   "bassoon"              "agogo"
2839 "electric guitar (muted)"   "clarinet"             "steel drums"
2840 "overdriven guitar"         "piccolo"              "woodblock"
2841 "distorted guitar"          "flute"                "taiko drum"
2842 "guitar harmonics"          "recorder"             "melodic tom"
2843 "acoustic bass"             "pan flute"            "synth drum"
2844 "electric bass (finger)"    "blown bottle"         "reverse cymbal"
2845 "electric bass (pick)"      "skakuhachi"           "guitar fret noise"
2846 "fretless bass"             "whistle"              "breath noise"
2847 "slap bass 1"               "ocarina"              "seashore"
2848 "slap bass 2"               "lead 1 (square)"      "bird tweet"
2849 "synth bass 1"              "lead 2 (sawtooth)"    "telephone ring"
2850 "synth bass 2"              "lead 3 (calliope)"    "helicopter"
2851 "violin"                    "lead 4 (chiff)"       "applause"
2852 "viola"                     "lead 5 (charang)"     "gunshot"
2853 "cello"                     "lead 6 (voice)" 
2854 @end example 
2855
2856 @end quotation
2857
2858
2859 @cindex MIDI types and performers
2860
2861 The types available for  MIDI translators are:
2862
2863 @table @samp
2864   @item @code{Performer_group_performer}@indexcode{Performer_group_performer}
2865   @item @code{Score_performer}@indexcode{Score_performer}
2866   @item @code{Staff_performer}@indexcode{Staff_performer}
2867 @end table
2868
2869 The performers for MIDI translators are:
2870
2871 @table @samp
2872   @item @code{Key_performer}@indexcode{Key_performer}
2873   @item @code{Time_signature_performer}@indexcode{Time_signature_performer}
2874   @item @code{Note_performer}@indexcode{Note_performer}
2875   @item @code{Lyric_performer}@indexcode{Lyric_performer}
2876   @item @code{Swallow_performer}@indexcode{Swallow_performer}
2877 @end table
2878
2879
2880
2881 @node Pre-defined Identifiers, , ,  Reference Manual
2882
2883 @section Pre-defined Identifiers
2884
2885 @cindex pre-defined identifiers
2886
2887
2888 Various identifiers are defined in the initialization files to
2889 provide shorthands for some settings.  Most of them are in
2890 @file{ly/declarations.ly}.
2891
2892 @table @samp
2893   @item @code{\break}@keyindex{break}  
2894     Force a line break in music by using a large argument for the
2895     keyword @code{\penalty}.
2896
2897   @item @code{\center}@keyindex{center}  
2898     Used for setting direction  properties.  Equals 0.
2899
2900   @item @code{\down}@keyindex{down}  
2901     Used for setting direction setting properties.  Is equal
2902     to -1.
2903
2904   @item @code{\free}@keyindex{free}  
2905     Used for setting direction setting properties.  Is equal
2906     to 0.
2907
2908   @item @code{\left}@keyindex{left}  
2909     Used for setting text alignment property.  Is equal to -1.
2910
2911   @item @code{\nobreak}@keyindex{nobreak}  
2912     Prevent a line break in music by using a large negative argument
2913     for the keyword @code{\penalty}.
2914
2915   @item @code{\none}@keyindex{none}  
2916     Used for setting @code{Score.beamslopedamping} and
2917     @code{Score.beamquantisation} properties.  Is equal to 0.
2918
2919   @item @code{\normal}@keyindex{normal}  
2920     Used for setting @code{Score.beamslopedamping} and
2921     @code{Score.beamquantisation} properties.  Is equal to 1.
2922
2923   @item @code{\normalkey}@keyindex{normalkey}  
2924     Select normal key signatures where each octave has the same key
2925     signature.  This sets the @code{Staff.keyoctaviation} property.
2926
2927   @item @code{\right}@keyindex{right}  
2928     Used for setting text alignment property.  Is set to 1.
2929
2930   @item @code{\shiftoff}@keyindex{shiftoff}  
2931     Disable horizontal shifting of note heads that collide.  Sets the
2932     @code{Voice.horizontalNoteShift} property.
2933
2934   @item @code{\shifton}@keyindex{shifton}  
2935     Enable note heads that collide with other note heads to be
2936     shifted horiztonally.  Sets the @code{Voice.horizontalNoteShift}
2937     property.
2938
2939   @item @code{\slurboth}@keyindex{slurboth}  
2940     Allow slurs to be above or below notes.  This sets the
2941     @code{Voice.slurVerticalDirection} property.
2942
2943   @item @code{\slurdown}@keyindex{slurdown}  
2944     Force slurs to be below notes.  This sets the
2945     @code{Voice.slurVerticalDirection} property.
2946
2947   @item @code{\slurup}@keyindex{slurup}  
2948     Force slurs to be above notes.  This sets the
2949     @code{Voice.slurVerticalDirection} property.
2950
2951   @item @code{\specialkey}@keyindex{specialkey}  
2952     Allow key signatures do differ in different octaves.  This sets
2953     the @code{Staff.keyoctaviation} property.
2954
2955   @item @code{\stemboth}@keyindex{stemboth}  
2956     Allow stems, beams, and slurs to point either upwards or
2957     downwards, decided automatically by LilyPond.  This sets the
2958     @code{Voice.verticalDirection} property.
2959
2960   @item @code{\stemdown}@keyindex{stemdown}  
2961     Force stems, beams, and slurs to point down.  This sets the
2962     @code{Voice.verticalDirection} property.
2963
2964   @item @code{\stemup}@keyindex{stemup}  
2965     Force stems, beams and slurs to point up.  This sets the
2966     @code{Voice.verticalDirection} property.
2967
2968   @item @code{\traditional}@keyindex{traditional}  
2969     Used for setting the @code{Score.beamquantisation} property.  Is
2970     equal to 2.
2971
2972   @item @code{\up}@keyindex{up}  
2973     Used for setting various direction properties.  Is equal
2974     to 1.
2975 @end table