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