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