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