]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/tex/refman.yo
a357d2d33e1de23efa20d333f806a7577bfdd5a1
[lilypond.git] / Documentation / tex / refman.yo
1 COMMENT(-*-text-*-)
2
3 redef(var)(1)(whenlatex(latexcommand({\normalfont\scshape )ARG1+latexcommand(}))\
4     whenhtml(sc(ARG1)))
5
6
7 redef(code)(1)(tt(ARG1))
8
9 COMMENT(
10
11 TODO:
12    the use of semicolons needs to be documented once it settles down
13    \times needs documentation with examples somewhere once it works (?)
14    paper size?
15    the explanation of how lyrics mode parses words seems ridiculous.  
16      Is there a simple way to explain this, or is the behavior
17      too complicated for a reasonable explanation?
18    \relative and \tranpose and \times make it necessary to specify
19        an explicit \type staff, or bizarre things happen. 
20    catalan.ly
21    accordion symbols
22    extender*  (see extender.ly)
23    \repeat & \alternative  -> probably should have an example
24 )
25
26
27 COMMENT( This document contains Mudela fragments.  You need at least
28 Yodl-1.30.18 to convert this to tex or html.
29
30 TODO
31
32 in stead <-> instead
33 )
34
35 htmlbodyopt(bgcolor)(white)
36 htmlcommand(<font color=black>)
37
38 latexlayoutcmds(
39 \setlength{\topmargin}{-0.25in}
40 \setlength{\textheight}{9in}
41 \setlength{\textwidth}{5.875in} 
42 \setlength{\oddsidemargin}{0.25in}   
43 \setlength{\evensidemargin}{0.25in}
44 \input mudela-book
45 )
46
47 whentexinfo(notableofcontents())
48
49 article(Mudela 1.0.7 / LilyPond 1.1.8 Reference Manual)
50       (Adrian Mariano, Han-Wen Nienhuys and Jan Nieuwenhuizen)
51       (nop()PIPETHROUGH(date "+%B %d, %Y")()()nop())
52
53 COMMENT(
54
55 * The [ ] look weird
56
57 * paragraphs have too much space.
58
59 )
60
61
62 latexcommand(\def\interexample{})
63 latexcommand(\def\preexample{\par})
64 latexcommand(\def\postexample{\par\medskip})
65 latexcommand(\def\file#1{{code(#1)}})
66 COMMENT(
67 latexcommand(\def\texttt#1{\tt #1})
68 latexcommand(\def\textbf#1{\bf #1})
69 )
70
71 COMMENT(urg, texinfo include breaks)
72 whenhtml(
73 includefile(html-disclaimer.yo-urg)
74 )
75
76 bf(This document is not up to date).  All rendered examples of course
77 are current, but the rest probably isn't.  Adjusting the tutorial was
78 considered more important than writing the reference manual.  We
79 apologize for the inconvenience.  For a complete and up-to-date
80 definition, see file(lily/parser.yy), file(lily/lexer.ll), and the
81 init files.
82
83 This document describes the the GNU LilyPond input format, which is an
84 effective language for defining music.  We call this language (rather
85 arrogantly) The Musical Definition Language or Mudela, for
86 short.footnote(If anybody comes up with a better name, we'd gladly
87   take this. Gourlay already uses Musical Description Language,
88   G-Sharp Score Definition Language.  ISO standard 10743 defines a
89   Standard Music Description Language.  We're not being original here.)
90
91 The first aim of Mudela is to define a piece of music, being complete
92 from both from a musical typesetting, as from a musical performing
93 point of view.
94
95 The Musical Definition Language (Mudela), has a logical structure,
96 making use of identifiers, that allows for flexible input, and
97 definition reuse. See the documentation file file(MANIFESTO), included
98 with the LilyPond sources for reasons and design considerations.
99
100
101 sect(Running LilyPond)
102
103 When invoked with a filename that has no extension, LilyPond will try adding
104 a file(.fly) extension first, and a file(.ly) extension second.  
105 If the filename ends with 
106 file(.fly),  LilyPond processes  the file as music using
107 file(init.fly).  In this case, LilyPond does something
108 like:
109 verb(\score {
110   \notes\relative c {
111     \input "yourfile.fly"
112   }
113   \paper{}
114   \midi{}
115 })
116 If you invoke LilyPond with a file file(foo.)var(ext) that doesn't
117 have the file(.ly) extension then LilyPond will look for a file called
118 file(init.)var(ext) and process this file.  The file
119 file(init.)var(ext) must contain the code(\maininput) keyword or LilyPond
120 will not read the user specified file.
121
122 When LilyPond processes file(filename.ly) it will produce file(filename.tex) as
123 output.  If file(filename.ly) contains a second code(\paper) keyword, then
124 LilyPond will produce file(filename-1.tex) as well.  Subsequent code(\paper)
125 keywords will produces sequentially numbered file names.  Several files can be
126 specified; they will each be processed independently.
127
128 sect(Syntax)
129
130 subsect(Basic Mudela)
131
132 A Mudela file consists of keywords with arguments and identifier
133 assignments separated by spaces, tabs or newlines.  Semicolons are
134 used by some keywords but are not generally required.  A one line
135 comment is introduced by a code(%) character.  Block comments are
136 started by code(%{) and ended by code(%}).  They cannot be nested.
137
138 Mudela supports several types:
139
140 description(
141
142 dit(integer) 
143 Formed from an optional minus sign followed by digits.  Arithmetic
144 operations cannot be done with integers, and integers cannot be mixed
145 with reals.
146
147 dit(real) 
148 Formed from an optional minus sign and a sequence of digits followed
149 by a emph(required) decimal point and an optional exponent such as
150 code(-1.2e3).  Reals can be built up using the usual operations:
151 code(+), code(-), code(*), and code(/), with parentheses for grouping.
152
153 dit(string) 
154 Begins and ends with the code(") character.  To include a code(")
155 character in a string write code(\").  Various other backslash
156 sequences have special interpretations as in the C language.  A string
157 that contains no spaces can be written without the quotes.  See
158 Section ref(modes) for details on unquoted strings; their
159 interpretation varies depending on the situation.  On the right side
160 of identifier assignments and within the code(\header) keyword,
161 strings can be concatenated using the code(+) character.
162
163 dit(dimension) Consists of a real followed by one of the dimension
164 keywords: code(\mm), code(\pt), code(\in), or code(\cm).  Dimensions
165 are converted immediately to a real which gives the dimension in
166 points, so they can be mixed with reals, but the result is no longer
167 of type dimension.  The keywords that require a dimension
168 (code(\shape) and code(\symboltables)) will not accept this.
169
170 dit(pitch) 
171 A pitch is a string which is the name of a pitch.  Example: code(a).
172 The pitch names can be redefined with the code(\notenames) keyword.
173 See Section(notelang) for pitch names in different languages.  Pitches
174 can only be specified inside note mode which is specified with
175 code(\notes).  Therefore, keywords which require pitch arguments must
176 appear inside code(\notes).  
177
178 dit(music) 
179 Music is a compound type: arbitrarily complicated expressions with a
180 hierarchical structure can be formed from simple building blocks.  The
181 simplest expression of type music is a single note.  A note is formed
182 from a pitch and an optional duration and must be specified within
183 code(\notes).  See Section ref(notedesc) for details.  More
184 complicated expressions of type music are formed by surrounding a
185 sequence of expressions of type music with braces code({) and code(})
186 or with angle brackets code(<) and code(>).  Items appearing in braces
187 will be treated as serial. Items in angle brackets will be
188 simultaneous.  So for example code({ c e g }) represents an arpeggio
189 and code(< c e g >) represents a chord.  These items can be nested any
190 way you like.  This simple example shows how three chords can be
191 expressed in two different ways:
192 mudela(fragment,verbatim,center)(
193 \notes<{a b  c'}{c' d' e'}{e' f' g'}>
194 \notes{<a c' e'><b  d' f'><c' e' g'>}
195 )
196
197 )
198
199
200 COMMENT(
201 Compound types are built up from the simple types.  The compound types
202 are: arglist, assignlist and musiclist.  An arglist is a
203 white space separated list of integers, reals and or strings surrounded
204 by braces code({) and code(}).  An assignlist is a list of 
205 identifier assignments, which have the form var(key)code(=)var(value).
206 A statement in Mudela has one of three forms:
207 verb(\keyword argument
208 \keyword argument1 argument2 ... ;
209 string=value)
210 )
211
212 subsect(Identifiers)
213
214 Identifiers allow names to be assigned to constants, music, or other
215 Mudela structures.  To assign an identifier you use
216 var(name)=var(value) and to refer to an identifier, you preceed its
217 name with a backslash: code(\)var(name).  It is legal to redefine an
218 identifier in terms of its old value: code(foo = \foo * 2.0).
219 Identifier assignments must appear at the top level in the Mudela
220 file.
221
222 An identifier can be created with any string for its name, but you
223 will only be able to refer to identifiers whose names begin with a
224 letter and are entirely alphanumeric.  It is also impossible to refer
225 to an identifier whose name is the same as the name of a keyword.  The
226 following words are keywords:
227 verb(absdynamic    grouping       mm              relative     symboltables
228 accepts       header         musicalpitch    remove       table
229 alternative   in             name            repeat       tempo
230 bar           include        notenames       scm          time
231 cadenza       key            notes           scmfile      times
232 clef          keysignature   paper           score        translator
233 cm            lyrics         partial         script       transpose
234 consists      maininput      penalty         shape        type
235 duration      mark           property        skip         version
236 font          midi           pt              spandynamic)
237
238 The right hand side of an identifier assignment is parsed completely
239 when the assignment is made.  It therefore must have any context
240 specified in the definition.  For example, you must write
241 code(foo=\notes{a8 b c}) rather than code(foo={a8 b c}).  Even though
242 the context is specified in the definition, you must refer to the
243 identifier inside the correct context:
244 verb(foo = \paper{ linewidth = 6.0\in; }
245 \score{
246   \notes{ ... }
247   \paper{ \foo }
248 })
249 If code(\foo) is used here without the surrounding code(\paper) then
250 an error will result.  Note however that the following is acceptible
251 verb(foo = \notes { ... }
252 \score{ \foo })  
253 It is not necessary to specify code(\notes).
254
255 Identifiers can be set equal to integers, reals, strings, music,
256 durations (specified with code(\duration)), note ornaments (specified
257 with code(\script), dynamics commands, or code(:)), note name tables
258 (specified with code(\notenames), translator definitions, the
259 code(\paper) block, the code(\midi) block or the code(\score) block.
260 When identifiers are used for translators, the code(\paper),
261 code(\midi), and code(\score) blocks, they may only be referred to as
262 the first item in a block.  So code(\paper{\one \two}) is illegal
263 because the identifier code(\two) is not the first thing in the block.
264 Unlike other identifier definitions, translator identifier definitions
265 can only appear within code(\midi) or code(\paper) blocks.  See
266 Section ref(translators) for more information.
267
268
269 COMMENT(
270 subsect(Hierarchical structures)
271
272 The general structure consists of declarations:
273 verb(IDENTIFIER = \TYPE{
274         <type specific data>
275 })
276 and instantiations:
277
278 verb(\TYPE{ <type specific data> })
279
280 (Currently, code(\score) is the only type that can be instantiated
281 at top level.)
282
283 Most instantiations that use an IDENTIFIER are specified as follows:
284
285 verb(\TYPE{ \IDENTIFIER [...] })
286
287 Some exceptions on this rule have been made to prevent inputting
288 Mudela becoming tedious
289 )
290
291
292 subsect(Modes)
293 label(modes)
294
295 To simplify different aspects of music definition (entering the notes
296 and manipulating them) Mudela has three different input modes which
297 affect how unquoted strings are interpreted.
298 In each mode, words are identified on the input.  If code("word") is
299 encountered, it is treated as a string.  If code(\word) is
300 encountered it is treated as a keyword or as an identifier.  The
301 behavior of the modes differs in two ways: different modes treat
302 unquoted words different, and different modes have different rules for
303 deciding what is a word.  
304
305 description(
306
307 dit(Normal mode)
308 At the start of parsing, Mudela is in normal mode.
309 In normal mode, a word is an alphabetic character followed by
310 alphanumeric characters.  If code(word) is encountered on the input it
311 is treated as a string. 
312
313 dit(Note mode) Note mode is introduced by the keyword
314 code(\notes).  In Note mode, words can only contain alphabetic
315 characters.  If code(word) is encountered, LilyPond first checks for a
316 notename of code(word).  If no notename is found, then code(word) is
317 treated as a string.  If you mistype a notename, the parser will most
318 likely complain that you should be in code(\lyrics) mode to do lyrics. 
319
320 dit(Lyric mode) Lyrics mode is introduced by the keyword
321 code(\lyrics).  This mode is has rules that make it easy to include
322 punctuation and diacritical marks in words.  A word in Lyrics mode
323 begins with: an alphabetic character, code(_),
324 code(?), code(!), code(:), code('), 
325 the control characters code(^A) through code(^F), code(^Q) through
326 code(^W), code(^Y), code(^^), any 8-bit character with ASCII code over
327 127, or a two character combination of a backslash followed by one
328 of code(`), code('), code(") or code(^).  
329 Subsequent characters of a word can be any character that is not a
330 digit and not white space.  One important consequence of this is that
331 a word can end with code(}), which may be confusing if you thought the
332 code(}) was going to terminate lyrics mode.  Any code(_) characters
333 which appear in an unquoted word are converted to spaces, providing a
334 mechanism for introducing spaces into words without using quotes.  
335 Quoted words can also be used in lyrics mode to specify words that
336 cannot be specified with the above rules.  Here are some examples.
337 Not all of these words are printable by TeX().  
338 verb(a&@&@&TSI|{[    % a word
339 \'afoo}         % a word
340 1THtrhortho     % not a word because it starts with a digit
341 ``Hello''       % not a word because it starts with `
342 Leise DOEXPAND(Fl\)DOEXPAND("u\)ss{}teren meine Sapfe       % 4 words
343 _ _ _ _         % 4 words, each one a space
344 ))
345
346 It is possible to create words that break the rules by prefixing them with the
347 dollar sign code($).  Regardless of the context, a word beginning with code($)
348 extends until the next white space character.  Such words can contain numbers
349 (even in Note mode), or other forbidden characters.  The dollar sign can be
350 used to create and access identifiers that could not otherwise be used.  
351
352 COMMENT(
353 These modes are of a lexical nature. Normal and Note mode largely
354 resemble each other, save the possibility of entering Reals, 
355 meaning of code(_) and the resolution of words
356
357 What's this about reals?  When can you enter them or not enter them?)
358
359
360 sect(Note Description)
361 label(notedesc)
362
363 subsect(Basic Note Specification)
364
365 A note specification has the form 
366 var(pitch)[var(octavespec)][code(!)][code(?)][var(duration)].
367 The pitch of the note is specified by the note's name.  
368
369 LilyPond has predefined note names for various languages.  The default
370 names are the Dutch note names.  The notes are specified by the
371 letters code(c) through code(b), where code(c) is an octave below
372 middle C and the letters span the ocatave above that C.  
373 In Dutch, a sharp is formed by adding
374 code(-is) to the end of a pitch name.  A flat is formed by adding code(-es).
375 Double sharps and double flats are obtained by adding code(-isis) or
376 code(-eses).  
377 Lily has predefined sets of notenames
378 for various nop(languages).  See Section ref(notelang) for details.
379 Rests are specified with the note name code(r) or code(R).  
380 There is also a note name code(s) which produces a nonprinting note of the
381 specified duration.
382
383 The optional octave specification takes the form of a series of single
384 quote 
385 code(') characters or a series of comma code(,) characters.  Each
386 code(') raises the pitch by one octave; each code(,) lowers the pitch
387 by an octave.  
388
389 mudela(fragment,verbatim,center)(
390 c' d' e' f' g' a' b' c''
391 )
392
393 mudela(fragment,verbatim,center)(
394 cis' dis' eis' fis' gis' ais' bis'
395 )
396
397 mudela(fragment,verbatim,center)(
398 ces' des' es' fes' ges' as' bes'
399 )
400
401 mudela(fragment,verbatim,center)(
402 cisis' eisis' gisis' aisis' beses'
403 )
404
405 mudela(fragment,verbatim,center)(
406 ceses' eses' geses' ases' beses'
407 )
408
409 Whenever a C-sharp is desired,  you must specify a C-sharp.  LilyPond
410 will determine what accidentals to  typeset  depending on the  key and
411 context.   
412 A reminder accidental can be forced by
413 using the  optional exclamation mark `code(!)'
414 on the pitch.
415 A cautionary accidental, i.e., an accidental within paranthesis
416 can be obtained using the optional question mark `code(?)' on the pitch.
417 mudela(fragment,verbatim,center)(
418 cis' d' e' cis'  c'? d' e' c'!  
419 )
420
421
422 Durations are entered as their reciprocal values
423 mudela(fragment,verbatim,center)(
424 a'1 a'2 a'4 a a'8 a a'16 a'32 a'64
425 )
426 mudela(fragment,verbatim,center)(
427 r1 r2 r4 r8 r16 r32
428 )
429
430 If the duration is omitted then it is set equal to the previous
431 duration.  If there is no previous duration, then a quarter note is
432 assumed.  
433 The duration can be followed by a dot code(.) to obtain dotted note
434 lengths.  
435 mudela(fragment,verbatim,center)(
436 a'4. b'4.
437 )
438
439 In addition, the duration can be followed by a multiplier which is
440 introduced with the asterisk code(*) and can be an integer or a
441 fraction.  The multiplier changes the duration that LilyPond uses
442 internally for the note, but for notes it 
443 does not change the symbol that is printed.  
444 mudela(fragment,verbatim,center)(
445 c'4*2 c'4*2 d'8*2/3 d'8*2/3
446 )
447 For long rests with durations equal to an integer number of whole notes,
448 LilyPond produces output that indicates the duration of the rest.  If you use
449 code(r) then one rest symbol will be printed and several measures left blank.
450 If you use code(R) then all of the measure will be filled with whole rests.
451 If you set the code(Score.SkipBars) property, then only one measure will be
452 printed; with code(R), a number indicating the length of the rest will be
453 displayed.  
454 mudela(fragment,verbatim,center)(
455 r1*3 R1*3
456 \property Score.SkipBars=1
457 r1*3 R1*3)
458
459 Extra long notes can be obtained using the code(\breve) and
460 code(longa) durations:
461 mudela(fragment,verbatim,center)(
462 c'\breve gis'\longa
463 )
464
465
466 subsect(Note Spanners: Beams, Tuplets, Slurs and Ties)
467
468 A beam is specified by surrounding the beamed notes with brackets
469 code([) and code(]).  
470 mudela(fragment,verbatim,center)(
471 [a'8 a'] [a'16 a' a' a']
472 )
473 If you want to put beams over chords, you will find that the obvious
474 construction does not work.  You must do the following:
475 mudela(fragment,verbatim,center)(<[a'8 c''> b' <c'' e''> <a' c'']>)
476 The bracket characters must appear immediately adjacent to a note. 
477
478 In order to create triplets, you must use a length multiplier after
479 the brackets.  An open bracket code([) followed by a fraction
480 instructs LilyPond to print a number over the beam, and it also
481 starts multiplying all note lengths by the fraction.  The closing
482 bracket code(]) should be followed by the fraction code(1/1) in order
483 to restore normal note lengths.  To create a triplet without a beam,
484 place a backslace code(\) before the opening and closing brackets. 
485
486 For example, in an ordinary triplet, the notes have duration 2/3 as
487 long as normal. 
488 mudela(fragment,verbatim,center)(
489 [2/3 a'8 a' a' ]1/1 \[2/3 b'4 b' b'\]1/1
490 )
491
492 There is a shorthand that can be used when you 
493 want notes lengths multiplied by 2/n.  
494 The 2 can be omitted after the open bracket
495 and the first 1 can be omitted after the closing bracket.  
496 mudela(fragment,verbatim,center)(
497 [/3 b'8 b' b' ]/1  \[/3 a'4 a'8\]/1
498 )
499
500 COMMENT(This next bit needs to be fixed...or the language needs to be
501 fixed.)
502
503 Here is a combination
504 mudela(fragment,verbatim,center)(
505 [/3 a'8 a'16 a'] a'8 \]
506 )
507
508 Another type of spanner is the slur.  Slurs connects chords and try to
509 avoid crossing stems.  A slur is started with code(CHAR(40)) and stopped with
510 code(CHAR(41)).  The starting code(CHAR(40)) appears to the right of the first note
511 in the slur.  The terminal code(CHAR(41)) apppears to the left of the first
512 note in the slur.  This makes it possible to put a note in slurs from
513 both sides:
514 mudela(fragment,verbatim,center)(
515 f'()g'()a' [a'8 b']( a'4 g' )f'
516 )
517
518 A tie connects two adjacent note heads.  When used with chords, it
519 connects all of the note heads.  Ties are indicated using the tilde symbol
520 code(~) by analogy with TeX()'s tie which connects words.  For ties
521 between chords, the input convention is somewhat peculiar.  You cannot
522 write code(<c g>~<c g>), but rather must put the tilde after
523 a note within the first chord.  
524
525 mudela(fragment,verbatim,center)(
526 e' ~ e' <c'~ e' g'><c' e' g'>
527 )
528
529
530 subsect(Note Ornaments)
531
532 A variety of symbols can appear above and below notes to indicate
533 different characteristics of the performance.  
534 These symbols can be
535 added to a note with `var(note)code(-\)var(name)'.  Numerous different
536 symbols are defined in file(script.ly).  Each symbol is defined using
537 the code(\script) keyword which specifies where symbols appear.
538 Symbols can be forced to appear above the note by writing
539 `var(note)code(^\)var(name)', and they can be forced to appear below
540 by writing `var(note)code(_\)var(name)'.  Here is a chart showing
541 symbols above notes, with the name of the corresponding symbol
542 appearing underneath.  
543
544 mudela()(
545 \score{
546  < \notes{ c''-\accent c''-\marcato c''-\staccatissimo f'-\fermata 
547           c''-\stopped c''-\staccato c''-\tenuto c''-\upbow c''-\downbow
548           c''-\lheel c''-\rheel  c''-\ltoe  c''-\rtoe  c''-\turn
549           c''-\open  c''-\flageolet  c''-\reverseturn 
550           c''-\trill
551           c''-\prall c''-\mordent c''-\prallprall  c''-\prallmordent
552           c''-\upprall c''-\downprall c''-\thumb}
553   \type Lyrics \lyrics{  
554         accent      marcato      staccatissimo fermata stopped
555            staccato tenuto upbow downbow lheel rheel ltoe rtoe  turn
556            open  flageolet reverseturn 
557              trill  prall
558            mordent prallprall prallmordent uprall  downprall thumb}>
559   \paper{linewidth  = 5.875\in;
560          indent = 0.0;
561         }
562 }
563 )
564
565 COMMENT( The following are defined in script.ly but do not work:
566
567 portato lbheel rbheel lbtoe rbtoe lfheel rfheel lftoe rftoe )
568
569 In addition, it is possible to place arbitrary strings of text or
570 TeX() above or below notes by using a string instead of an identifier:
571 `code(c^"text")'.  Fingerings can be placed by simply using digits.
572 All of these note ornaments appear in the printed output but have no
573 effect on the MIDI rendering of the music.
574
575 To save typing,  a few common symbols  can  be  abbreviated  with
576 single characters:
577 mudela()(
578 \score{ \notes {
579         \property Voice.textstyle = typewriter
580         c''4-._"c-." s4
581         c''4--_"c-{}-"  s4
582         c''4-+_"c-+" s4
583         c''4-|_"c-|" s4
584         c''4->_"c->"  s4
585         c''4-^_"c-\\^{ }"  s4 }
586         \paper { linewidth = 12.\cm; }})
587
588 Dynamic marks are specified by using an identifier after a note
589 without a dash: code(c4 \ff).  Note that this syntax is inconsistent
590 with the syntax for other types of ornaments.  The available dynamic
591 marks are: code(\ppp), code(\pp), code(\p), code(\mp), code(\mf),
592 code(\f), code(\ff), code(\fff), code(\fp), code(sf), and code(\sfz).
593
594 A crescendo mark is started with code(\cr) and terminated with
595 code(\rc).  A decrescendo mark is started with code(\decr) and
596 terminated with code(\rced).  There are also shorthands for these
597 marks.  A crescendo can be started with code(\<) and a decrescendo can
598 be started with code(\>).  Either one can be terminated with code(\!).
599 Note that code(\!) must go before the last note of the dynamic mark whereas
600 code(\rc) and code(\rced) go after the last note.  Because these marks are
601 bound to notes, if you want to get several marks during one note, you must use
602 spacer notes. 
603 mudela(fragment,verbatim,center)(
604 c'' \< \! c''   d'' \decr e'' \rced 
605 < f''1 {s4 \< \! s4 \> \! s2 } >)
606
607 Tremolo marks can be printed by a note by adding code(:)[var(length)]
608 after the note.  The length must be at least 8.  A var(length) value
609 of 8 gives one line across the note stem.  
610 If the length is omitted,
611 then the last value is used, or the value of the code(Abbrev)
612 property if there was no last value.  To place tremolo marks in
613 between two notes, begin with code([:)var(length) and end with code(]).
614 The tremolo marks will appear instead of beams.  Putting more than two
615 notes in such a construction will produce odd effects. 
616 mudela(fragment,verbatim,center)(
617 c'2:8 c':32 [:16 e'1 g'] [:8 e'4 f']
618 )
619
620 COMMENT(
621 Is the last paragraph correct?  Is it called "tremolo"?  Why is
622 "abbreviation" used?  (What is the unabreviated form?)
623
624
625 mudela(fragment,verbatim,center)(
626 c'4:32 [:16 c'8 d'8]
627 )
628
629 )
630
631
632 sect(Other Ways to Enter Pitches)
633
634 subsect(Pitch Names in Other Languages)
635 label(notelang)
636
637 The pitch names can be easily redefined using the code(\notenames) command.
638 Note name definitions have been provided in various languages.  
639 Simply include the language specific init file.  For example:
640 code(\include "english.ly").  The available language files and the names
641 they define are:
642
643 verb(                        Note Names               sharp       flat
644 nederlands.ly  c   d   e   f   g   a   bes b   -is         -es
645 english.ly     c   d   e   f   g   a   bf  b   -s/-sharp   -f/-flat
646 deutsch.ly     c   d   e   f   g   a   b   h   -is         -es
647 norsk.ly       c   d   e   f   g   a   b   h   -iss/-is    -ess/-es
648 svenska.ly     c   d   e   f   g   a   b   h   -iss        -ess
649 italiano.ly    do  re  mi  fa  sol la  sid si  -d          -b)
650
651 subsect(Relative Pitch Specification)
652 label(relative)
653
654 One very common error when entering music is to place notes in the wrong
655 octave.  One way to avoid being confused by large numbers of octave changing
656 marks is to use
657 the code(\relative) keyword. 
658 Music which appears within code(\relative) is
659 interpreted differently.  The octave of a note is determined by making it as
660 close to the previous note as possible.  The octave changing marks code(') and
661 code(,) can then be added to raise or lower this note by octaves.  You have to
662 specify a starting pitch because the first note of a list has no predecessor.  
663
664 mudela(fragment,verbatim,center)(
665 \relative c'' { c d b c, d b c' d 
666                 b c,, d b }
667 )
668
669 When the preceeding item is a chord, the first note of the chord is used to
670 determine the first note of the next chord.  But other notes within the second
671 chord are determined by looking at the immediately preceeding note.  
672
673 mudela(fragment,verbatim,center)(
674 \relative c' { <c e g> 
675     <c' e g> <c, e' g> }
676
677
678 The code(\relative) keyword can only appear in music, so there must be a
679 surrounding code(\notes) keyword which does not appear in the fragments shown
680 above.  Also note that if the music passed to a code(\relative) keyword 
681 contains a code(\transpose) keyword, the tranposed music will not be
682 processed in relative mode.  An additional code(\relative) must be placed
683 inside the code(\transpose).  
684
685
686 subsect(Tranposition of Pitches)
687 label(transpose)
688
689 Another way to modify the meaning of the note names is to use the
690 code(\transpose) keyword.  This keyword allows you to transpose music.
691 To use transposition, specify the pitch that middle C should be tranposed to.
692 It is important to distinguish between enharmonic pitches as they can produce
693 different transpositions.  To transpose up half a step, for example, either 
694 code(\transpose cis') or code(\transpose des') will work.  But the first
695 version will print sharps and the second version will print flats.  
696 In this example, a scale in the key of E is transposed to F, or to E-sharp 
697 with odd results.
698 mudela(fragment,verbatim,center)(
699 \relative c' { \key e; 
700   e fis gis a b cis dis e }
701 )
702 mudela(fragment,verbatim,center)(
703 \transpose des' \relative c' { \key e; 
704    e fis gis a b cis dis e }
705 )
706 mudela(fragment,verbatim,center)(
707 \transpose cis' \relative c' { \key e; 
708     e fis gis a b cis dis e }
709 )
710 If you want to use both code(\transpose) and code(\relative), then you must use
711 code(\transpose) first.  Any code(\relative) keywords that are outside the 
712 code(\transpose) have no effect on notes that appear inside the
713 code(\transpose).  
714
715 sect(Lyrics)
716
717 Lyrics are entered like notes, with pitches replaced
718 by text.  For example code(Twin-4 kle4 twin-4 kle4) enters four
719 syllables, each with quarter note duration.  Note that the hyphen has
720 no special meaning for lyrics, and does not introduce special symbols.
721 See Section ref(modes) for a description of what is interpreted as a lyric.
722
723 In order to instruct LilyPond to write lyrics underneath the
724 staff, you must enter the lyrics context with code(\type Lyrics).  
725 Lyrics should be entered in lyrics mode which is entered with code(\lyrics).
726
727 Spaces can be introduced into a lyric either by using quotes (code("))
728 or by using an underscore without quotes: code(He_could4 not4).  All
729 unquoted underscores are converted to spaces.  Here is a full example: 
730 mudela(verbatim)(\score{
731   <  \notes \transpose c'' {c d e c | c d e c | e f g'2 | 
732                               e'4 f g'2 \bar "|."; }
733      \type Lyrics \lyrics { 
734               DOEXPAND(Fr\)`e-4 re Ja- que DOEXPAND(Fr\)`e- re Ja- que
735               Dor- mez vous?2 Dor-4 mez vous?2  }
736   >
737 })
738
739 COMMENT(
740 URG
741                         Fr\`e-4 re Ja- que
742                         Fr\`e- re Ja- que
743 Why does this warrant an URG?
744 )
745
746
747 COMMENT(
748
749 sect(Chords and Voices)
750
751 Here's a simple chord
752 mudela(fragment,verbatim,center)(
753 <c e g>
754 )
755
756 here are a few
757 mudela(fragment,verbatim,center)(
758 <
759         { c'()d'()c' }
760         { e'()f'()e' }
761         { g'()a'()g' }
762 >
763 )
764
765 and similarly voices
766 mudela(fragment,verbatim)(
767 <
768         { \voiceone c'4 g' c' g' }
769         { \voicetwo c2 g2 }
770 >
771 )
772
773 )
774
775 sect(Time)  
776
777 LilyPond aligns all musical objects according to the amount of time
778 they occupy.  All of these objects have a duration.  When music is
779 written sequentially using braces the duration is the sum of the 
780 durations of the elements.  When music is stacked into simultaneous music 
781 using angle
782 brackets, the duration is the maximum of the durations of the
783 elements.  
784
785 Because LilyPond knows the durations of all musical elements, the time
786 signature enables LilyPond to draw bar lines automatically.  The time
787 signature is specified with the code(\time) keyword: code(\time 3/4).
788 If no time signature is given, LilyPond assumes 4/4.  The automatic
789 generation of bar lines can toggled with the code(\cadenza) keyword,
790 and an incomplete measure at the start of the music can be created
791 using the code(\partial) keyword: code(\partial 8*2;) creates a
792 starting measure lasting two eighth notes.
793
794 In order to help with error checking, you can insert bar markers in
795 your music by typing code(|).  Whenever LilyPond encounters a code(|)
796 that doesn't fall at a measure boundary, she prints a warning message.
797
798 Rhythmic grouping is  a concept closely associated with this. 
799 A default grouping is selected for the chosen time signature.  
800 The default consists of combinations of 2 and 3 beats with as many
801 groups of 3 as possible, and the groups of 3 coming first.  For
802 example, 4/4 is divided into 2+2 and 8/8 is divided into 3+3+2.  This
803 default grouping can be changed using the \grouping keyword which
804 takes a list of durations to specify the grouping. 
805
806
807 COMMENT(
808 sect(Composition: forming bigger structures)
809 label(sec:grammar)
810
811 The computer savy user may be interested in a more formal
812 specification.  We can capture what have learned about forming
813 sentences in Mudela in a context-free grammar.
814
815 latexcommand(\smallskip)
816
817 table(2)(lll)(
818         row(cell(em(Music))cell(: em(Note)))
819         row(cell()cell(code(|) em(Rest)))
820         row(cell()cell(code(|) code({) em(MusicList) code(})))
821         row(cell()cell(code(|) code(<) em(MusicList) code(>)))
822         row(cell()cell(code(|) em(Command)))
823         row(cell()cell(code(|) code(\type) em(string) code(=) em(string)  em(Music)))
824         row(cell()cell(;))
825         row(cell(em(MusicList))cell(: em(empty)))
826         row(cell()cell(code(|)  em(MusicList)  em(Music)))
827         row(cell()cell(;))
828 )
829
830 latexcommand(\smallskip)
831
832 In mathematics you can form expressions by combining expressions,
833 which are ultimately some kind of atom or terminal symbol.  The same
834 goes for Mudela: there are some basic building blocks, and by
835 combining those you create complex music.
836
837 You can combine music in three ways:
838 itemize(
839 it()If you enclose a sequence of music-elements in braces ( code({)
840     and code(}) ), then you form another kind of music called
841 sequential music
842     with those pieces.
843   The duration of sequential composition is the sum of the durations of its elements
844   verb(
845       { c c g g a a g2 }      % twinkle twinkle
846       { { c c g g} { a a g2 } }
847   )
848 it()You can stack music by enclosing a sequence of music elements
849     with code(<) and code(>). This is called simultaneous music.  
850     The duration of a simultaneous composition is the maximum of the durations 
851     of its elements Example:
852     verb(
853         <a4 {cis8 cis8} e'4>      % a-major chord
854     )
855 it()You can form music by transposing music:
856     verb(
857     \transpose  
858         d       % from c to the d that's almost one octave down
859                 { e4 f4 }       % the horizontal music
860 )
861 it()verb(\type)
862 it()verb(\property)
863 it()verb(\translator)
864 it()verb(\relative)
865 )
866
867 Of course you can also combine these three mechanisms.
868 verb(
869 { c <c e> <c e g> <c e g \transpose d' dis > }  % 4 increasing chords
870 )
871
872 )
873
874
875 sect(Keywords)
876
877 Keywords sometimes appear alone, but usually they require arguments.
878 A keyword may have a single argument, a sequence of arguments in
879 braces, or a sequence of arguments separated by spaces and terminated
880 by a semicolon.  The precise syntax of each keyword is shown below.
881 Keywords must appear in the right context.  If you use a keyword in
882 the wrong place, even if the usage is syntactically correct, you will
883 get the message ``parse error'' from LilyPond.
884
885
886 description(
887
888 dit(code(\absdynamic) code({) var(code) code(})) Internal keyword for
889 printing dynamic marks such as $f$ under music.  The parameter
890 var(code) is unsigned and specifies the dynamic mark to print.
891 Normally you should use the more user friendly abbreviations defined
892 in the init file file(dynamic.ly).
893
894 dit(code(\accepts) var(string)code(;)) This keyword can appear only within a
895 code(\translator) block.  It specifies what contexts are allowed with the
896 context that is being defined.  See Section ref(translators).  
897
898 dit(code(\alternative) code({) var(music1) var(music2) ... code(}))
899 Specifies alternative endings.  Must come after a code(\repeat) keyword.  
900
901 dit(code(\bar) var(bartype)code(;)) Prints a special bar symbol, or at
902 measure boundaries, replaces the regular bar symbol with a special
903 symbol.  The argument var(bartype) is a string which specifies the
904 kind of bar to print.  Options are code(":|"), code("|:"),
905 code(":|:"), code("||"), code("|."), code(".|"), or code(".|.").
906 These produce respectively a right repeat, a left repeat, a double
907 repeat, a double bar, a start bar, an end bar, or a thick double bar.
908 If var(bartype) is set to code("empty") then nothing is printed, but a
909 line break is allowed at that spot.  Note that the printing of special bars
910 has no effect on the MIDI output.
911
912 dit(code(\cadenza) var(togglevalue)code(;)) Toggles the automatic generation
913 of bar lines.  If var(togglevalue) is 0 then bar line generation is
914 turne off.   If var(togglevalue) is  1  then a bar is  immediately
915 printed and bar generation is turned  on.
916
917 dit(code(\clef) var(clefname)code(;)) Allowed only in music.  
918 Sets the current clef.  The argument is
919 a string which specifies the name of the clef.  Several clef names are
920 supported.  If code(_8) or code(^8) is added to the end of a clef
921 name then the clef lowered or raised an octave will be generated.  
922 Here are the supported clef names with middle C shown in each clef:
923 mudela(center)(
924 \score{
925   \notes{ \cadenza 1;
926    %\property Voice.textstyle = typewriter
927    \clef subbass; c'4-"\kern-10mm subbass" 
928            \clef bass;    c'4^"\kern -8mm bass"
929            \clef baritone; c'4_"\kern -10mm baritone"
930            \clef varbaritone; c'4^"\kern -10mm varbaritone"
931            \clef tenor;     c'4_"\kern -10mm tenor"
932            \clef "G_8";   c'4^"\kern -6mm G\_8"  }  
933    \paper{ linewidth= 4.5 \in; }
934 }
935 )
936 mudela(center)(
937 \score{
938   \notes{\cadenza 1; \clef alto;    c'4_"\kern -10mm alto"
939            \clef scarlatti;    c'4_"\kern -4mm scarlatti"
940            \clef mezzosoprano; c'4^"\kern -10mm mezzosoprano"
941            \clef soprano;  c'4_"\kern -10mm soprano"
942            \clef treble;  c'4^"\kern -6mm treble"
943            \clef french;  c'4_"\kern -10mm french" }  
944   \paper{ linewidth= 4.5 \in; }
945 }
946 )
947 The treble  clef  can also  be obtained using  the  names code(G) or
948 code(violin).  The bass clef is also available by code(\clef  F). 
949
950 dit(code(\cm)) Specify a dimension in centimeters. 
951
952 dit(code(\consists) var(string)code(;)) This keyword can appear only within a
953 code(\translator) block.  It specifies that an engraver or performer named
954 var(string) should be added to the translator.  See Section
955 ref(translators).
956
957 dit(code(\duration) code({) var(length) var(dotcount) code(})) Specify note
958 duration.  The parameter var(length) is the negative logarithm (base
959 2) of duration: 1 is a half note, 2 is a quarter note, 3 is an eighth
960 note, etc.  The number of dots  after  the  note is given by
961 var(dotcount). 
962
963 dit(code(\font) var(string)) Internal keyword.  Used within
964 code(\symboltables) to specify the font.
965
966 dit(code(\grouping) var(durationseq)code(;))  Sets  the  metric structure of
967 the measure.  Each argument specifies the duration of one metric unit.
968 For example, code(\duration 16*5;) specifies a grouping of five beats
969 together in 5/16 time.  The default grouping is to have as many groups
970 of 3 as possible followed by groups of two.  
971
972 dit(code(\header) code({) var(key1) = var(val1); var(key2) = var(val2); ... code(}))
973 Specifies information about the music.  A header should appear at the
974 top of the file describing the file's contents.  If a file has
975 multiple code(\score) blocks, then a header should appear in
976 each score block describing its contents.  Tools like code(ly2dvi) can
977 use this information for generating titles.   Key values that are used
978 by ly2dvi are: title, subtitle, composer, opus, poet, instrument,
979 metre, arranger, and piece.  
980
981 dit(code(\in)) Specify a dimension in inches.  
982
983 dit(code(\include) var(file)) Include the specified file.  The
984 argument var(file) is a string.  The full filename including the
985 file(.ly) extension must be given, and the filename must be quoted.
986 (An unquoted string will not work here.)
987
988 dit(code(\key) var(pitch) var(type) code(;)) Change the key signature. 
989 var(type) should be code(\major) or code(\minor) to get
990 var(pitch)-major or var(pitch)-minor, respectively. The second
991 argument is optional, the default is major keys. 
992 The var(\type) argument can also be given as an integer, which tells
993 the number of semitones that should be added to the pitch given in the
994 subsequent code(\key) commands to get the corresponding major key,
995 e.g. code(\minor) is defined as 3.
996
997 dit(code(\keysignature) var(pitchseq)code(;))
998 Specify an arbitrary key signature.  The pitches from var(pitch) will
999 be printed in the key signature in the order that they appear on the list.
1000
1001 dit(code(\lyrics) var(lyriclist)) Parse var(lyriclist) in lyrics mode.
1002
1003 dit(code(\maininput)) Internal command.  This command is used for creating init
1004 files like file(init.fly) that read the user file into the middle of another
1005 file.  Using it in a user file will lead to an infinite loop.
1006         
1007 dit(code(\mark) var(unsigned)code(;) or code(\mark) var(string)code(;)) 
1008 Allowed in music only.  Prints a mark over or under (?) the staff.
1009 You must add code(Mark_engraver) to the Score context and it only
1010 seems to work if the mark appears at the beginning of a line.
1011
1012 dit(code(\midi) var(statementlist)) Appears in a score block to
1013 indicate that musical output should be produced and to set output
1014 parameters.  Can also appear at the top level to set default output
1015 parameters.  See code(\tempo).
1016
1017 dit(code(\mm)) Specify a dimension in millimeters. 
1018
1019 dit(code(\musicalpitch) code({) var(octave) var(note) var(shift) code(})) 
1020 Specify note pitch.  The octave is specified by an integer,
1021 zero for the octave containing middle C.  The note is a number from 0
1022 to 7, with 0 corresponding to C and 7 corresponding to B.  The shift
1023 is zero for a natural, negative to add flats, or positive to add
1024 sharps.
1025
1026 dit(code(\name) var(context)code(;)) Appears within code(\translator) to
1027 specify the name of the context that the translator handles. See Section
1028 ref(translators).   
1029
1030 dit(code(\notenames) var(assignmentlist)) Define new note names.  This
1031 keyword can appear only at the top level. 
1032 The argument is a list of definitions of  the form
1033 var(name) = var(pitch),  where var(pitch) is specified with the
1034 code(\musicalpitch) keyword.  
1035
1036 dit(code(\notes) var(music)) Enter note mode and process the
1037 specified music. 
1038
1039 dit(code(\)code(output) var(string)code(;)) Generate a parse error.
1040
1041 dit(code(\paper) var(statmentlist)) 
1042 Appears in a score block to indicate that the music should be printed
1043 or to set output parameters.  Can also appear at the top level to set
1044 default output parameters for all of the score blocks.  
1045 The var(statmentlist) contains statements that change features of the
1046 output.  See Section ref(paper).  
1047
1048 dit(code(\partial) var(duration)code(;)) Specify that the first measure of
1049 the music lasts only for the specified duration.
1050
1051 dit(code(\penalty) code(=) var(int)code(;)) Allowed only in music.
1052 Discourage or encourage line breaks.  See identifiers code(\break) and
1053 code(\nobreak) in Section ref(ident). 
1054
1055 dit(code(\property) var(contextname)code(.)var(propname) code(=) var(value))
1056 Sets the var(propname) property of the context var(contextname) to the
1057 specified var(value).  All three arguments are strings.  Depending on
1058 the context it may be necessary to quote the strings or to leave space
1059 on both sides of the dot. 
1060
1061 dit(code(\pt)) Specify a dimension in points. 
1062
1063 dit(code(\relative) var(pitch) var(music)) Processes the specified
1064 var(music) in relative pitch
1065 mode.  In this mode, the octave of a pitch is chosen so that the
1066 pitch is closest to the preceeding pitch.  
1067 The argument var(pitch) is
1068 the starting pitch for this comparision.  In the case of chords, the
1069 first note of a chord is used as the base for the first pitches in the next
1070 chord.  See Section ref(relative).
1071
1072 dit(code(\remove) var(string)code(;)) Can appear only in a
1073 code(\translator) block.  Specifies that a performer or engraver named
1074 var(string) should be removed.  See Section ref(translators).  
1075
1076 dit(code(\repeat) var(count) code({) var(music) code(}))
1077 Repeats the specified
1078 music var(count) times.  Alternative endings can be specified by adding a
1079 code(\alternative) keyword after the code(\repeat).  
1080
1081 dit(code(\scm) var(scheme)code(;)) Embeds specified Scheme code.  
1082
1083 dit(code(\scmfile) var(filename)code(;)) Reads Scheme code from the specified
1084 file.  
1085
1086 dit(code(\score) var(statementlist)) Create a Score context.  This
1087 is the top level notation context.  
1088 COMMENT(this still needs work)
1089
1090 dit(code(\script) code({) var(name) var(instaff) var(withstem)
1091 var(location) var(invertible) var(priority) code(})) This keyword is
1092 used the initialization file(script.ly) to define the various symbols
1093 that can appear above and below notes.  The first argument is the name
1094 of the symbol.  The second argument var(instaff) is 1 if the symbol
1095 follows the notehead into the staff and 0 if the symbol stays above or
1096 below the staff lines.  The third parameter var(withstem) is 0 if the
1097 symbol's placement does not depend on the stem direction; it is 1 if
1098 the symbol should be at the stem end of the note and it is -1 if the
1099 symbol should be at the note head end of the note.  The argument
1100 var(location) is set to 1 for symbols that always appear above the
1101 staff; it is -1 for symbols that appear below the staff.  If
1102 var(invertible) is set to 1 then the symbol can be inverted; otherwise
1103 it cannot.  The last argument var(priority) sets a priority for the
1104 order of placement of several symbols on a single note.
1105
1106 dit(code(\shape) code(=) var(indent1) var(width1) var(indent2)
1107 var(width2) ... code(;)) Allowed only within code(\paper).  Each pair
1108 of var(indent) and var(width) values is a dimension specifying how far
1109 to indent and how wide to make the line.  The indentation and width of
1110 successive lines are specified by the successive pairs of dimensions.
1111 The last pair of dimensions will define the characeristics of all
1112 lines beyond those explicitly specified.
1113
1114 COMMENT(First pair of dimensions seems to be skipped.  At least it is
1115 in the example file denneboom.ly.)
1116
1117 dit(code(\skip) var(duration)code(;)) Skips the amount of time specified by
1118 var(duration).  A gap will be left for the skipped time with no notes
1119 printed.  It works in Note Mode or Lyrics Mode (but generates a
1120 mysterious error in lyrics).
1121
1122 dit(code(\spandynamic) code({) var(kind) var(toggle) code(})) Internal
1123 keyword for crescendo and decrescendo symbols.  The first parameter
1124 var(kind) is set to 1 for a crescendo and -1 for a decrescendo.  The
1125 second parameter is set to 1 to start the mark and 2 to stop it.
1126 Users should use the abbreviations which are defined in the
1127 initialization file file(dynamic.ly).
1128
1129 dit(code(\symboltables)) Internal keyword.  Used to create symbol
1130 tables.  See initialization files file(paper*.ly), file(feta*.ly), and
1131 file(table*.ly).  
1132
1133 dit(code(\table)) Internal keyword.  Used within code(\symboltables)
1134 to specify the tables.  See initialization files. 
1135
1136 dit(code(\tempo) var(duration) = var(perminute)code(;)) Used within
1137 code(\midi) or within music to specify the tempo.  For example, 
1138 `code(\midi { \tempo 4 = 76;})' requests output with 76 quarter notes
1139 per minute.  Note that if the music contains several tempo commands,
1140 only the last one is used to set the tempo for the entire MIDI output. 
1141 COMMENT(Is this true?)
1142
1143 dit(code(\time) var(numerator)code(/)var(denominator)code(;)) Change the time
1144 signature.  The default time signature is 4/4.  
1145
1146 dit(code(\times) var(numerator)code(/)var(denominator) var(music))
1147 Multiply the duration of var(music) by the specified fraction.
1148
1149 dit(code(\translator) var(statements) or code(\translator)
1150 var(context) = var(name)) The first variant appears only within
1151 code(\paper) and specifies a translator for
1152 converting music to notation.  The translator is specified with a
1153 single code(\type) statement and a series of code(\accepts), and
1154 code(\consists) statements.  See Section ref(translators). 
1155 The second variant appears in 
1156 music.  It specifies that the current the contexts
1157 contained within the specified context should be shifted to the
1158 context with the specified name.  
1159
1160 COMMENT( \translator seems like a strange name for the second
1161 operation, and is the overloading desireable? )
1162
1163 dit(code(\transpose) var(pitch) var(music)) Transposes the specified
1164 music.  Middle C is tranposed to var(pitch).  This is allowed in music only,
1165 and if it appears inside code(\relative), then any notes specified for
1166 transposition should be specified inside another code(\relative).  See Section
1167 ref(transpose).  
1168
1169 dit(code(\type) var(contexttype) [code(=) var(contextname)]
1170 var(music) or code(\type) var(translatortype)code(;)) The first
1171 variant is used only within music to create an instance of a
1172 context.  The new context can optionally be given a name.  The
1173 specified var(music) is processed in the new context. The second
1174 variant appears within a code(\translator) block and specifies the
1175 type of translator being created.
1176
1177 dit(code(\version) var(string)) Specify the version of Mudela that a
1178 file was written for.  The argument is the version number, for example
1179 code("1.0.1").  Note that the Mudela version is different from the
1180 LilyPond version.
1181
1182 )  
1183
1184
1185 sect(Notation Contexts)
1186
1187 Notation contexts provide information that appears in printed music
1188 but not in the music itself.  A new musical context is created using
1189 the code(\type) keyword: `code(\type) var(contexttype) [code(=)
1190 var(contextname)] var(music)'.  The following context types are
1191 allowed.
1192
1193 description(
1194
1195 dit(code(LyricVoice)) Corresponds to a voice with lyrics.  Handles the printing
1196 of a single line of lyrics.  
1197
1198 dit(code(Voice)) Corresponds to a voice on a staff.
1199   This context handles the conversion of noteheads,
1200   dynamic signs, stems, beams, super- and subscripts, slurs, ties and rests.
1201
1202 dit(code(Lyrics)) Typesets lyrics.  It can contain code(LyricVoice) contexts.
1203
1204 dit(code(Staff)) Handles clefs, bar lines, keys,
1205   accidentals.  It can contain code(Voice) contexts.
1206
1207 dit(code(RhythmicStaff)) A context like code(Staff) but for printing
1208 rhythms.  Pitches are ignored; the notes are printed on one line.  
1209 It can contain code(Voice) contexts. 
1210
1211 dit(code(GrandStaff)) Contains code(Staff) or code(RhythmicStaff)
1212 contexts.  It adds a brace on the left side grouping the staffs
1213 together. The bar lines of the contained staffs are connected vertically.
1214 It can contain code(Staff) contexts.
1215
1216 dit(code(StaffGroup)) Contains code(Staff) or code(RhythmicStaff)
1217 contexsts.  Adds a bracket on the left side, grouping the staffs
1218 together.  The bar lines of the contained staffs are connected vertically.
1219 It can contain code(Staff), code(RhythmicStaff), code(GrandStaff) or code(Lyrics) contexts.  
1220
1221 dit(code(ChoirStaff)) Identical to code(StaffGroup) except that the
1222 contained staffs are not connected vertically.  
1223
1224 dit(code(Score)) This is the top level notation context.  It is specified with
1225 the code(\score) keyword rather than the code(\type) command.  No
1226 other context can contain a code(Score) context.  This context handles
1227 the administration of time signatures.  It also makes sure that items
1228 such as clefs, time signatures, and key-signatures are aligned across
1229 staffs.  It can contain code(Lyrics), code(Staff),
1230 code(RhythmicStaff), code(GrandStaff), code(StaffGroup), and
1231 code(ChoirStaff) contexts.
1232
1233 )
1234
1235 The various contexts have properties associated with them.  These
1236 properties can be changed using the code(\property) command:
1237 `code(\property) var(context)code(.)var(propname) code(=) var(value)'.
1238 Properties can also be set within the code(\translator) block
1239 corresponding to the appropriate context.  In this case, they are
1240 assigned by `var(propname) code(=) var(value)'.  The settings made with
1241 code(\property) are processed after settings made in the code(\translator)
1242 block, so the code(\property) settings will override code(\translator)
1243 settings.  
1244
1245 The code(\property) keyword will create any property you specify.
1246 There is no guarantee that a property will actually be used.  If you
1247 spell a property name wrong, there will be no error message.  In order to find
1248 out what properties are used, you must search the source code 
1249 for code(get_property).  
1250 Properties that are set in one context are inherited by all of the
1251 contained contexts.  This means that a property valid for the Voice
1252 context can be set in the Score context (for example) and thus take
1253 effect in all Voice contexts.  
1254
1255 subsubsubsect(Lyrics properties)
1256
1257 description(
1258
1259 dit(code(textstyle)) Set the font for lyrics.  The available font
1260 choices are code(roman), code(italic), code(bold), code(large),
1261 code(Large), code(typewriter), and code(finger).  The code(finger)
1262 font can only display numbers.  Note also that you must be careful
1263 when using code(\property) in Lyrics mode.  Because of the way strings
1264 are parsed, either put quotes around the arguments to code(\property)
1265 or be sure to leave a space on both sides of the dot.
1266
1267 dit(code(textalignment)) Controls alignment of lyrics.  Set to code(\left)
1268 to align the left end of the lyric with the note; set to code(\right) to
1269 align the right end of the lyric with the note.  Set to code(\center) to
1270 align the center of the lyric with the note.  
1271
1272 )
1273
1274 subsubsubsect(Voice properties)
1275
1276 description(  
1277
1278 dit(code("midi_instrument")) Sets the instrument for MIDI output.  This
1279 property name must be quoted because of the embedded underscore.  If
1280 this property is not set then LilyPond will use the code(instrument)
1281 property.  This must be set to one of the strings on the list of MIDI
1282 instruments that appears in Section ref(midilist).  If you use a
1283 string which is not listed, LilyPond will silently substitute piano. 
1284
1285 dit(code(transposing)) Tranpose the MIDI output.  Set this property to
1286 the number of half-steps to transpose by.
1287
1288 dit(code(ydirection)) Determines the direction of stems, subscripts,
1289 beams, slurs, and ties.  Set to code(\down) to force them down,
1290 code(\up) to force them up, or code(\free) to let LilyPond decide.
1291 This can be used to distinguish between voices on the same staff.  The
1292 code(\stemdown), code(\stemup), and code(\stemboth) identifiers set
1293 this property.  See also the identifiers code(\voiceone),
1294 code(\voicetwo), code(\voicethree) and code(\voicefour).
1295
1296 dit(code(slurydirection)) Set to code(\free) for free choice of slur
1297 direction, set to code(\up) to force slurs up, set to code(\down) to
1298 force slurs down.  The shorthands code(\slurup), code(\slurdown), and
1299 code(\slurboth) are available.
1300
1301 dit(code(tieYDirection)) Set to code(\free) for free choice of tie
1302 direction, set to code(\up) to force ties up, set to code(\down) to
1303 force ties down.  
1304
1305 dit(code(slurdash)) Set to 0 for normal slurs, 1 for dotted slurs, and
1306 a larger value for dashed slurs.  Identifiers code(\slurnormal) and
1307 code(\slurdotted) are predefined to set the first two settings.
1308
1309 dit(code(hshift)) Set to 1 to enable LilyPond to shift notes
1310 horizontally if they collide with other notes.  This is useful when
1311 typesetting many voices on one staff.  The identifier code(\shift) is
1312 defined to enable this.
1313
1314 dit(code(dynamicdir)) Determines location of dynamic marks.  Set to
1315 code(\up) to print marks above the staff; set to code(\down) to print
1316 marks below the staff.
1317
1318 dit(code(textalignment)) Controls alignment of superscripted and
1319 subscripted text.  Set to \left to align the left end of the text with
1320 the note; set to \right to align the right end of the text with the
1321 note.  Set to \center to align the center of the text with the note.
1322
1323 dit(code(textstyle)) Set the text style for superscripts and
1324 subscripts.  See above for list of text styles.
1325
1326 dit(code(fontsize)) Can be used to select smaller font sizes for
1327 music.  The normal font size is 0, and the two smaller sizes are -1
1328 and -2.
1329
1330 dit(code(pletvisibility)) Determines whether tuplets of notes are
1331 labelled.  Setting to 0 shows nothing; setting to 1 shows a number;
1332 setting to 2 shows a number and a bracket if there is no beam; setting
1333 to 3 shows a number, and if there is no beam it adds a bracket;
1334 setting to 4 shows both a number and a bracket unconditionally.  
1335
1336 )
1337
1338 subsubsubsect(Staff properties)
1339
1340 description(
1341  
1342 dit(code(defaultClef)) Determines the default clef.  See code(\clef)
1343 keyword.
1344
1345 dit(code(nolines)) Sets the number of lines that the staff has.
1346  
1347 dit(code(barAlways)) If set to 1 a bar line is drawn after each note.
1348
1349 dit(code(defaultBarType)) Sets the default type of bar line.  See
1350 code(\bar) keyword.
1351
1352 dit(code(keyoctaviation)) If set to 1, then keys are the same in all
1353 octaves.  If set to 0 then the key signature for different octaves can
1354 be different and is specified independently: code(\keysignature bes
1355 fis').  The default value is 1.  Can be set to zero with
1356 code(\specialkey) or reset to 1 with code(\normalkey).
1357
1358 dit(code(instrument) and code(instr)) If code(Staff_margin_engraver)
1359 is added to the Staff translator, then the code(instrument) property
1360 is used to label the first line of the staff and the code(instr)
1361 property is used to label subsequent lines.  If the
1362 code(midi_instrument) property is not set then code(instrument) is
1363 used to determine the instrument for MIDI output.
1364 COMMENT(This prints the instrument name on top of the staff lines.)
1365
1366 dit(code(abbrev)) Set length for tremolo to be used if no length is
1367 explicitly specified.
1368
1369 dit(code(createKeyOnClefChange)) Set to a nonempty string if you want key
1370 signatures to be printed when the clef changes.  Set to the empty string (the
1371 default) if you do not want key signatures printed.
1372
1373
1374 dit(code(timeSignatureStyle)) Changes the default two-digit layout
1375    for time signatures. The following values are recognized:
1376    description(
1377       dit(code(C)) 4/4 and 2/2 are typeset as C and struck C,
1378       respectively. All other time signatures are written with two digits.
1379       dit(code(old)) 2/2, 3/2, 3/4, 4/4, 6/4 and 9/4 are typeset with
1380       old-style mensuration marks. All other time signatures are 
1381       written with two digits.
1382       dit(code(1)) All time signatures are typeset with a single
1383       digit, e.g. 3/2 is written as 3.
1384       dit(code(C2/2), code(C4/4), code(old2/2), code(old3/2),
1385       code(old3/4), code(old4/4), code(old6/4) or
1386       code(old9/4)) Tells Lilypond to use a specific symbol as time
1387       signature.
1388    )
1389 The different time signature characters are shown below with
1390 their names:
1391 mudela(fragment,center)(
1392 \relative c'' {
1393 \property Voice.textstyle = typewriter
1394 \property Staff.timeSignatureStyle = "C2/2"
1395 \time 2/2; a2^"C2/2" a2 
1396 \property Staff.timeSignatureStyle = "C4/4"
1397 \time 2/2; a2^"C4/4" a2 
1398 \property Staff.timeSignatureStyle = "old2/2"
1399 \time 2/2; a2^"old2/2" a2 
1400 \property Staff.timeSignatureStyle = "old3/2"
1401 \time 2/2; a2^"old3/2" a2 
1402 \property Staff.timeSignatureStyle = "old4/4"
1403 \time 2/2; a2^"old4/4" a2 
1404 \property Staff.timeSignatureStyle = "old6/4"
1405 \time 2/2; a2^"old6/4" a2 
1406 \property Staff.timeSignatureStyle = "old9/4"
1407 \time 2/2; a2^"old9/4" a2 
1408 }
1409 )
1410
1411
1412 )
1413    
1414
1415
1416 subsubsubsect(GrandStaff properties)
1417
1418 description( 
1419
1420 dit(code(maxVerticalAlign)) Set the maximum vertical distance between
1421 staffs.
1422
1423 dit(code(minVerticalAlign)) Set the minimum vertical distance between
1424 staffs.  
1425
1426 )
1427
1428 subsubsubsect(Score properties)
1429
1430 description(
1431
1432 dit(code(SkipBars)) Set to 1 to skip the empty bars that are produced
1433 by multimeasure notes and rests.  These bars will not appear on the
1434 printed output.  Set to zero (the default) to expand multimeasure
1435 notes and rests into their full length, printing the appropriate
1436 number of empty bars so that synrchonization with other voices is
1437 preserved.  COMMENT(meaning of "skip" here seems to be different from
1438 the meaning used for the keyword \skip.)
1439
1440 dit(code(beamquantisation)) Set to code(\none) for no quantization.
1441 Set to code(\normal) to quantize position and slope.  Set to
1442 code(\traditional) to avoid wedges.  These three settings are
1443 available via code(\beamposfree), code(\beamposnormal), and
1444 code(\beampostraditional).
1445
1446 dit(code(beamslopedamping)) Set to code(\none) for undamped beams.
1447 Set to code(\normal) for damped beams.  Set to code(\infinity) for
1448 beams with zero slope.  The identifiers code(\beamslopeproportional),
1449 code(\beamslopedamped), and code(\beamslopezero) each set the
1450 corresponding value.
1451
1452 )
1453        
1454
1455 COMMENT(
1456
1457 Mystery properties:
1458
1459 bar-number-engraver.cc:  "barScriptPadding"  vertical space for numbers
1460 mark-engraver.cc:        "markScriptPadding" vertical space for marks
1461 span-bar-engraver.cc:    "singleStaffBracket" do single staffs get a bracket?
1462 bar-column-engraver.cc:  "barColumnPriority"        
1463 bar-number-engraver.cc:  "barNumberBreakPriority"   Control horizontal ordering
1464 mark-engraver.cc:        "markBreakPriority"      of bars, clefs, keysig
1465 staff-margin-engraver.cc:"marginBreakPriority"    etc.  Slated for revision
1466 )
1467
1468 sect(Pre-defined Identifiers)
1469 label(ident)
1470
1471 Various identifiers are defined in the initialization files to
1472 provide shorthands for some settings.  
1473
1474 description(
1475 dit(code(\break)) Force a line break in music by using a large
1476 argument for the keyword code(\penalty). 
1477 dit(code(\center)) Used for setting textalignment property.  Is set to 0.
1478 dit(code(\cr)) Start a crescendo.
1479 dit(code(\decr)) Start a decrescendo.
1480 dit(code(\down)) Used for setting direction setting properties.  Is
1481 equal to -1.  
1482 dit(code(\f)) Print forte symbol on the preceeding note.
1483 dit(code(\ff)) Print fortissimo symbol on the preceeding note. 
1484 dit(code(\fff)) Print fortississimo symbol on preceeding note. 
1485 dit(code(\fp)) Print fortepiano symbol on preceeding note. 
1486 dit(code(\free)) Used for setting direction setting properties.  Is
1487 equal to 0.  
1488 dit(code(\Gourlay)) Used for setting the paper variable
1489 code(castingalgorithm).  Is equal to 1.0.  
1490 dit(code(\infinity)) Used for setting the Score.beamslopedamping
1491 property.  Is actually equal to 10000.  
1492 dit(code(\left)) Used for setting textalignment property.  Is equal to -1.
1493 dit(code(\major)) Used as the second argument of the code(\key)
1494 command to get a major key.
1495 dit(code(\minor)) Used as the second argument of the code(\key)
1496 command to get a minor key.
1497 dit(code(\mf)) Print mezzoforte symbol on preceeding note. 
1498 dit(code(\mp)) Print mezzopiano symbol on preceeding note. 
1499 dit(code(\nobreak)) Prevent a line break in music by using a large
1500 negative argument for the keyword code(\penalty). 
1501 dit(code(\none)) Used for setting Score.beamslopedamping and
1502 Score.beamquantisation properties.  Is equal to 0.
1503 dit(code(\normal)) Used for setting Score.beamslopedamping and
1504 Score.beamquantisation properties.  Is equal to 1.
1505 dit(code(\normalkey)) Select normal key signatures where each octave
1506 has the same key signature.  This sets the Staff.keyoctaviation property.
1507 dit(code(\p)) Print a piano symbol on preceeding note. 
1508 dit(code(\pp)) Print pianissimo symbol on preceeding note. 
1509 dit(code(\ppp)) Print pianississimo symbol on preceeding note. 
1510 dit(code(\rc)) Terminate a crescendo. 
1511 dit(code(\rced)) Terminate a decrescendo
1512 dit(code(\right)) Used for setting textalignment property.  Is set to 1.
1513 dit(code(\sf)) Print a ?? symbol on preceeding note. 
1514 dit(code(\sfz)) Print a ?? symbol on preceeding note. 
1515 dit(code(\shiftoff)) Disable horizontal shifting of note heads that collide.  
1516 Sets the Voice.hshift property.
1517 dit(code(\shifton)) Enable note heads that collide with other note heads
1518 to be shifted horiztonally.  Sets the Voice.hshift property.
1519 dit(code(\slurboth)) Allow slurs to be above or below notes.  This
1520 sets the Voice.slurydirection property. 
1521 dit(code(\slurdown)) Force slurs to be below notes. This sets the
1522 Voice.slurydirection property. 
1523 dit(code(\slurup)) Force slurs to be above notes.  This sets the
1524 Voice.slurydirection property.  
1525 dit(code(\specialkey)) Allow keys signatures do differ in different
1526 octaves.  This sets the Staff.keyoctaviation property.  
1527 dit(code(\stemboth)) Allow stems, beams, and slurs to point either
1528 direction.  This sets the Voice.ydirection property. 
1529 dit(code(\stemdown)) Force stems, beams, and slurs to point down.
1530 This sets the Voice.ydirection property. 
1531 dit(code(\stemup)) Force stems, beams and slurs to point up.  This
1532 sets the Voice.ydirection property. 
1533 dit(code(\traditional)) Used for setting the 
1534 Score.beamquantisation property.  Is equal to 2.  
1535 dit(code(\up)) Used for setting various direction properties.  Is
1536 equal to 1. 
1537 dit(code(\voiceone)) Enter Voice context called code(one) and force stems down.
1538 (See code(\stemdown).)
1539 dit(code(\voicetwo)) Enter Voice context called code(two) and force stems
1540 up. (See code(\stemup).)
1541 dit(code(\voicethree)) Enter Voice context called code(three) and force stems
1542 up.  
1543 dit(code(\voicefour)) Enter Voice context called code(four), force stems down
1544 and turn on horizontal shifting.  (See code(\stemdown) and code(\shifton).)
1545 dit(code(\Wordwrap)) Used for setting the paper variable
1546 code(castingalgorithm).  Equal to 0.0.  
1547 )
1548
1549
1550 sect(Output)
1551 label(output)
1552 label(paper)
1553
1554 The output produced by LilyPond is controlled by the code(\paper) and
1555 code(\midi) keywords.  These keywords appear in the code(\score) block
1556 to indicate that printed or musical output should be produced.  If
1557 neither keyword appears in a code(\score) block, then paper output is
1558 produced but MIDI output is not produced.  
1559
1560 The contents of the code(\paper) and code(\midi) blocks can change the
1561 output in various ways.  These blocks can appear at the top level of a
1562 Mudela file to set default parameters for each type of output.  It is
1563 still necessary to explicitly specify the output type in the
1564 code(\score) blocks if you don't want the default behavior of
1565 producing only paper output.  
1566
1567 The code(\paper) and code(\midi) blocks 
1568 may begin with an optional identifier reference.  No
1569 identifier references are allowed anywhere else in the block.  
1570 The code(\paper) block can contain the code(\shape) keyword; the
1571 code(\midi) block can contain the code(\tempo) keyword.  Both of them
1572 can contain code(\translator) keywords.  The code(\paper) block can
1573 also contain identifier assignments and parameter assignments.  Unlike
1574 at the top level, these assignments must be terminated by a semicolon.
1575
1576
1577 subsect(Paper variables)
1578
1579 There are a large number of paper variables that are used to control
1580 details of the layout.  Usually you will not want to change these
1581 variables; they are set by default to vaules that depend on the font
1582 size in use.  The only way to find out what variables are supported is
1583 to search the source code for code(get_var).  Two variables that you
1584 may want to change are code(linewidth) and code(indent).
1585
1586 In order to change the font size used for the output, many variables
1587 need to be changed.  Some identifiers and initialization files can
1588 simplify this process.  The default size is 20pt.  In order to select
1589 a different size, you must do two things.  At the top level, do
1590 code(\include "paper)var(SZ)code(.ly") where var(SZ) is the height of
1591 the staff in points.  Values presently allowed are 11, 13, 16, 20, and
1592 26.  This loads some definitions, but does not cause them to take
1593 effect.  In order to actually change the size, you must use one of the
1594 identifiers: code(\paper_eleven), code(\paper_thirteen),
1595 code(\paper_sixteen), code(\paper_twenty) or code(\paper_twentysix)
1596 inside a code(\paper) block.
1597
1598
1599 description(
1600   dit(var(integer)) If an integer appears on the left side of an
1601 assignment then a code(\symboltables) keyword must appear on the right
1602 side.  This defines a music font at a particular size.  See Voice
1603 property code(\fontsize).
1604
1605 dit(code(arithmetic_basicspace) and code(arithmetic_multiplier))
1606 The space taken by a note is determined by the formula 
1607 COMMENT(
1608
1609 )verb(arithmetic_multiplier * ( c + log2 (time) ))COMMENT(
1610
1611 ) where code(time) is the amount of time a note occupies.  The value
1612 of code(c) is chosen such that the smallest space within a measure is
1613 arithmetic_basicspace.  The smallest space is the one following the
1614 shortest note in the measure.  Typically arithmetic_basicspace is set
1615 to the width of a quarter note head.
1616
1617 dit(code(barsize)) Specify height of bars.  This value may need to be
1618 adjusted if you change the number of lines in the staff.
1619 dit(code(beam_dir_algorithm)) Specify algorithm for determining
1620 whether beams go up or down.  It is real valued.  If set to 2.0 then
1621 majority selection is used.  If set to 3.0, then mean selection is
1622 used based on the mean center distance.  If set to 4.0 then median
1623 selection is used, based on the median center distance.  
1624 dit(code(beam_ideal_stem1))
1625 dit(code(beam_ideal_stem2))
1626 dit(code(beam_minimum_stem1))
1627 dit(code(beam_minimum_stem2))
1628 dit(code(beam_multiple_break))
1629 dit(code(beam_slope_damp_correct_factor))
1630 dit(code(beam_thickness)) Specify the thickness of beams.
1631 dit(code(castingalgorithm)) 
1632 dit(code(forced_stem_shorten)) Stems that have been forced to go the
1633 unnatural direction are shortened by this amount.  Equal to
1634 code(\interline) by default.  
1635 dit(code(gourlay_energybound))
1636 dit(code(gourlay_maxmeasures)) Maximum number of measures per line
1637 when using Gourlay method.
1638 Decreasing this greatly reduces computation time.  Default value: 10.  
1639 dit(code(indent)) Sets the indentation of the first line of music.  
1640 dit(code(interbeam))
1641 dit(code(interbeam4))
1642 dit(code(interline))  The distance between two staff
1643 lines, calculated from the center of the lines.  
1644 dit(code(linewidth))  Sets the width of the lines.  If it is set to
1645 -1.0, then a single unjustified line is produced.  
1646 dit(code(notewidth)) Width of an average note head.  
1647 dit(code(output)) Specifies an alternate
1648 name for the TeX() output.  A file(.tex) extension will be added to
1649 the string you specify.
1650 dit(code(rulethickness)) Determines thickness of staff lines and bars. 
1651 dit(code(slur_clip_angle))
1652 dit(code(slur_clip_height))
1653 dit(code(slur_clip_ratio))
1654 dit(code(slur_height_limit)) Specifies the maximum height of slurs.
1655 Normally equal to staff_height.
1656 dit(code(slur_ratio)) Specifes the ratio of slur hight to slur width
1657 to aim for.  Default value is 0.3.  
1658 dit(code(slur_rc_factor))
1659 dit(code(slur_slope_damping)) Allows slurs to start and end at
1660 different heights ????  Default value is 0.5.
1661 dit(code(slur_thickness)) Specify slur thickness.  Equal to code(1.4 *
1662 \staffline) by default.  
1663 dit(code(slur_x_gap)) Horizontal space between note and slur.  Set to
1664 code(\interline / 5) by default.  
1665 dit(code(slur_x_minimum))
1666 dit(code(staffheight)) The height of the staff from the center of the
1667 bottom line to the center of the top line.  Equal to to code(4 * \interline).
1668 dit(code(stem_length)) Specify length of stems for notes in the staff
1669 that don't have beams.  
1670 dit(code(stemthickness)) Specifies the thickness of the stem lines.  
1671 dit(code(tie_slope_damping))
1672 dit(code(tie_x_minimum))
1673 )
1674
1675
1676 subsect(MIDI Instrument Names)
1677 label(midilist)
1678
1679 The MIDI instrument name is set by the code(Staff."midi_instrument")
1680 property or, if that property is not set, the code(Staff.instrument)
1681 property.  The instrument name should be chosen from this list.  If
1682 string does not exactly match one from this list then LilyPond uses
1683 the default piano.
1684
1685 COMMENT( acordina = accordion, tango accordian = concertina
1686          distortion guitar = distorted guitar
1687          orchestral strings = harp 
1688          pan flute = wood flute? )
1689
1690 verb("acoustic grand"               "contrabass"             "lead 7 (fifths)"
1691 "bright acoustic"              "tremolo strings"        "lead 8 (bass+lead)"
1692 "electric grand"               "pizzicato strings"      "pad 1 (new age)"
1693 "honky-tonk"                   "orchestral strings"     "pad 2 (warm)"
1694 "electric piano 1"             "timpani"                "pad 3 (polysynth)"
1695 "electric piano 2"             "string ensemble 1"      "pad 4 (choir)"
1696 "harpsichord"                  "string ensemble 2"      "pad 5 (bowed)"
1697 "clav"                         "synthstrings 1"         "pad 6 (metallic)"
1698 "celesta"                      "synthstrings 2"         "pad 7 (halo)"
1699 "glockenspiel"                 "choir aahs"             "pad 8 (sweep)"
1700 "music box"                    "voice oohs"             "fx 1 (rain)"
1701 "vibraphone"                   "synth voice"            "fx 2 (soundtrack)"
1702 "marimba"                      "orchestra hit"          "fx 3 (crystal)"
1703 "xylophone"                    "trumpet"                "fx 4 (atmosphere)"
1704 "tubular bells"                "trombone"               "fx 5 (brightness)"
1705 "dulcimer"                     "tuba"                   "fx 6 (goblins)"
1706 "drawbar organ"                "muted trumpet"          "fx 7 (echoes)"
1707 "percussive organ"             "french horn"            "fx 8 (sci-fi)"
1708 "rock organ"                   "brass section"          "sitar"
1709 "church organ"                 "synthbrass 1"           "banjo"
1710 "reed organ"                   "synthbrass 2"           "shamisen"
1711 "accordion"                    "soprano sax"            "koto"
1712 "harmonica"                    "alto sax"               "kalimba"
1713 "concertina"                   "tenor sax"              "bagpipe"
1714 "acoustic guitar (nylon)"      "baritone sax"           "fiddle"
1715 "acoustic guitar (steel)"      "oboe"                   "shanai"
1716 "electric guitar (jazz)"       "english horn"           "tinkle bell"
1717 "electric guitar (clean)"      "bassoon"                "agogo"
1718 "electric guitar (muted)"      "clarinet"               "steel drums"
1719 "overdriven guitar"            "piccolo"                "woodblock"
1720 "distorted guitar"             "flute"                  "taiko drum"
1721 "guitar harmonics"             "recorder"               "melodic tom"
1722 "acoustic bass"                "pan flute"              "synth drum"
1723 "electric bass (finger)"       "blown bottle"           "reverse cymbal"
1724 "electric bass (pick)"         "skakuhachi"             "guitar fret noise"
1725 "fretless bass"                "whistle"                "breath noise"
1726 "slap bass 1"                  "ocarina"                "seashore"
1727 "slap bass 2"                  "lead 1 (square)"        "bird tweet"
1728 "synth bass 1"                 "lead 2 (sawtooth)"      "telephone ring"
1729 "synth bass 2"                 "lead 3 (calliope)"      "helicopter"
1730 "violin"                       "lead 4 (chiff)"         "applause"
1731 "viola"                        "lead 5 (charang)"       "gunshot"
1732 "cello"                        "lead 6 (voice)")
1733
1734
1735
1736 subsect(Translators)
1737 label(translators)
1738
1739 The behavior of notation contexts is defined by the translators for
1740 those contexts.  The translator for a context specifies what notations
1741 are handled by the context, it specifies what other contexts the
1742 context can contain, and it sets property values for the context.  
1743 There are different translators for each type of output.  The
1744 translators for paper output are defined in file(engraver.ly).  The
1745 translators for MIDI output are defined in file(performer.ly).  
1746
1747 The first thing that appears inside a code(\translator) definition is
1748 the type of the context being created.  This is specified with the
1749 code(\type) keyword: code(\type) var(typename)code(;).  After the type
1750 of the context is specified, property assignments, the code(\name)
1751 keyword and code(\consists), code(\accepts), and code(\remove)
1752 keywords can appear in any order.  The code(\name) keyword specifies
1753 the name of the context that is handled by the translator.  If the
1754 name is not specified, the translator won't do anything.  Each
1755 code(\accepts) keyword specifies what contexts can be contained inside
1756 this one.  The code(\consists) keywords specify which notations are
1757 handled by the context.  Each code(\consists) keyword specifies the
1758 name of an engraver (for paper ouput) or performer (for MIDI output)
1759 which handles a certain notation.  The code(\remove) keyword can be
1760 used to remove a performer or engraver from the translator.
1761
1762 In the code(\paper) block, it is also possible to define translator
1763 identifiers.  Like other block identifiers, the identifier can only
1764 be used as the very first item of a translator.  In order to define
1765 such an identifier outside of code(\score), you must do
1766 verb(\paper{ foo=\translator{ ... }
1767 \score{
1768   \notes{ ... }
1769   \paper{ \translator{ \foo ... } }
1770 })
1771
1772 Some All of the standard translators have predefined identifiers,  making
1773 it easy to redefine these contexts by adding or removing items. 
1774 The predefined identifiers are:  code(StaffContext),
1775 code(RhythmicStaffContext),  code(VoiceContext),  code(ScoreContext), code(ScoreWithNumbers)
1776
1777
1778 subsubsect(Paper Types and Engravers and Pre-defined Translators)
1779
1780 Some pre-defined identifiers can simplify modification of translators.
1781 The pre-defined identifiers are:  
1782 description(
1783 dit(code(StaffContext)) Default Staff  context. 
1784 dit(code(RhythmicStaffContext)) Default RhythmicStaff  context. 
1785 dit(code(VoiceContext)) Default Voice  context.  
1786 dit(code(ScoreContext))  Default  Score context. 
1787 dit(code(ScoreWithNumbers)) Score  context with numbering at  the
1788 Score level.   
1789 dit(code(BarNumberingStaffContext)) Staff context with numbering  at
1790 the Staff level.  
1791 dit(code(HaraKiriStaffContext))  
1792 dit(code(OrchestralPartStaffContext))
1793 dit(code(OrchestralScoreContext))
1794 )
1795 Using these pre-defined values, you can remove  or add items to the
1796 translator verb(\paper{ \translator{ \StaffContext
1797                      \remove Some_engraver;
1798                      \consists Different_engraver;  }})
1799       
1800
1801
1802 There are four types for paper translators:
1803 description(
1804   dit(code(Engraver_group_engraver))
1805   dit(code(Hara_kiri_line_group_engraver))
1806   dit(code(Line_group_engraver_group))
1807   dit(code(Score_engraver))  
1808 )
1809 COMMENT( The names of these types seem somewhat confusing. )
1810
1811 The engravers for paper output are:
1812
1813 description(
1814 dit(code(Abbreviation_beam_engraver))
1815 dit(code(Bar_column_engraver)) 
1816 dit(code(Bar_engraver)) Engraves bar lines.  Normally in code(Staff) and
1817 code(RhythmicStaff).  
1818 dit(code(Bar_number_engraver)) Engrave bar numbers.  These numbers
1819 appear at the start of each line.  Not normally in any translator.  Can
1820 be added to code(Score) for Score-wide numbering or to code(Staff) for
1821 numbering on each staff.  
1822
1823 dit(code(Beam_engraver)) Handles beam requests by engraving beams.  Normally
1824 appears in the code(Voice) translator.  If omitted, then notes will be printed
1825 with flags instead of beams.
1826
1827 dit(code(Beam_req_swallow_translator)) Swallows beam requests.  In
1828 code(LyricVoice).  
1829 dit(code(Clef_engraver)) Engraves the clef symbol.  Normally in code(Staff).
1830 dit(code(Collision_engraver))
1831 dit(code(Dot_column_engraver)) Engraves dots on dotted notes shifted to the
1832 right of the note.  Normally in code(Voice).  If omitted, then dots appear on
1833 top of the notes.  
1834 dit(code(Dynamic_engraver)) Engraves dynamics symbols.  Normally in code(Voice).
1835 dit(code(Font_size_engraver))
1836 dit(code(Key_engraver)) Engraves the key signature.  Normally in code(Staff).
1837 dit(code(Local_key_engraver))
1838 dit(code(Lyric_engraver)) Engraves lyrics.  Normally in code(LyricVoice).
1839 dit(code(Multi_measure_rest_engraver)) Engraves multi-measure rests that are
1840 produced with code(R).  Normally in code(Voice).
1841 dit(code(Piano_bar_engraver))
1842 dit(code(Pitch_squash_engraver)) Treat all pitches as middle C.  Used in
1843 code(RhythmicStaff).  Note that the notes move, but the locations of
1844 accidentals stay the same. 
1845 dit(code(Plet_engraver)) Engraves brackets and the number over tuplets.  In
1846 code(Voice).  
1847 dit(code(Plet_swallow_engraver)) Swallows tuplet requests without any output.
1848 In code(LyricVoice).  
1849 COMMENT( Should this be named Plet_req_swallow_translator? )
1850 dit(code(Priority_horizontal_align_engraver))
1851 dit(code(Repeat_engraver)) Handles repeats? In code(Staff) and 
1852    code(RhythmicStaff).
1853 dit(code(Rest_collision_engraver)) Handles collisions of rests. In code(Staff).
1854 dit(code(Rest_engraver)) Engraves rests.  Normally in code(Voice).
1855 dit(code(Rhythmic_column_engraver))
1856 dit(code(Score_priority_engraver))
1857 dit(code(Script_engraver)) Handles note ornaments generated by code(\script).
1858 Normally in code(Voice).  
1859 dit(code(Separating_line_group_engraver))
1860 dit(code(Skip_req_swallow_translator))
1861 dit(code(Slur_engraver)) Engraves slurs.  Normally in code(Voice).
1862 dit(code(Span_bar_engraver)) Engraves lines across multiple staffs.  Normally
1863 in code(Staffgroup) and code(GrandStaff).  Removing this from code(StaffGroup)
1864 gives the definition of code(ChoirStaff).  
1865 dit(code(Span_score_bar_engraver))
1866 dit(code(Staff_group_bar_engraver))
1867 dit(code(Staff_margin_engraver)) Prints the name of the instrument
1868 (specified by code(Staff.instrument) and code(Staff.instr)) at the
1869 left of the staff.  
1870 dit(code(Staff_sym_engraver))
1871 dit(code(Stem_engraver)) Engraves stems.  Normally in code(Voice).
1872 dit(code(Ties_engraver)) Engraves ties.  Normally in code(Voice).
1873 dit(code(Time_signature_engraver)) Engraves the time signature.  Normally in
1874 code(Staff) and code(RhythmicStaff).
1875 dit(code(Timing_engraver)) Responsible for synchronizing timing information
1876 from staffs.  Normally in code(Score).  In order to create polyrhythmic music,
1877 this engraver should be removed from code(Score) and placed in code(Staff).
1878 dit(code(Tuplet_engraver)) Engraves tuplet brackets?  In code(Staff).
1879 dit(code(Vertical_align_engraver)) 
1880 )
1881
1882
1883 subsubsect(MIDI Types and Performers)
1884
1885 The types available for  MIDI translators are:
1886 description(
1887 dit(code(Performer_group_performer))
1888 dit(code(Score_performer))
1889 dit(code(Staff_performer))
1890 )
1891
1892 The performers for MIDI translators are:
1893 description(
1894 dit(code(Key_performer))
1895 dit(code(Time_signature_performer))
1896 dit(code(Note_performer))
1897 dit(code(Lyric_performer))
1898 dit(code(Swallow_performer))
1899 )
1900