]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/user/advanced-notation.itely
*** empty log message ***
[lilypond.git] / Documentation / user / advanced-notation.itely
1 @c -*- coding: utf-8; mode: texinfo; -*-
2 @c This file is part of lilypond.tely
3
4 @c A menu is needed before every deeper *section nesting of @node's; run 
5 @c     M-x texinfo-all-menus-update
6 @c to automatically fill in these menus before saving changes
7
8
9 @node Advanced notation
10 @chapter Advanced notation
11
12 This chapter deals with rarely-used and advanced notation.
13
14 @menu
15 * Text::                        
16 * Preparing parts::             
17 * Orchestral music::            
18 * Contemporary notation::       
19 * Educational use::             
20 * Automatic notation::          
21 @end menu
22
23
24
25 @node Text
26 @section Text
27
28 This section explains how to include text (with various formatting) in
29 your scores.
30
31 @cindex Text, other languages
32 To write non-ascii text (such as characters from other languages), simply
33 insert the characters directly into the lilypond file.  The file must be
34 saved as UTF-8.  For more information, see @ref{Text encoding}.
35
36 @menu
37 * Text scripts::                
38 * Text spanners::               
39 * Text marks::                  
40 * Text markup::                 
41 * Nested scores::               
42 * Overview of text markup commands::  
43 * Font selection::              
44 * New dynamic marks::           
45 @end menu
46
47
48 @node Text scripts
49 @subsection Text scripts
50
51 @cindex Text scripts
52 @cindex text items, non-empty
53 @cindex non-empty texts
54
55 It is possible to place arbitrary strings of text or @ref{Text markup}
56 above or below notes by using a string @code{c^"text"}.  By default,
57 these indications do not influence the note spacing, but by using the
58 command @code{\fatText}, the widths will be taken into account
59
60 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
61 c4^"longtext" \fatText c4_"longlongtext" c4
62 @end lilypond
63
64 More complex formatting may also be added to a note by using the
65 markup command,
66 @lilypond[fragment,ragged-right,verbatim,quote]
67 c'4^\markup { bla \bold bla }
68 @end lilypond
69
70 The @code{\markup} is described in more detail in
71 @ref{Text markup}.
72
73
74 @refcommands
75
76 @cindex @code{\fatText}
77 @code{\fatText},
78 @cindex @code{\emptyText}
79 @code{\emptyText}.
80
81
82 @commonprop
83
84 Checking to make sure that text scripts and lyrics are within the margins is a relatively large computational task.  To speed up processing, lilypond does not perform such calculations by default; to enable it, use
85
86 @example
87 \override Score.PaperColumn #'keep-inside-line = ##t
88 @end example
89
90
91 @seealso
92
93 In this manual: @ref{Text markup}.
94
95 Program reference: @internalsref{TextScript}.
96
97
98 @node Text spanners
99 @subsection Text spanners
100
101 @cindex Text spanners
102
103 Some performance indications, e.g., @i{rallentando} or @i{accelerando},
104 are written as text and are extended over many measures with dotted
105 lines.  Such texts are created using text spanners; attach
106 @code{\startTextSpan} and @code{\stopTextSpan} to the first and last
107 notes of the spanner.
108
109 The string to be printed, as well as the style, is set through object
110 properties
111
112 @lilypond[quote,ragged-right,fragment,relative=1,verbatim]
113 c1
114 \textSpannerDown
115 \override TextSpanner #'edge-text = #'("rall " . "")
116 c2\startTextSpan b c\stopTextSpan a
117 \break
118 \textSpannerUp
119 \override TextSpanner #'edge-text = #(cons (markup #:italic "rit" ) "")
120 c2\startTextSpan b c\stopTextSpan a
121 @end lilypond
122
123 @refcommands
124
125 @cindex textSpannerUp
126 @code{textSpannerUp},
127 @cindex textSpannerDown 
128 @code{textSpannerDown},
129 @cindex textSpannerNeutral
130 @code{textSpannerNeutral}.
131
132
133 @seealso
134
135 Program reference: @internalsref{TextSpanner}.
136
137 Examples: @inputfileref{input/@/regression,text@/-spanner@/.ly}.
138
139
140 @node Text marks
141 @subsection Text marks
142
143 @cindex coda on bar line
144 @cindex segno on bar line
145 @cindex fermata on bar line
146 @cindex bar lines, symbols on
147 @cindex @code{\mark}
148
149 The @code{\mark} command is primarily used for
150 @ref{Rehearsal marks},
151 but it can also be used to put signs like coda,
152 segno, and fermata on a bar line.  Use @code{\markup} to
153 access the appropriate symbol
154
155 @lilypond[fragment,quote,ragged-right,verbatim,relative=2]
156 c1 \mark \markup { \musicglyph #"scripts.ufermata" }
157 c1
158 @end lilypond
159
160 @noindent
161 @code{\mark} is only typeset above the top stave of the score.  If
162 you specify the @code{\mark} command at a bar line, the resulting
163 mark is placed above the bar line.  If you specify it in the middle
164 of a bar, the resulting mark is positioned between notes.  If it is
165 specified before the beginning of a score line, it is placed
166 before the first note of the line.  Finally, if the mark occurs at
167 a line break, the mark will be printed at the
168 beginning of the next line.
169 @c  IMO this is a bug; hopefully it'll be fixed soon, so I can
170 @c  delete this sentence.   -gp
171 If there is no next line, then the mark will not be printed at all.
172
173
174 @commonprop
175
176 To print the mark at the end of the current line, use
177
178 @example
179 \override Score.RehearsalMark
180   #'break-visibility = #begin-of-line-invisible
181 @end example
182
183 @code{\mark} is often useful for adding text to the end of bar.  In
184 such cases, changing the @code{#'self-alignment} is very useful
185
186 @lilypond[fragment,quote,ragged-right,verbatim,relative=2]
187 \override Score.RehearsalMark
188   #'break-visibility = #begin-of-line-invisible
189 c1 c c c4 c c c
190 \once \override Score.RehearsalMark #'self-alignment-X = #right
191 \mark "D.S. al Fine "
192 @end lilypond
193
194 Text marks may be aligned with notation objects other than
195 bar lines,
196
197 @lilypond[fragment,quote,ragged-right,verbatim,relative=2]
198 \relative {
199   c1
200   \key cis \major
201   \clef alto
202   \override Score.RehearsalMark #'break-align-symbol = #'key-signature
203   \mark "on key"
204   cis
205   \key ces \major
206   \override Score.RehearsalMark #'break-align-symbol = #'clef
207   \clef treble
208   \mark "on clef"
209   ces
210   \override Score.RehearsalMark #'break-align-symbol = #'time-signature
211   \key d \minor
212   \clef tenor
213   \time 3/4
214   \mark "on time"
215   c
216 }
217 @end lilypond
218
219
220 @seealso
221
222 Program reference: @internalsref{RehearsalMark}.
223
224
225 @node Text markup
226 @subsection Text markup
227
228 @cindex markup
229 @cindex text markup
230 @cindex markup text
231 @cindex typeset text
232
233 Use @code{\markup} to typeset text.  Commands are entered with the
234 backslash @code{\}.  To enter @code{\} and @code{#}, use double
235 quotation marks.
236
237 @lilypond[quote,verbatim,fragment,relative=1]
238 c1^\markup { hello }
239 c1_\markup { hi there }
240 c1^\markup { hi \bold there, is \italic anyone home? }
241 c1_\markup { "\special #characters" }
242 @end lilypond
243
244 @noindent
245 See @ref{Overview of text markup commands} for a list of all
246 commands.
247
248 @code{\markup} is primarily used for @internalsref{TextScript}s,
249 but it can also be used anywhere text is called in lilypond
250
251 @lilypond[quote,verbatim]
252 \header{ title = \markup{ \bold { foo \italic { bar! } } } }
253 \score{
254   \relative c'' {
255     \override Score.RehearsalMark
256       #'break-visibility = #begin-of-line-invisible
257     \override Score.RehearsalMark #'self-alignment-X = #right
258
259     \set Staff.instrument = \markup{ \column{ Alto solo } }
260     c2^\markup{ don't be \flat }
261     \override TextSpanner #'edge-text = #(cons (markup #:italic "rit" ) "")
262     b2\startTextSpan
263     a2\mark \markup{ \large \bold Fine }
264     r2\stopTextSpan
265     \bar "||"
266   }
267   \addlyrics { bar, foo \markup{ \italic bar! } }
268 }
269 @end lilypond
270
271 Text can also be placed on its own, away from any @code{\score}
272 block.  This is primarily used in a @code{\book} (see
273 @ref{Multiple movements}).
274
275 @lilypond[quote,ragged-right,verbatim]
276 \markup{ Here is some text. }
277 @end lilypond
278
279 @cindex font switching
280
281 The markup in the example demonstrates font switching commands.  The
282 command @code{\bold} and @code{\italic} apply to the first following 
283 word only; to apply a command to more than one word, enclose the
284 words with braces,
285
286 @example
287 \markup @{ \bold @{ hi there @} @}
288 @end example
289
290 @noindent
291 For clarity, you can also do this for single arguments, e.g.,
292
293 @example
294 \markup @{ is \italic @{ anyone @} home @}
295 @end example
296
297 In markup mode you can compose expressions, similar to mathematical
298 expressions, XML documents, and music expressions.  You can stack
299 expressions grouped vertically with the command @code{\column}.
300 Similarly, @code{\center-align} aligns texts by their center lines:
301
302 @lilypond[quote,verbatim,fragment,relative=1]
303 c1^\markup { \column { a bbbb \line { c d } } }
304 c1^\markup { \center-align { a bbbb c } }
305 c1^\markup { \line { a b c } }
306 @end lilypond
307
308 Lists with no previous command are not kept distinct.  The expression
309
310 @example
311 \center-align @{ @{ a b @} @{ c d @} @} 
312 @end example
313
314 @noindent
315
316 is equivalent to
317
318 @example
319 \center-align @{ a b c d @}
320 @end example
321
322 @noindent
323
324 To keep lists of words distinct, please use quotes @code{"} or
325 the @code{\line} command
326
327 @lilypond[quote,verbatim,fragment,relative=1]
328 \fatText
329 c4^\markup{ \center-align { on three lines } }
330 c4^\markup{ \center-align { "all one line" } }
331 c4^\markup{ \center-align { { on three lines } } }
332 c4^\markup{ \center-align { \line { on one line } } }
333 @end lilypond
334
335 Markups can be stored in variables and these variables
336 may be attached to notes, like
337 @example
338 allegro = \markup @{ \bold \large @{ Allegro @} @}
339  @{ a^\allegro b c d @}
340 @end example
341
342 Some objects have alignment procedures of their own, which cancel out
343 any effects of alignments applied to their markup arguments as a
344 whole.  For example, the @internalsref{RehearsalMark} is horizontally
345 centered, so using @code{\mark \markup @{ \left-align .. @}} has no
346 effect.
347
348 In addition, vertical placement is performed after creating the
349 text markup object.  If you wish to move an entire piece of markup,
350 you need to use the #'padding property or create an "anchor" point
351 inside the markup (generally with @code{\hspace #0}).
352
353 @lilypond[quote,verbatim,fragment,relative=1]
354 \fatText
355 c'4^\markup{ \raise #5 "not raised" }
356 \once \override TextScript #'padding = #3
357 c'4^\markup{ raised }
358 c'4^\markup{ \hspace #0 \raise #1.5 raised }
359 @end lilypond
360
361 Some situations (such as dynamic marks) have preset font-related
362 properties.  If you are creating text in such situations, it
363 is advisable to cancel those properties with
364 @code{normal-text}.  See @ref{Overview of text markup commands}
365 for more details.
366
367
368 @seealso
369
370 This manual: @ref{Overview of text markup commands}.
371
372 Program reference: @internalsref{TextScript}.
373
374 Init files: @file{scm/@/new@/-markup@/.scm}.
375
376
377 @refbugs
378
379 Kerning or generation of ligatures is only done when the @TeX{}
380 backend is used.  In this case, LilyPond does not account for them so
381 texts will be spaced slightly too wide.
382
383 Syntax errors for markup mode are confusing.
384
385
386 @node Nested scores
387 @subsection Nested scores
388
389 It is possible to nest music inside markups, by adding a @code{\score}
390 block to a markup expression.  Such a score must contain a @code{\layout}
391 block.
392
393 @lilypond[quote,verbatim,ragged-right]
394 \relative {
395   c4 d^\markup {
396     \score {
397       \relative { c4 d e f }
398       \layout { }
399     }
400   }
401   e f
402 }
403 @end lilypond
404
405
406 @node Overview of text markup commands
407 @subsection Overview of text markup commands
408
409 The following commands can all be used inside @code{\markup @{ @}}.
410
411 @include markup-commands.tely
412
413
414 @node Font selection
415 @subsection Font selection
416
417 @cindex font selection
418 @cindex font magnification
419 @cindex @code{font-interface}
420
421 By setting the object properties described below, you can select a
422 font from the preconfigured font families.  LilyPond has default
423 support for the feta music fonts. Text fonts are selected through
424 Pango/FontConfig. The serif font defaults to New Century Schoolbook,
425 the sans and typewriter to whatever the Pango installation defaults
426 to.
427
428
429 @itemize @bullet
430 @item @code{font-encoding}
431 is a symbol that sets layout of the glyphs.  This should only be set to
432 select different types of non-text fonts, eg.
433
434 @code{fetaBraces} for piano staff braces, @code{fetaMusic} the
435 standard music font, including ancient glyphs, @code{fetaDynamic} for
436 dynamic signs and @code{fetaNumber} for the number font.
437
438 @item @code{font-family}
439 is a symbol indicating the general class of the typeface.  Supported are
440 @code{roman} (Computer Modern), @code{sans}, and @code{typewriter}.
441   
442 @item @code{font-shape}
443 is a symbol indicating the shape of the font.  There are typically
444 several font shapes available for each font family.  Choices are
445 @code{italic}, @code{caps}, and @code{upright}.
446
447 @item @code{font-series}
448 is a symbol indicating the series of the font.  There are typically
449 several font series for each font family and shape.  Choices are
450 @code{medium} and @code{bold}. 
451
452 @end itemize
453
454 Fonts selected in the way sketched above come from a predefined style
455 sheet. If you want to use a font from outside the style sheet, 
456 then set the 
457 @code{font-name} property, 
458
459 @lilypond[fragment,verbatim]
460 {
461   \override Staff.TimeSignature #'font-name = #"Charter"
462   \override Staff.TimeSignature #'font-size = #2
463   \time 3/4
464   c'1_\markup {
465     \override #'(font-name . "Vera Bold")
466       { This text is in Vera Bold }
467   }
468 }
469 @end lilypond
470
471 @noindent
472 Any font can be used, as long as it is available to Pango/FontConfig.
473
474 The size of the font may be set with the @code{font-size}
475 property. The resulting size is taken relative to the
476 @code{text-font-size} as defined in the @code{\paper} block.
477
478 @cindex font size
479 @cindex font magnification
480
481
482 It is also possible to change the default font family for the entire
483 document. This is done by calling the @code{make-pango-font-tree} from
484 within the @code{\paper} block. The function takes names for the font
485 families to use for roman, sans serif and monospaced text. For
486 example,
487
488 @cindex font families, setting
489 @cindex Pango
490
491
492 @lilypond[verbatim]
493 \paper  {
494   myStaffSize = #20
495   
496   #(define fonts
497     (make-pango-font-tree "Times New Roman"
498                           "Nimbus Sans"
499                           "Luxi Mono"
500                            (/ myStaffSize 20)))
501 }
502
503 {
504   c'^\markup { roman: foo \sans bla \typewriter bar }
505 }
506 @end lilypond
507
508 @c we don't do Helvetica / Courier, since GS incorrectly loads
509 @c Apple TTF fonts  
510
511
512
513 @seealso
514
515 Examples: @file{ly/@/font@/-family@/-override.ly}
516
517
518 @node New dynamic marks
519 @subsection New dynamic marks
520
521 It is possible to print new dynamic marks or text that should be aligned
522 with dynamics.  Use @code{make-dynamic-script} to create these marks.
523
524 @cindex make-dynamic-script
525
526 @lilypond[quote,verbatim,ragged-right]
527 sfzp = #(make-dynamic-script "sfzp")
528 \relative c' {
529   c4 c c\sfzp c
530 }
531 @end lilypond
532
533 @cindex Dynamics, editorial
534 @cindex Dynamics, parenthesis
535
536 It is also possible to print dynamics in round parenthesis or square
537 brackets.  These are often used for adding editorial dynamics.
538
539 @lilypond[quote,verbatim,ragged-right]
540 rndf = \markup{ \center-align {\line { \bold{\italic (}
541   \dynamic f \bold{\italic )} }} }
542 boxf = \markup{ \bracket { \dynamic f } }
543 { c'1_\rndf c'1_\boxf }
544 @end lilypond
545
546
547
548 @node Preparing parts
549 @section Preparing parts
550
551 This section describes various notation that are useful for preparing
552 individual parts.
553
554 @menu
555 * Multi measure rests::         
556 * Metronome marks::             
557 * Rehearsal marks::             
558 * Bar numbers::                 
559 * Instrument names::            
560 * Instrument transpositions::   
561 * Ottava brackets::             
562 * Different editions from one source::  
563 @end menu
564
565
566 @node Multi measure rests
567 @subsection Multi measure rests
568
569 @cindex multi measure rests
570 @cindex full measure rests
571 @cindex Rests, multi measure
572 @cindex Rests, full measure
573 @cindex whole rests for a full measure
574 @cindex @code{R}
575
576 Rests for one full measure (or many bars) are entered using `@code{R}'.  It
577 is specifically meant for full bar rests and for entering parts: the rest
578 can expand to fill a score with rests, or it can be printed as a single
579 multi-measure rest.  This expansion is controlled by the property
580 @code{Score.skipBars}.  If this is set to true, empty measures will not
581 be expanded, and the appropriate number is added automatically
582
583 @lilypond[quote,ragged-right,fragment,verbatim]
584 \time 4/4 r1 | R1 | R1*2
585 \set Score.skipBars = ##t R1*17 R1*4
586 @end lilypond
587
588 The @code{1} in @code{R1} is similar to the duration notation used for
589 notes.  Hence, for time signatures other than 4/4, you must enter other
590 durations.  This can be done with augmentation dots or fractions
591
592 @lilypond[quote,ragged-right,fragment,verbatim]
593 \set Score.skipBars = ##t
594 \time 3/4
595 R2. | R2.*2
596 \time 13/8
597 R1*13/8
598 R1*13/8*12 |
599 \time 10/8 R4*5*4 |
600 @end lilypond
601
602 An @code{R} spanning a single measure is printed as either a whole rest
603 or a breve, centered in the measure regardless of the time signature.
604
605 If there are only a few measures of rest, LilyPond prints ``church rests''
606 (a series of rectangles) in the staff.  To replace that with a simple
607 rest, use @code{MultiMeasureRest.expand-limit}.
608
609 @lilypond[quote,ragged-right,fragment,verbatim]
610 \set Score.skipBars = ##t
611 R1*2 | R1*5 | R1*9
612 \override MultiMeasureRest #'expand-limit = 1
613 R1*2 | R1*5 | R1*9
614 @end lilypond
615
616 @cindex text on multi-measure rest
617 @cindex script on multi-measure rest
618 @cindex fermata on multi-measure rest
619
620 Texts can be added to multi-measure rests by using the
621 @var{note}-@code{markup} syntax @ref{Text markup}.
622 A variable (@code{\fermataMarkup}) is provided for
623 adding fermatas
624
625 @lilypond[quote,ragged-right,verbatim,fragment]
626 \set Score.skipBars = ##t
627 \time 3/4
628 R2.*10^\markup { \italic "ad lib." }
629 R2.^\fermataMarkup
630 @end lilypond
631
632 Warning!  This text is created by @code{MultiMeasureRestText}, not
633 @code{TextScript}.
634
635 @lilypond[quote,ragged-right,verbatim,fragment]
636 \override TextScript #'padding = #5
637 R1^"low"
638 \override MultiMeasureRestText #'padding = #5
639 R1^"high"
640 @end lilypond
641
642 If you want to have text on the left end of a multi-measure rest,
643 attach the text to a zero-length skip note, i.e.,
644
645 @example
646 s1*0^"Allegro"
647 R1*4
648 @end example
649
650
651 @seealso
652
653 Program reference: @internalsref{MultiMeasureRestMusicGroup},
654 @internalsref{MultiMeasureRest}.
655
656 The layout object @internalsref{MultiMeasureRestNumber} is for the
657 default number, and @internalsref{MultiMeasureRestText} for user
658 specified texts.
659
660
661 @refbugs
662
663 It is not possible to use fingerings (e.g., @code{R1-4}) to put numbers
664 over multi-measure rests.  And the pitch of multi-measure rests (or
665 staff-centered rests) can not be influenced.
666
667 @cindex condensing rests
668
669 There is no way to automatically condense multiple rests into a single
670 multi-measure rest.  Multi-measure rests do not take part in rest
671 collisions.
672
673 Be careful when entering multi-measure rests followed by whole
674 notes.  The following will enter two notes lasting four measures each
675 @example
676 R1*4 cis cis
677 @end example
678 When @code{skipBars} is set, the result will look OK, but the bar
679 numbering will be off.
680
681
682 @node Metronome marks
683 @subsection Metronome marks
684
685 @cindex Tempo
686 @cindex beats per minute
687 @cindex metronome marking
688
689 Metronome settings can be entered as follows
690 @example
691 \tempo @var{duration} = @var{per-minute}
692 @end example
693
694 In the MIDI output, they are interpreted as a tempo change.  In the
695 layout output, a metronome marking is printed
696 @cindex @code{\tempo}
697 @lilypond[quote,ragged-right,verbatim,fragment]
698 \tempo 8.=120 c''1
699 @end lilypond
700
701
702 @commonprop
703
704 To change the tempo in the MIDI output without printing anything, make
705 the metronome marking invisible
706 @example
707 \once \override Score.MetronomeMark #'transparent = ##t
708 @end example
709
710 To print other metronome markings, use these markup commands
711 @lilypond[quote,ragged-right,verbatim,relative,fragment]
712 c4^\markup {
713   (
714   \smaller \general-align #Y #DOWN \note #"16." #1
715   =
716   \smaller \general-align #Y #DOWN \note #"8" #1
717   ) }
718 @end lilypond
719
720 @noindent
721 See @ref{Text markup} for more details.
722
723
724 @seealso
725
726 Program reference: @internalsref{MetronomeMark}.
727
728
729 @refbugs
730
731 Collisions are not checked.  If you have notes above the top line of
732 the staff (or notes with articulations, slurs, text, etc), then the
733 metronome marking may be printed on top of musical symbols.  If this
734 occurs, increase the padding of the metronome mark to place it 
735 further away from the staff.
736
737 @example
738 \override Score.MetronomeMark #'padding = #2.5
739 @end example
740
741
742 @node Rehearsal marks
743 @subsection Rehearsal marks
744
745 @cindex Rehearsal marks
746 @cindex @code{\mark}
747
748 To print a rehearsal mark, use the @code{\mark} command
749
750 @lilypond[quote,ragged-right,fragment,verbatim,relative=2]
751 c1 \mark \default
752 c1 \mark \default
753 c1 \mark #8
754 c1 \mark \default
755 c1 \mark \default
756 @end lilypond
757
758 @noindent
759 The letter@tie{}`I' is skipped in accordance with engraving traditions.
760 If you wish to include the letter `I', then use
761
762 @example
763 \set Score.markFormatter = #format-mark-alphabet
764 @end example
765
766 The mark is incremented automatically if you use @code{\mark
767 \default}, but you can also use an integer argument to set the mark
768 manually.  The value to use is stored in the property
769 @code{rehearsalMark}.
770
771 The style is defined by the property @code{markFormatter}.  It is a
772 function taking the current mark (an integer) and the current context
773 as argument.  It should return a markup object.  In the following
774 example, @code{markFormatter} is set to a canned procedure.  After a
775 few measures, it is set to function that produces a boxed number.
776
777 @lilypond[fragment,quote,ragged-right,verbatim,relative=2]
778 \set Score.markFormatter = #format-mark-numbers
779 c1 \mark \default
780 c1 \mark \default
781 \set Score.markFormatter = #format-mark-box-numbers
782 c1 \mark \default
783 c1 \mark \default
784 c1
785 @end lilypond
786
787 The file @file{scm/@/translation@/-functions@/.scm} contains the definitions
788 of @code{format-mark-numbers} (the default format), @code{format-mark-box-numbers},
789 @code{format-mark-letters} and @code{format-mark-box-letters}.
790 These can be used as inspiration for other formatting functions.
791
792 You may use @code{format-mark-barnumbers}, @code{format-mark-box-barnumbers},
793 and @code{format-mark-circle-barnumbers} to get bar numbers instead of
794 incremented numbers or letters.
795
796
797 @seealso
798
799 Program reference: @internalsref{RehearsalMark}.
800
801 Init files: @file{scm/@/translation@/-functions@/.scm} contains the
802 definition of @code{format-mark-numbers} and
803 @code{format-mark-letters}.  They can be used as inspiration for other
804 formatting functions.
805
806 Examples: @inputfileref{input/@/regression,rehearsal@/-mark@/-letter@/.ly},
807
808 @inputfileref{input/@/regression,rehearsal@/-mark@/-number@/.ly}.
809
810
811 @node Bar numbers
812 @subsection Bar numbers
813
814 @cindex Bar numbers
815 @cindex measure numbers
816 @cindex @code{currentBarNumber}
817
818 Bar numbers are printed by default at the start of the line.  The
819 number itself is stored in the @code{currentBarNumber} property, which
820 is normally updated automatically for every measure.
821
822 Bar numbers can be typeset at regular intervals instead of at the
823 beginning of each line.  This is illustrated in the following example,
824 whose source is available as
825 @inputfileref{input/@/test,bar@/-number@/-regular@/-interval@/.ly}
826
827 @lilypondfile[ragged-right,quote]{bar-number-regular-interval.ly}
828
829 Bar numbers can be typeset manually by tweaking the
830 @code{markFormatter} property
831
832 @lilypond[verbatim,ragged-right,quote]
833 \relative c' {
834   \set Score.markFormatter
835     = #(lambda (mark context)
836       (make-bold-markup
837         (make-box-markup
838           (number->string (ly:context-property context
839                                                'currentBarNumber)))))
840
841   c1 \bar "||" \mark \default c1 c1 \mark \default c1 \bar "|."
842 }
843 @end lilypond
844
845 Bar numbers can be manually changed by setting the
846 @code{Staff.currentBarNumber} property
847
848 @lilypond[verbatim,ragged-right,quote]
849 \relative c' {
850   \repeat unfold 4 {c4 c c c} \break
851   \set Score.currentBarNumber = #50
852   \repeat unfold 4 {c4 c c c}
853 }
854 @end lilypond
855
856 Bar numbers can be removed entirely by removing the Bar number
857 engraver from the score.
858
859 @lilypond[verbatim,ragged-right,quote,relative=2]
860 \layout {
861   \context {
862     \Score
863     \remove "Bar_number_engraver"
864   }
865 }
866 {
867 c4 c c c \break
868 c4 c c c
869 }
870 @end lilypond
871
872
873 @seealso
874
875 Program reference: @internalsref{BarNumber}.
876
877 Examples:
878 @inputfileref{input/@/test,bar@/-number@/-every@/-five@/-reset@/.ly},
879 and @inputfileref{input/@/test,bar@/-number@/-regular@/-interval@/.ly}.
880
881
882 @refbugs
883
884 Bar numbers can collide with the @internalsref{StaffGroup} bracket, if
885 there is one at the top.  To solve this, the
886 @code{padding} property of @internalsref{BarNumber} can be
887 used to position the number correctly.
888
889
890 @node Instrument names
891 @subsection Instrument names
892
893 In an orchestral score, instrument names are printed at the left side
894 of the staves.
895
896 This can be achieved by setting @internalsref{Staff}.@code{instrument}
897 and @internalsref{Staff}.@code{instr}.  This will print a string before
898 the start of the staff.  For the first staff, @code{instrument} is
899 used, for the following ones, @code{instr} is used.
900
901 @lilypond[quote,verbatim,ragged-right,relative=1,fragment]
902 \set Staff.instrument = "Ploink "
903 \set Staff.instr = "Plk "
904 c1
905 \break
906 c''
907 @end lilypond
908
909 You can also use markup texts to construct more complicated instrument
910 names, for example
911
912 @lilypond[quote,fragment,verbatim,ragged-right]
913 \set Staff.instrument = \markup {
914   \column { "Clarinetti"
915             \line { "in B" \smaller \flat } } }
916 c''1
917 @end lilypond
918
919 If you wish to center the instrument names, you must center all of them
920
921 @lilypond[quote,verbatim,ragged-right]
922 { <<
923 \new Staff {
924   \set Staff.instrument = \markup {
925     \center-align { "Clarinetti"
926       \line { "in B" \smaller \flat } } }
927   c''1
928 }
929 \new Staff {
930   \set Staff.instrument = \markup{ \center-align { Vibraphone }}
931   c''1
932 }
933 >>
934 }
935 @end lilypond
936
937 For longer instrument names, it may be useful to increase the
938 @code{indent} setting in the @code{\layout} block.
939
940 @seealso
941
942 Program reference: @internalsref{InstrumentName}.
943
944 @refbugs
945
946 When you put a name on a grand staff or piano staff, the width of the
947 brace is not taken into account. The following property setting can be
948 used to move the instrument names to the left, in such situations.
949
950 @example
951 \override Score.InstrumentName #'space-alist = #'((left-edge extra-space . 2.0))
952 @end example
953
954
955 @node Instrument transpositions
956 @subsection Instrument transpositions
957
958 @cindex transposition, MIDI
959 @cindex transposition, instrument
960
961 The key of a transposing instrument can also be specified.  This
962 applies to many wind instruments, for example, clarinets (B-flat, A, and
963 E-flat), horn (F) and trumpet (B-flat, C, D, and E-flat).
964
965 The transposition is entered after the keyword @code{\transposition}
966
967 @example
968 \transposition bes   %% B-flat clarinet
969 @end example
970
971 @noindent
972 This command sets the property @code{instrumentTransposition}.  The value of
973 this property is used for MIDI output and quotations.  It does not
974 affect how notes are printed in the current staff.  To change the printed
975 output, see @ref{Transpose}.
976
977 The pitch to use for @code{\transposition} should correspond to the
978 real sound heard when a @code{c'} written on the staff is played by the
979 transposing instrument.  For example, when entering a score in
980 concert pitch, typically all voices are entered in C, so
981 they should be entered as
982
983 @example
984 clarinet = @{
985   \transposition c'
986   ...
987 @}
988 saxophone = @{
989   \transposition c'
990   ...
991 @}
992 @end example
993
994 The command @code{\transposition} should be used when the music is
995 entered from a (transposed) orchestral part.  For example, in
996 classical horn parts, the tuning of the instrument is often changed
997 during a piece.  When copying the notes from the part, use
998 @code{\transposition}, e.g.,
999
1000 @example
1001 \transposition d'
1002 c'4^"in D"
1003 ...
1004 \transposition g'
1005 c'4^"in G"
1006 ...
1007 @end example
1008
1009
1010 @node Ottava brackets
1011 @subsection Ottava brackets
1012
1013 `Ottava' brackets introduce an extra transposition of an octave for
1014 the staff.  They are created by invoking the function
1015 @code{set-octavation}
1016
1017 @cindex ottava
1018 @cindex 15ma
1019 @cindex octavation
1020
1021 @lilypond[quote,ragged-right,verbatim,fragment]
1022 \relative c''' {
1023   a2 b
1024   #(set-octavation 1)
1025   a b
1026   #(set-octavation 0)
1027   a b
1028 }
1029 @end lilypond
1030
1031 The @code{set-octavation} function also takes -1 (for 8va bassa) and 2
1032 (for 15ma) as arguments.  Internally the function sets the properties
1033 @code{ottavation} (e.g., to @code{"8va"}) and
1034 @code{centralCPosition}.  For overriding the text of the bracket, set
1035 @code{ottavation} after invoking @code{set-octavation}, i.e.,
1036
1037 @lilypond[quote,ragged-right,verbatim]
1038 {
1039   #(set-octavation 1)
1040   \set Staff.ottavation = #"8"
1041   c'''
1042 }
1043 @end lilypond
1044
1045
1046 @seealso
1047
1048 Program reference: @internalsref{OttavaBracket}.
1049
1050 Examples: @inputfileref{input/@/regression,ottava@/.ly},
1051 @inputfileref{input/@/regression,ottava@/-broken@/.ly}.
1052
1053
1054 @refbugs
1055
1056 @code{set-octavation} will get confused when clef changes happen
1057 during an octavation bracket.
1058
1059
1060 @node Different editions from one source
1061 @subsection Different editions from one source
1062
1063 @cindex @code{\tag}
1064 @cindex tag
1065
1066 The @code{\tag} command marks music expressions with a name.  These
1067 tagged expressions can be filtered out later.  With this mechanism it
1068 is possible to make different versions of the same music source.
1069
1070 In the following example, we see two versions of a piece of music, one
1071 for the full score, and one with cue notes for the instrumental part
1072
1073 @example
1074 c1
1075 <<
1076   \tag #'part <<
1077     R1 \\
1078     @{
1079       \set fontSize = #-1
1080       c4_"cue" f2 g4 @}
1081   >>
1082   \tag #'score R1
1083 >>
1084 c1
1085 @end example
1086
1087 The same can be applied to articulations, texts, etc.: they are
1088 made by prepending
1089 @example
1090 -\tag #@var{your-tag}
1091 @end example
1092 to an articulation, for example,
1093 @example
1094 c1-\tag #'part ^4
1095 @end example
1096
1097 This defines a note with a conditional fingering indication.
1098
1099 @cindex keepWithTag
1100 @cindex removeWithTag
1101 By applying the @code{\keepWithTag} and @code{\removeWithTag}
1102 commands, tagged expressions can be filtered.  For example,
1103 @example
1104 <<
1105   @var{the music}
1106   \keepWithTag #'score @var{the music}
1107   \keepWithTag #'part @var{the music}
1108 >>
1109 @end example
1110 would yield
1111
1112 @lilypondfile[ragged-right,quote]{tag-filter.ly}
1113
1114 The arguments of the @code{\tag} command should be a symbol
1115 (such as @code{#'score} or @code{#'part}), followed by a
1116 music expression.  It is possible to put multiple tags on
1117 a piece of music with multiple @code{\tag} entries,
1118
1119 @example
1120   \tag #'original-part \tag #'transposed-part @dots{}
1121 @end example
1122
1123
1124 @seealso
1125
1126 Examples: @inputfileref{input/@/regression,tag@/-filter@/.ly}.
1127
1128
1129 @refbugs
1130
1131 Multiple rests are not merged if you create the score with both tagged
1132 sections.
1133  
1134
1135
1136 @node Orchestral music
1137 @section Orchestral music
1138
1139 Orchestral music involves some special notation, both in the full
1140 score and the individual parts.  This section explains how to tackle
1141 some common problems in orchestral music.
1142
1143 @menu
1144 * Automatic part combining::    
1145 * Hiding staves::               
1146 * Quoting other voices::        
1147 * Formatting cue notes::        
1148 * Aligning to cadenzas::        
1149 @end menu
1150
1151
1152 @node Automatic part combining
1153 @subsection Automatic part combining
1154 @cindex automatic part combining
1155 @cindex part combiner
1156
1157 Automatic part combining is used to merge two parts of music onto a
1158 staff.  It is aimed at typesetting orchestral scores.  When the two
1159 parts are identical for a period of time, only one is shown.  In
1160 places where the two parts differ, they are typeset as separate
1161 voices, and stem directions are set automatically.  Also, solo and
1162 @emph{a due} parts are identified and can be marked.
1163
1164 The syntax for part combining is
1165
1166 @example
1167 \partcombine @var{musicexpr1} @var{musicexpr2}
1168 @end example
1169
1170
1171 The following example demonstrates the basic functionality of the part
1172 combiner: putting parts on one staff, and setting stem directions and
1173 polyphony
1174
1175 @lilypond[quote,verbatim,ragged-right,fragment]
1176 \new Staff \partcombine
1177   \relative g' { g g a( b) c c r r }
1178   \relative g' { g g r4 r e e g g }
1179 @end lilypond
1180
1181 The first @code{g} appears only once, although it was
1182 specified twice (once in each part).  Stem, slur, and tie directions are
1183 set automatically, depending whether there is a solo or unisono.  The
1184 first part (with context called @code{one}) always gets up stems, and
1185 `Solo', while the second (called @code{two}) always gets down stems and
1186 `Solo II'.
1187
1188 If you just want the merging parts, and not the textual markings, you
1189 may set the property @code{printPartCombineTexts} to false
1190
1191 @lilypond[quote,verbatim,ragged-right,fragment,relative=2]
1192 \new Staff <<
1193   \set Staff.printPartCombineTexts = ##f
1194   \partcombine
1195     \relative g' { g a( b) r }
1196     \relative g' { g r4 r f }
1197 >>
1198 @end lilypond
1199
1200 To change the text that is printed for solos or merging, you may
1201 set the @code{soloText}, @code{soloIIText}, and @code{aDueText}
1202 properties.
1203
1204 @lilypond[quote,verbatim,ragged-right,fragment,relative=2]
1205 \new Staff <<
1206   \set Score.soloText = #"ichi"
1207   \set Score.soloIIText = #"ni"
1208   \set Score.aDueText = #"tachi"
1209   \partcombine
1210     \relative g' { g4 g a( b) r }
1211     \relative g' { g4 g r r f }
1212 >>
1213 @end lilypond
1214
1215 Both arguments to @code{\partcombine} will be interpreted as
1216 @internalsref{Voice} contexts.  If using relative octaves,
1217 @code{\relative} should be specified for both music expressions, i.e.,
1218
1219 @example
1220 \partcombine
1221   \relative @dots{} @var{musicexpr1}
1222   \relative @dots{} @var{musicexpr2}
1223 @end example
1224
1225 @noindent
1226 A @code{\relative} section that is outside of @code{\partcombine} has
1227 no effect on the pitches of @var{musicexpr1} and @var{musicexpr2}.
1228
1229 @seealso
1230
1231 Program reference: @internalsref{PartCombineMusic}.
1232
1233 @refbugs
1234
1235 When @code{printPartCombineTexts} is set, when the two voices play the
1236 same notes on and off, the part combiner may typeset @code{a2} more
1237 than once in a measure.
1238
1239 @code{\partcombine} cannot be inside @code{\times}.
1240
1241 @code{\partcombine} cannot be inside @code{\relative}.
1242
1243 Internally, the @code{\partcombine} interprets both arguments as
1244 @code{Voice}s named @code{one} and @code{two}, and then decides when
1245 the parts can be combined.  Consequently, if the arguments switch to
1246 differently named @internalsref{Voice} contexts, the events in those
1247 will be ignored.
1248
1249
1250 @node Hiding staves
1251 @subsection Hiding staves
1252
1253 @cindex Frenched scores
1254 @cindex Hiding staves
1255
1256 In orchestral scores, staff lines that only have rests are usually
1257 removed; this saves some space.  This style is called `French Score'.
1258 For @internalsref{Lyrics},
1259 @internalsref{ChordNames} and @internalsref{FiguredBass}, this is
1260 switched on by default.  When the lines of these contexts turn out
1261 empty after the line-breaking process, they are removed.
1262
1263 For normal staves, a specialized @internalsref{Staff} context is
1264 available, which does the same: staves containing nothing (or only
1265 multi-measure rests) are removed.  The context definition is stored in
1266 @code{\RemoveEmptyStaffContext} variable.  Observe how the second staff
1267 in this example disappears in the second line
1268
1269 @lilypond[quote,ragged-right,verbatim]
1270 \layout {
1271   \context { \RemoveEmptyStaffContext }
1272 }
1273
1274 {
1275   \relative c' <<
1276     \new Staff { e4 f g a \break c1 }
1277     \new Staff { c4 d e f \break R1 }
1278   >>
1279 }
1280 @end lilypond
1281
1282 The first system shows all staves in full.  If empty staves should be
1283 removed from the first system too, set @code{remove-first} to true in
1284 @internalsref{VerticalAxisGroup}.
1285
1286 @example
1287 \override Score.VerticalAxisGroup #'remove-first = ##t
1288 @end example
1289
1290 To remove other types of contexts, use @code{\AncientRemoveEmptyStaffContext}
1291 or @code{\RemoveEmptyRhythmicStaffContext}.
1292
1293 Another application is making ossia sections, i.e., alternative
1294 melodies on a separate piece of staff, with help of a Frenched
1295 staff.  See @inputfileref{input/@/test,ossia@/.ly} for an example.
1296
1297
1298 @node Quoting other voices
1299 @subsection Quoting other voices
1300
1301 With quotations, fragments of other parts can be inserted into a part
1302 directly.  Before a part can be quoted, it must be marked especially as
1303 quotable.  This is done with the @code{\addquote} command.
1304
1305 @example
1306 \addquote @var{name} @var{music}
1307 @end example
1308
1309
1310 @noindent
1311 Here, @var{name} is an identifying string.  The @var{music} is any kind
1312 of music.  Here is an example of @code{\addquote}
1313
1314 @example
1315 \addquote clarinet \relative c' @{
1316   f4 fis g gis
1317 @}
1318 @end example
1319
1320 This command must be entered at toplevel, i.e., outside any music
1321 blocks.
1322
1323 After calling @code{\addquote}, the quotation may then be done with
1324 @code{\quoteDuring} or @code{\cueDuring},
1325
1326 @example
1327 \quoteDuring #@var{name} @var{music}
1328 @end example
1329
1330 During a part, a piece of music can be quoted with the @code{\quoteDuring}
1331 command.
1332
1333 @example
1334 \quoteDuring #"clarinet" @{ s2. @}
1335 @end example
1336
1337 This would cite three quarter notes (the duration of @code{s2.})  of
1338 the previously added @code{clarinet} voice.
1339
1340
1341 More precisely, it takes the current time-step of the part being
1342 printed, and extracts the notes at the corresponding point of the
1343 @code{\addquote}d voice.  Therefore, the argument to @code{\addquote}
1344 should be the entire part of the voice to be quoted, including any
1345 rests at the beginning.
1346
1347 Quotations take into account the transposition of both source and target
1348 instruments, if they are specified using the @code{\transposition} command.
1349
1350 @lilypond[quote,ragged-right,verbatim]
1351 \addquote clarinet \relative c' {
1352   \transposition bes
1353   f4 fis g gis
1354 }
1355
1356 {
1357   e'8 f'8 \quoteDuring #"clarinet" { s2 }
1358 }
1359 @end lilypond
1360
1361 The type of events that are present in cue notes can be trimmed with
1362 the @code{quotedEventTypes} property.  The default value is
1363 @code{(note-event rest-event)}, which means that only notes and
1364 rests of the cued voice end up in the @code{\quoteDuring}.
1365 Setting
1366
1367 @example
1368 \set Staff.quotedEventTypes =
1369        #'(note-event articulation-event dynamic-event)
1370 @end example
1371
1372 @noindent
1373 will quote notes (but no rests), together with scripts and dynamics.
1374
1375 @refbugs
1376
1377 Only the contents of the first @internalsref{Voice} occurring in an
1378 @code{\addquote} command will be considered for quotation, so
1379 @var{music} can not contain @code{\new} and @code{\context Voice}
1380 statements that would switch to a different Voice.
1381
1382 Quoting grace notes is broken and can even cause LilyPond to crash.
1383
1384 @seealso
1385
1386 In this manual: @ref{Instrument transpositions}.
1387
1388 Examples: @inputfileref{input/@/regression,quote@/.ly}
1389 @inputfileref{input/@/regression,quote@/-transposition@/.ly}
1390
1391 Program reference: @internalsref{QuoteMusic}.
1392
1393
1394 @node Formatting cue notes
1395 @subsection Formatting cue notes
1396
1397 The previous section deals with inserting notes from another voice.
1398 There is a more advanced music function called @code{\cueDuring},
1399 which makes formatting cue notes easier.
1400
1401 The syntax is
1402
1403 @example
1404   \cueDuring #@var{name} #@var{updown} @var{music}
1405 @end example
1406
1407 This will insert notes from the part @var{name} into a
1408 @internalsref{Voice} called @code{cue}.  This happens simultaneously
1409 with @var{music}, which usually is a rest.  When the cue notes start,
1410 the staff in effect becomes polyphonic for a moment.  The argument
1411 @var{updown} determines whether the cue notes should be notated as a
1412 first or second voice.
1413
1414
1415 @lilypond[verbatim,ragged-right]
1416 smaller = {
1417   \set fontSize = #-2
1418   \override Stem #'length-fraction = #0.8
1419   \override Beam #'thickness = #0.384
1420   \override Beam #'length-fraction = #0.8
1421 }
1422
1423 \addquote clarinet \relative {
1424   R1*20
1425   r2 r8 c f f
1426
1427
1428 \new Staff \relative  <<
1429
1430   % setup a context for  cue  notes.
1431   \new Voice = "cue" { \smaller \skip 1*21 }
1432   
1433   \set Score.skipBars = ##t
1434   
1435   \new Voice {
1436     R1*20
1437     \cueDuring #"clarinet" #1 {
1438       R1
1439     }
1440     g4 g2. 
1441   }
1442 >>
1443 @end lilypond 
1444
1445
1446 Here are a couple of hints for successful cue notes
1447
1448 @itemize @bullet
1449 @item
1450 Cue notes have smaller font sizes.
1451 @item
1452  the cued part is marked with the instrument playing the cue.
1453 @item
1454  when the original part takes over again, this should be marked with
1455  the name of the original instrument.
1456
1457 @c really?  Are you sure about that last point?  I'll check after 3.0 -gp
1458
1459 @c Yes, this is good practice.  Otherwise, the start of the original
1460 @c part can only be seen from the font size.  This is not good enough
1461 @c for sight-reading.  It is possilbe to use other
1462 @c markers (eg. a big close-bracket over the staff) to indicate the cue notes are
1463 @c finished.
1464 @c -hwn
1465
1466
1467 Any other changes introduced by the cued part should also be
1468 undone.  For example, if the cued instrument plays in a different clef,
1469 the original clef should be stated once again.
1470
1471 @end itemize
1472
1473
1474 @node Aligning to cadenzas
1475 @subsection Aligning to cadenzas
1476
1477 In an orchestral context, cadenzas present a special problem:
1478 when constructing a score that includes a cadenza, all other
1479 instruments should skip just as many notes as the length of the
1480 cadenza, otherwise they will start too soon or too late.
1481
1482 A solution to this problem are the functions @code{mmrest-of-length}
1483 and @code{skip-of-length}.  These Scheme functions take a piece of music
1484 as argument, and generate a @code{\skip} or multi-rest, exactly as
1485 long as the piece.  The use of @code{mmrest-of-length} is demonstrated
1486 in the following example.
1487
1488 @lilypond[verbatim,ragged-right,quote]
1489 cadenza = \relative c' {
1490   c4 d8 << { e f g } \\ { d4. } >>
1491   g4 f2 g4 g
1492 }
1493
1494 \new GrandStaff <<
1495   \new Staff { \cadenza c'4 }
1496   \new Staff {
1497     #(ly:export (mmrest-of-length cadenza))
1498     c'4
1499   }
1500 >>
1501 @end lilypond
1502
1503
1504
1505
1506 @node Contemporary notation
1507 @section Contemporary notation
1508
1509 In the 20th century, composers have greatly expanded the musical
1510 vocabulary.  With this expansion, many innovations in musical notation
1511 have been tried.  The book ``Music Notation in the 20th century'' by
1512 Kurt Stone gives a comprehensive overview (see @ref{Literature
1513 list}).
1514
1515 This section describes notation that does
1516 not fit into traditional notation categories, such as pitches,
1517 tuplet beams, and articulation.  For contemporary notation
1518 that fits into traditional notation categories, such as
1519 microtones, nested tuplet beams, and unusual fermatas, please
1520 see those sections of the documentation.
1521
1522
1523 @c I don't think we should discourage modern composers who might
1524 @c want to sponsor new features.  :)
1525 @c  In general, the use of new, innovative notation makes a piece
1526 @c harder to understand and perform and its use should therefore be
1527 @c avoided.  For this reason, support for contemporary notation in
1528 @c LilyPond is limited.
1529
1530
1531 @menu
1532 * Polymetric notation::         
1533 * Time administration::         
1534 * Proportional notation::       
1535 * Clusters::                    
1536 * Special noteheads::           
1537 * Feathered beams::             
1538 * Improvisation::               
1539 @end menu
1540
1541
1542 @node Polymetric notation
1543 @subsection Polymetric notation
1544
1545 Double time signatures are not supported explicitly, but they can be
1546 faked.  In the next example, the markup for the time signature is
1547 created with a markup text.  This markup text is inserted in the
1548 @internalsref{TimeSignature} grob.
1549
1550 @lilypond[verbatim,ragged-right]
1551 % create 2/4 + 5/8
1552 tsMarkup =\markup {
1553   \number {
1554     \column { "2" "4" }
1555     \musicglyph #"scripts.stopped"
1556     \bracket \column { "5" "8" }
1557   }
1558 }
1559
1560 {
1561   \override Staff.TimeSignature #'stencil = #ly:text-interface::print
1562   \override Staff.TimeSignature #'text = #tsMarkup
1563   \time 3/2
1564   c'2 \bar ":" c'4 c'4.
1565 }
1566 @end lilypond
1567
1568 Each staff can also have its own time signature.  This is done by
1569 moving the @internalsref{Timing_translator} to the @internalsref{Staff}
1570 context.
1571
1572 @example
1573 \layout @{
1574   \context @{ \Score
1575      \remove "Timing_translator"
1576      \remove "Default_bar_line_engraver"
1577   @}
1578   \context @{
1579     \Staff
1580     \consists "Timing_translator"
1581     \consists "Default_bar_line_engraver"
1582   @}
1583     
1584 @}
1585 @end example
1586
1587
1588 Now, each staff has its own time signature.
1589 @example
1590 <<
1591   \new Staff @{
1592     \time 3/4
1593     c4 c c | c c c |
1594   @}
1595   \new Staff @{
1596     \time 2/4
1597     c4 c | c c | c c
1598   @}
1599   \new Staff @{
1600     \time 3/8
1601     c4. c8 c c c4. c8 c c
1602   @}
1603 >>
1604 @end example
1605
1606 @lilypond[quote,ragged-right]
1607 \layout{
1608   \context{
1609      \Score
1610      \remove "Timing_translator"
1611      \remove "Default_bar_line_engraver"
1612     }
1613   \context{ \Staff
1614     \consists "Timing_translator"
1615     \consists "Default_bar_line_engraver"
1616   }
1617 }
1618
1619 \relative c' <<
1620   \new Staff {
1621     \time 3/4
1622     c4 c c | c c c |
1623   }
1624   \new Staff {
1625     \time 2/4
1626     c4 c | c c | c c
1627   }
1628   \new Staff {
1629     \time 3/8
1630     c4. c8 c c c4. c8 c c
1631   }
1632 >>
1633 @end lilypond
1634
1635
1636 A different form of polymetric notation is where note lengths have
1637 different values across staves.
1638
1639 This notation can be created by setting a common time signature for
1640 each staff but replacing it manually using
1641 @code{timeSignatureFraction} to the desired fraction.  Then the printed
1642 durations in each staff are scaled to the common time signature.
1643 The latter is done with @code{\compressMusic}, which is used similar
1644 to @code{\times}, but does not create a tuplet bracket. The syntax is
1645 @example
1646 \compressMusic #'(@var{numerator} . @var{denominator}) @var{musicexpr}
1647 @end example
1648
1649
1650
1651 In this example, music with the time signatures of 3/4, 9/8, and 10/8 are
1652 used in parallel.  In the second staff, shown durations are multiplied by
1653 2/3, so that 2/3 * 9/8 = 3/4, and in the third staff, shown durations are
1654 multiplied by 3/5, so that 3/5 * 10/8 = 3/4.
1655
1656 @lilypond[quote,ragged-right,verbatim,fragment]
1657 \relative c' { <<
1658   \new Staff {
1659     \time 3/4
1660     c4 c c | c c c |
1661   }
1662   \new Staff {
1663     \time 3/4
1664     \set Staff.timeSignatureFraction = #'(9 . 8)
1665     \compressMusic #'(2 . 3)
1666       \repeat unfold 6 { c8[ c c] }
1667   }
1668   \new Staff {
1669     \time 3/4
1670     \set Staff.timeSignatureFraction = #'(10 . 8)
1671     \compressMusic #'(3 . 5) {
1672       \repeat unfold 2 { c8[ c c] }
1673       \repeat unfold 2 { c8[ c] }
1674       | c4. c4. \times 2/3 { c8 c c } c4
1675     }
1676   }
1677 >> }
1678 @end lilypond
1679
1680
1681
1682
1683 @refbugs
1684
1685 When using different time signatures in parallel, the spacing is
1686 aligned vertically, but bar lines distort the regular spacing.
1687
1688
1689 @node Time administration
1690 @subsection Time administration
1691
1692 @cindex Time administration
1693
1694 Time is administered by the @internalsref{Time_signature_engraver},
1695 which usually lives in the @internalsref{Score} context.  The
1696 bookkeeping deals with the following variables
1697
1698 @table @code
1699 @item currentBarNumber
1700 The measure number.
1701
1702 @item measureLength
1703 The length of the measures in the current time signature.  For a 4/4
1704 time this is@tie{}1, and for 6/8 it is 3/4.
1705
1706 @item measurePosition
1707 The point within the measure where we currently are.  This quantity
1708 is reset to@tie{}0 whenever it exceeds @code{measureLength}.  When that
1709 happens, @code{currentBarNumber} is incremented.
1710
1711 @item timing
1712 If set to true, the above variables are updated for every time
1713 step.  When set to false, the engraver stays in the current measure
1714 indefinitely.
1715 @end table
1716
1717 Timing can be changed by setting any of these variables explicitly.
1718 In the next example, the 4/4 time signature is printed, but
1719 @code{measureLength} is set to 5/4.  After a while, the measure is
1720 shortened by 1/8, by setting @code{measurePosition} to 7/8 at 2/4
1721 in the measure, so the next bar line will fall at 2/4 + 3/8.  The
1722 3/8 arises because 5/4 normally has 10/8, but we have manually
1723 set the measure position to be 7/8 and 10/8 - 7/8 = 3/8.
1724
1725 @lilypond[quote,ragged-right,verbatim,relative,fragment]
1726 \set Score.measureLength = #(ly:make-moment 5 4)
1727 c1 c4
1728 c1 c4
1729 c4 c4
1730 \set Score.measurePosition = #(ly:make-moment 7 8)
1731 b8 b b
1732 c4 c1
1733 @end lilypond
1734
1735 @noindent
1736 As the example illustrates, @code{ly:make-moment n m} constructs a
1737 duration of n/m of a whole note.  For example, @code{ly:make-moment 1 8} is an eighth
1738 note duration and @code{ly:make-moment 7 16} is the duration of
1739 seven sixteenths notes.
1740
1741
1742 @node Proportional notation
1743 @subsection Proportional notation
1744 @cindex Proportional notation
1745
1746 Notes can be spaced proportional to their time-difference by
1747 assigning a duration to @code{proportionalNotationDuration}
1748
1749 @lilypond[quote,ragged-right,verbatim,relative=2,fragment]
1750 <<
1751   \set Score.proportionalNotationDuration = #(ly:make-moment 1 16)
1752   \new Staff { c8[ c c c c c]  c4 c2 r2 }
1753   \new Staff { c2  \times 2/3 { c8 c c } c4 c1 }
1754 >>
1755 @end lilypond
1756
1757
1758 @node Clusters
1759 @subsection Clusters
1760
1761 @cindex cluster
1762
1763 A cluster indicates a continuous range of pitches to be played.  They
1764 can be denoted as the envelope of a set of notes.  They are entered by
1765 applying the function @code{makeClusters} to a sequence of
1766 chords, e.g.,
1767 @lilypond[quote,ragged-right,relative=2,fragment,verbatim]
1768 \makeClusters { <c e > <b f'> }
1769 @end lilypond
1770
1771 The following example (from
1772 @inputfileref{input/@/regression,cluster@/.ly}) shows what the result
1773 looks like
1774
1775 @lilypondfile[ragged-right,quote]{cluster.ly}
1776
1777 Ordinary notes and clusters can be put together in the same staff,
1778 even simultaneously.  In such a case no attempt is made to
1779 automatically avoid collisions between ordinary notes and clusters.
1780
1781 @seealso
1782
1783 Program reference: @internalsref{ClusterSpanner},
1784 @internalsref{ClusterSpannerBeacon},
1785 @internalsref{Cluster_spanner_engraver}.
1786
1787 Examples: @inputfileref{input/@/regression,cluster@/.ly}.
1788
1789 @refbugs
1790
1791 Music expressions like @code{<< @{ g8 e8 @} a4 >>} are not printed
1792 accurately.  Use @code{<g a>8 <e a>8} instead.
1793
1794
1795 @node Special noteheads
1796 @subsection Special noteheads
1797
1798 Different noteheads are used by various instruments for various
1799 meanings -- crosses are used for ``parlato'' with vocalists, stopped
1800 notes on guitar; diamonds are used for harmonics on string instruments,
1801 etc.  There is a shorthand (@code{\harmonic}) for diamond shapes; the
1802 other notehead styles are produced by tweaking the property
1803
1804 @lilypond[ragged-right,relative=1,fragment,verbatim,quote]
1805 c4 d
1806 \override NoteHead #'style = #'cross
1807 e f
1808 \revert NoteHead #'style
1809 e d <c f\harmonic> <d a'\harmonic>
1810 @end lilypond
1811
1812 @noindent
1813 To see all notehead styles, please see
1814 @inputfileref{input/@/regression,note@/-head@/-style@/.ly}.
1815
1816
1817 @seealso
1818
1819 Program reference: @internalsref{NoteHead}.
1820
1821
1822 @node Feathered beams
1823 @subsection Feathered beams
1824
1825 Feathered beams are not supported natively, but they can be faked by
1826 forcing two beams to overlap.  Here is an example,
1827
1828 @c don't change relative setting witout changing positions!
1829 @lilypond[ragged-right,relative=1,fragment,verbatim,quote]
1830 \new Staff <<
1831   \new Voice
1832   {
1833     \stemUp
1834     \once \override Voice.Beam #'positions = #'(0 . 0.5)
1835     c8[ c c c c ]
1836   }
1837   \new Voice {
1838     \stemUp
1839     \once \override Voice.Beam #'positions = #'(0 . -0.5)
1840     c[ c c c c]
1841   }
1842 >>
1843 @end lilypond
1844
1845
1846 @node Improvisation
1847 @subsection Improvisation
1848
1849 Improvisation is sometimes denoted with slashed note heads.  Such note
1850 heads can be created by adding a @internalsref{Pitch_squash_engraver}
1851 to the @internalsref{Staff} or @internalsref{Voice} context.  Then, the
1852 following command
1853
1854 @example
1855 \set squashedPosition = #0
1856 \override NoteHead #'style = #'slash
1857 @end example
1858
1859 @noindent
1860 switches on the slashes.
1861
1862 There are shortcuts @code{\improvisationOn} (and an accompanying
1863 @code{\improvisationOff}) for this command sequence.  They are used in
1864 the following example
1865
1866 @lilypond[verbatim,ragged-right,quote]
1867 \new Staff \with {
1868   \consists Pitch_squash_engraver
1869 } \transpose c c' {
1870   e8 e g a a16(bes)(a8) g \improvisationOn
1871   e8
1872   ~e2~e8 f4 fis8
1873   ~fis2 \improvisationOff a16(bes) a8 g e
1874 }
1875 @end lilypond
1876
1877
1878 @node Educational use
1879 @section Educational use
1880
1881 With the amount of control that LilyPond offers, one can make great
1882 teaching tools in addition to great musical scores.
1883
1884 @menu
1885 * Balloon help::                
1886 * Blank music sheet::           
1887 * Hidden notes::                
1888 * Shape note heads ::           
1889 * Easy Notation note heads::    
1890 * Analysis brackets::           
1891 * Coloring objects::            
1892 @end menu
1893
1894 @node Balloon help
1895 @subsection Balloon help
1896
1897 Elements of notation can be marked and named with the help of a square
1898 balloon.  The primary purpose of this feature is to explain notation.
1899
1900 The following example demonstrates its use.
1901
1902 @lilypond[quote,verbatim,fragment,ragged-right,relative=2]
1903 \new Voice {
1904   \applyOutput
1905     #(add-balloon-text 'NoteHead "heads, or tails?"
1906     '(1 . -3))
1907   c8
1908 }
1909 @end lilypond
1910
1911 @noindent
1912 The function @code{add-balloon-text} takes the name of a grob, the
1913 label to print, and the position where to put the label relative to
1914 the object.  In the above example, the text ``heads or tails?'' ends
1915 3 spaces below and 1 space to the right of the marked head.
1916
1917 @cindex balloon
1918 @cindex notation, explaining
1919
1920 @seealso
1921
1922 Program reference: @internalsref{text-balloon-interface}.
1923
1924 Examples: @inputfileref{input/@/regression,balloon@/.ly}.
1925
1926
1927
1928
1929 @node Blank music sheet
1930 @subsection Blank music sheet
1931
1932 A blank music sheet can be produced also by using invisible notes, and
1933 removing @code{Bar_number_engraver}.
1934
1935
1936 @lilypond[quote,verbatim]
1937 emptymusic = {
1938   \repeat unfold 2 % Change this for more lines.
1939   { s1\break }
1940   \bar "|."
1941 }
1942 \new Score \with {
1943   \override TimeSignature #'transparent = ##t
1944   defaultBarType = #""
1945   \remove Bar_number_engraver
1946 } <<
1947   \new Staff \emptymusic
1948   \new TabStaff \emptymusic
1949 >>
1950 @end lilypond
1951
1952
1953 @node Hidden notes
1954 @subsection Hidden notes
1955
1956 @cindex Hidden notes
1957 @cindex Invisible notes
1958 @cindex Transparent notes
1959
1960 @cindex @code{\hideNotes}
1961 @cindex @code{\unHideNotes}
1962 Hidden (or invisible or transparent) notes can be useful in preparing theory
1963 or composition exercises.
1964
1965 @lilypond[quote,ragged-right,verbatim,relative=2,fragment]
1966 c4 d4
1967 \hideNotes
1968 e4 f4
1969 \unHideNotes
1970 g4 a
1971 @end lilypond
1972
1973 Hidden notes are also great for performing weird tricks.  For example,
1974 slurs cannot be attached to rests or spacer rests, but you may wish
1975 to include that in your score -- string instruments use this notation
1976 when doing pizzicato to indicate that the note should ring for as long
1977 as possible.
1978
1979 @lilypond[quote,ragged-right,verbatim,relative=0,fragment]
1980 \clef bass
1981 << {
1982   c4^"pizz"( \hideNotes c)
1983   \unHideNotes c( \hideNotes c)
1984 } {
1985   s4 r s r
1986 } >>
1987 @end lilypond
1988
1989
1990 @node Shape note heads 
1991 @subsection Shape note heads 
1992
1993 In shape note head notation, the shape of the note head corresponds
1994 to the harmonic function of a note in the scale.  This notation was
1995 popular in the 19th century American song books.
1996
1997 Shape note heads can be produced by setting @code{\aikenHeads} or
1998 @code{\sacredHarpHeads}, depending on the style desired.
1999
2000 @lilypond[verbatim,relative=1,fragment]
2001   \aikenHeads
2002   c8 d4 e8 a2 g1
2003   \sacredHarpHeads
2004   c8 d4. e8 a2 g1
2005 @end lilypond
2006
2007 Shapes are determined on the step in the scale, where the base of the
2008 scale is determined by  the @code{\key} command
2009
2010 @findex \key
2011 @findex shapeNoteStyles
2012 @findex \aikenHeads
2013 @findex \sacredHarpHeads
2014
2015 Shape note heads are implemented through the @code{shapeNoteStyles}
2016 property.  Its value is a vector of symbols.  The k-th element indicates
2017 the style to use for the k-th step of the scale.  Arbitrary
2018 combinations are possible, eg.,
2019
2020
2021 @lilypond[verbatim,relative=1,fragment]
2022   \set shapeNoteStyles  = ##(cross triangle fa #f mensural xcircle diamond)
2023   c8 d4. e8 a2 g1
2024 @end lilypond
2025
2026
2027 @node Easy Notation note heads
2028 @subsection Easy Notation note heads
2029
2030 @cindex easy notation
2031 @cindex Hal Leonard
2032
2033 The `easy play' note head includes a note name inside the head.  It is
2034 used in music for beginners
2035
2036 @lilypond[quote,ragged-right,verbatim,fragment,staffsize=26]
2037   \setEasyHeads
2038   c'2 e'4 f' | g'1
2039 @end lilypond
2040
2041 The command @code{\setEasyHeads} overrides settings for the
2042 @internalsref{NoteHead} object.  To make the letters readable, it has
2043 to be printed in a large font size.  To print with a larger font, see
2044 @ref{Setting global staff size}.
2045
2046 @refcommands
2047
2048 @cindex @code{\setEasyHeads}
2049 @code{\setEasyHeads}
2050
2051
2052 @node Analysis brackets
2053 @subsection Analysis brackets
2054 @cindex brackets
2055 @cindex phrasing brackets
2056 @cindex musicological analysis
2057 @cindex note grouping bracket
2058
2059 Brackets are used in musical analysis to indicate structure in musical
2060 pieces.  LilyPond supports a simple form of nested horizontal
2061 brackets.  To use this, add the @internalsref{Horizontal_bracket_engraver}
2062 to @internalsref{Staff} context.  A bracket is started with
2063 @code{\startGroup} and closed with @code{\stopGroup}
2064
2065 @lilypond[quote,ragged-right,verbatim]
2066 \score {
2067   \relative c'' {
2068     c4\startGroup\startGroup
2069     c4\stopGroup
2070     c4\startGroup
2071     c4\stopGroup\stopGroup
2072   }
2073   \layout {
2074     \context {
2075       \Staff \consists "Horizontal_bracket_engraver"
2076 }}}
2077 @end lilypond
2078
2079 @seealso
2080
2081 Program reference: @internalsref{HorizontalBracket}.
2082
2083 Examples: @inputfileref{input/@/regression,note@/-group@/-bracket@/.ly}.
2084
2085
2086 @node Coloring objects
2087 @subsection Coloring objects
2088
2089 Individual objects may be assigned colors.  You may use the
2090 color names listed in the @ref{List of colors}.
2091
2092 @lilypond[quote,ragged-right,verbatim,fragment,relative=1]
2093 \override NoteHead #'color = #red
2094 c4 c
2095 \override NoteHead #'color = #(x11-color 'LimeGreen)
2096 d
2097 \override Stem #'color = #blue
2098 e
2099 @end lilypond
2100
2101 The full range of colors defined for X11 can be accessed by using the
2102 scheme function x11-color.  The function takes one argument that can be a
2103 symbol
2104
2105 @example
2106 \override Beam #'color = #(x11-color 'MediumTurquoise)
2107 @end example
2108
2109 or a string
2110
2111 @example
2112 \override Beam #'color = #(x11-color "MediumTurquoise")
2113 @end example
2114
2115 The first form is quicker to write and is more efficient.  However, using
2116 the second form it is possible to access X11 colors by the multi-word
2117 form of its name
2118
2119 @example
2120 \override Beam #'color = #(x11-color "medium turquoise")
2121 @end example
2122
2123 If x11-color cannot make sense of the parameter then the color returned
2124 defaults to black.  It should be obvious from the final score that
2125 something is wrong.
2126
2127 This example, illustrates the use of x11-color.  Notice that the stem
2128 color remains black after being set to (x11-color 'Boggle), which is
2129 deliberate nonsense.
2130
2131 @lilypond[quote,ragged-right,verbatim]
2132 {
2133   \override Staff.StaffSymbol #'color = #(x11-color 'SlateBlue2)
2134   \set Staff.instrument = \markup {
2135     \with-color #(x11-color 'navy) "Clarinet"
2136   }
2137   \time 2/4
2138   gis''8 a''
2139   \override Beam #'color = #(x11-color "medium turquoise")
2140   gis'' a''
2141   \override NoteHead #'color = #(x11-color "LimeGreen")
2142   gis'' a''
2143   \override Stem #'color = #(x11-color 'Boggle)
2144   gis'' a''
2145 }
2146 @end lilypond
2147
2148
2149 @seealso
2150
2151 Appendix: @ref{List of colors}.
2152
2153
2154 @refbugs
2155 Not all x11 colors are distinguishable in a web browser.  For web use
2156 normal colors are recommended. 
2157
2158 An x11 color is not necessarily exactly the same shade as a similarly
2159 named normal color. 
2160
2161
2162 @node Automatic notation
2163 @section Automatic notation
2164
2165 This section describes how to change the way that accidentals and
2166 beams are automatically displayed.
2167
2168 FIXME: this might get moved into Changing Defaults.  Please send
2169 opinions to lilypond-devel.  Thanks!  :)
2170
2171 @menu
2172 * Automatic accidentals::       
2173 * Setting automatic beam behavior::  
2174 @end menu
2175
2176 @node Automatic accidentals
2177 @subsection Automatic accidentals
2178 @cindex Automatic accidentals
2179
2180 Common rules for typesetting accidentals have been placed in a
2181 function.  This function is called as follows
2182
2183 @cindex @code{set-accidental-style}
2184 @example
2185 #(set-accidental-style 'STYLE #('CONTEXT#))
2186 @end example
2187
2188 The function can take two arguments: the name of the accidental style,
2189 and an optional argument that denotes the context that should be
2190 changed.  If no context name is supplied, @code{Staff} is the default,
2191 but you may wish to apply the accidental style to a single @code{Voice}
2192 instead.
2193
2194 The following accidental styles are supported
2195 @table @code
2196 @item default
2197 This is the default typesetting behavior.  It corresponds
2198 to 18th century common practice: Accidentals are
2199 remembered to the end of the measure in which they occur and
2200 only on their own octave.
2201
2202 @item voice
2203 The normal behavior is to remember the accidentals on
2204 Staff-level.  This variable, however, typesets accidentals
2205 individually for each voice.  Apart from that, the rule is similar to
2206 @code{default}.
2207
2208 As a result, accidentals from one voice do not get canceled in other
2209 voices, which is often an unwanted result
2210
2211 @lilypond[quote,ragged-right,relative=1,fragment,verbatim]
2212 \new Staff <<
2213   #(set-accidental-style 'voice)
2214   <<
2215     { es g } \\
2216     { c, e }
2217 >> >>
2218 @end lilypond
2219
2220 The @code{voice} option should be used if the voices
2221 are to be read solely by individual musicians.  If the staff is to be
2222 used by one musician (e.g., a conductor) then
2223 @code{modern} or @code{modern-cautionary}
2224 should be used instead.
2225
2226 @item modern
2227 @cindex @code{modern} style accidentals
2228 This rule corresponds to the common practice in the 20th century.  This rule
2229 prints the same accidentals as @code{default}, but temporary
2230 accidentals also are canceled in other octaves.  Furthermore,
2231 in the same octave, they also get canceled in the following
2232 measure
2233
2234 @lilypond[quote,ragged-right,fragment,verbatim]
2235 #(set-accidental-style 'modern)
2236 cis' c'' cis'2 | c'' c'
2237 @end lilypond
2238
2239 @item @code{modern-cautionary}
2240 @cindex @code{modern-cautionary}
2241 This rule is similar to @code{modern}, but the ``extra'' accidentals
2242 (the ones not typeset by @code{default}) are typeset as cautionary
2243 accidentals.  They are printed in reduced size or with parentheses
2244 @lilypond[quote,ragged-right,fragment,verbatim]
2245 #(set-accidental-style 'modern-cautionary)
2246 cis' c'' cis'2 | c'' c'
2247 @end lilypond
2248
2249 @cindex @code{modern-voice}
2250 @item modern-voice
2251 This rule is used for multivoice accidentals to be read both by musicians
2252 playing one voice and musicians playing all voices.  Accidentals are
2253 typeset for each voice, but they @emph{are} canceled across voices in
2254 the same @internalsref{Staff}.
2255
2256 @cindex @code{modern-voice-cautionary}
2257 @item modern-voice-cautionary
2258 This rule is the same as @code{modern-voice}, but with the extra
2259 accidentals (the ones not typeset by @code{voice}) typeset
2260 as cautionaries.  Even though all accidentals typeset by
2261 @code{default} @emph{are} typeset by this variable,
2262 some of them are typeset as cautionaries.
2263
2264 @item piano
2265 @cindex @code{piano} accidentals
2266 This rule reflects 20th century practice for piano notation.  Very similar to
2267 @code{modern} but accidentals also get canceled
2268 across the staves in the same @internalsref{GrandStaff} or
2269 @internalsref{PianoStaff}.
2270
2271 @item piano-cautionary
2272 @cindex @code{#(set-accidental-style 'piano-cautionary)}
2273 Same as @code{#(set-accidental-style 'piano)} but with the extra
2274 accidentals typeset as cautionaries.
2275
2276 @item no-reset
2277 @cindex @code{no-reset} accidental style
2278 This is the same as @code{default} but with accidentals lasting
2279 ``forever'' and not only until the next measure
2280 @lilypond[quote,ragged-right,fragment,verbatim,relative=1]
2281 #(set-accidental-style 'no-reset)
2282 c1 cis cis c
2283 @end lilypond
2284
2285 @item forget
2286 This is sort of the opposite of @code{no-reset}: Accidentals
2287 are not remembered at all---and hence all accidentals are
2288 typeset relative to the key signature, regardless of what was
2289 before in the music
2290
2291 @lilypond[quote,ragged-right,fragment,verbatim,relative=1]
2292 #(set-accidental-style 'forget)
2293 \key d\major c4 c cis cis d d dis dis
2294 @end lilypond
2295 @end table
2296
2297
2298 @seealso
2299
2300 Program reference: @internalsref{Accidental_engraver},
2301 @internalsref{Accidental}, and @internalsref{AccidentalPlacement}.
2302
2303
2304 @refbugs
2305
2306 Simultaneous notes are considered to be entered in sequential
2307 mode.  This means that in a chord the accidentals are typeset as if the
2308 notes in the chord happened once at a time - in the order in which
2309 they appear in the input file.
2310
2311 This is a problem when accidentals in a chord depend on each other,
2312 which does not happen for the default accidental style.  The problem
2313 can be solved by manually inserting @code{!} and @code{?} for the
2314 problematic notes.
2315
2316
2317 @node Setting automatic beam behavior
2318 @subsection Setting automatic beam behavior
2319
2320 @cindex @code{autoBeamSettings}
2321 @cindex @code{(end * * * *)}
2322 @cindex @code{(begin * * * *)}
2323 @cindex automatic beams, tuning
2324 @cindex tuning automatic beaming
2325
2326 @c [TODO: use \applyContext]
2327
2328 In normal time signatures, automatic beams can start on any note but can
2329 only end in a few positions within the measure: beams can end on a beat,
2330 or at durations specified by the properties in
2331 @code{autoBeamSettings}.  The properties in @code{autoBeamSettings}
2332 consist of a list of rules for where beams can begin and end.  The
2333 default @code{autoBeamSettings} rules are defined in
2334 @file{scm/@/auto@/-beam@/.scm}.
2335
2336 In order to add a rule to the list, use
2337 @example
2338 #(override-auto-beam-setting '(be p q n m) a b [context])
2339 @end example
2340
2341 @itemize @bullet
2342
2343 @item @code{be} is either "begin" or "end".
2344
2345 @item @code{p/q} is the duration of the note for which you want
2346 to add a rule.  A beam is considered to have the duration of its
2347 shortest note.  Set @code{p} and @code{q} to @code{'*'} to
2348 have this apply to any beam.
2349
2350 @item @code{n/m} is the time signature to which
2351 this rule should apply.  Set @code{n} and @code{m} to @code{'*'}
2352 to have this apply in any time signature.
2353
2354 @item @code{a/b} is the position in the bar at which the beam should begin/end.
2355
2356 @item @code{context} is optional, and it specifies the context at which
2357 the change should be made.  The default is @code{'Voice}.
2358 @code{#(score-override-auto-beam-setting '(A B C D) E F)} is equivalent to
2359 @code{#(override-auto-beam-setting '(A B C D) E F 'Score)}.
2360
2361 @end itemize
2362
2363 For example, if automatic beams should always end on the first quarter
2364 node, use
2365
2366 @example
2367 #(override-auto-beam-setting '(end * * * *) 1 4)
2368 @end example
2369
2370 You can force the beam settings to only take effect on beams whose shortest
2371 note is a certain duration
2372
2373 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2374 \time 2/4
2375 #(override-auto-beam-setting '(end 1 16 * *) 1 16)
2376 a16 a a a a a a a |
2377 a32 a a a a16 a a a a a |
2378 #(override-auto-beam-setting '(end 1 32 * *) 1 16)
2379 a32 a a a a16 a a a a a |
2380 @end lilypond
2381
2382 You can force the beam settings to only take effect in certain time
2383 signatures
2384
2385 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2386 \time 5/8
2387 #(override-auto-beam-setting '(end * * 5 8) 2 8)
2388 c8 c d d d
2389 \time 4/4
2390 e8 e f f e e d d
2391 \time 5/8
2392 c8 c d d d
2393 @end lilypond
2394
2395 You can also remove a previously set beam-ending rule by using
2396
2397 @example
2398 #(revert-auto-beam-setting '(be p q n m) a b [context])
2399 @end example
2400
2401 @noindent
2402 be, p, q, n, m, a, b and context are the same as above.  Note that the
2403 default rules are specified in @file{scm/@/auto@/-beam@/.scm},
2404 so you can revert rules that you did not explicitly create.
2405
2406 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2407 \time 4/4
2408 a16 a a a a a a a a a a a a a a a
2409 #(revert-auto-beam-setting '(end 1 16 4 4) 1 4)
2410 a16 a a a a a a a a a a a a a a a
2411 @end lilypond
2412
2413 The rule in a revert-auto-beam-setting statement must exactly match the
2414 original rule.  That is, no wildcard expansion is taken into account.
2415
2416 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2417 \time 1/4
2418 #(override-auto-beam-setting '(end 1 16 1 4) 1 8)
2419 a16 a a a
2420 #(revert-auto-beam-setting '(end 1 16 * *) 1 8) % this won't revert it!
2421 a a a a
2422 #(revert-auto-beam-setting '(end 1 16 1 4) 1 8) % this will
2423 a a a a
2424 @end lilypond
2425
2426
2427
2428 @c TODO:  old material -- not covered by above stuff, I think.
2429 If automatic beams should end on every quarter in 5/4 time, specify
2430 all endings
2431 @example
2432 #(override-auto-beam-setting '(end * * * *) 1 4 'Staff)
2433 #(override-auto-beam-setting '(end * * * *) 1 2 'Staff)
2434 #(override-auto-beam-setting '(end * * * *) 3 4 'Staff)
2435 #(override-auto-beam-setting '(end * * * *) 5 4 'Staff)
2436 @dots{}
2437 @end example
2438
2439 The same syntax can be used to specify beam starting points.  In this
2440 example, automatic beams can only end on a dotted quarter note
2441 @example
2442 #(override-auto-beam-setting '(end * * * *) 3 8)
2443 #(override-auto-beam-setting '(end * * * *) 1 2)
2444 #(override-auto-beam-setting '(end * * * *) 7 8)
2445 @end example
2446 In 4/4 time signature, this means that automatic beams could end only on
2447 3/8 and on the fourth beat of the measure (after 3/4, that is 2 times
2448 3/8, has passed within the measure).
2449
2450 @cindex automatic beam generation
2451 @cindex autobeam
2452 @cindex @code{autoBeaming}
2453 @cindex lyrics
2454
2455 If beams are used to indicate melismata in songs, then automatic
2456 beaming should be switched off with @code{\autoBeamOff}.
2457
2458
2459 @refcommands
2460
2461 @cindex @code{\autoBeamOff}
2462 @code{\autoBeamOff},
2463 @cindex @code{\autoBeamOn}
2464 @code{\autoBeamOn}.
2465
2466
2467 @refbugs
2468
2469 If a score ends while an automatic beam has not been ended and is
2470 still accepting notes, this last beam will not be typeset at all.  The
2471 same holds polyphonic voices, entered with @code{<< @dots{} \\ @dots{}
2472 >>}.  If a polyphonic voice ends while an automatic beam is still
2473 accepting notes, it is not typeset.
2474
2475
2476