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