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