@c -*- coding: utf-8; mode: texinfo; -*- @ignore Translation of GIT committish: FILL-IN-HEAD-COMMITTISH When revising a translation, copy the HEAD committish of the version that you are working on. See TRANSLATION for details. @end ignore @node Rhythms @section Rhythms @lilypondfile[ragged-right,line-width=16\cm,staffsize=16,quote] {rhythms-headword.ly} This section discusses rhythms, durations, and bars. @menu * Writing rhythms:: * Writing rests:: * Displaying rhythms:: * Beams:: * Bars:: * Special rhythmic concerns:: @end menu @node Writing rhythms @subsection Writing rhythms @menu * Durations:: * Tuplets:: * Scaling durations:: @end menu @node Durations @unnumberedsubsubsec Durations @cindex duration @funindex \longa @funindex \breve @funindex \maxima When entering notes or rests, durations are designated by numbers and dots: durations are entered as their reciprocal values. For example, a quarter note is entered using a @code{4} (since it is a 1/4 note), while a half note is entered using a @code{2} (since it is a 1/2 note). For notes longer than a whole you must use the @code{\longa} and @code{\breve} commands. @ignore ---- Example to be removed if following is thought better ---- @example c'\longa c'\breve c'1 c'2 c'4 c'8 c'16 c'32 c'64 c'64 @end example @lilypond[quote] \score { \relative c'' { a\longa*1/4 a\breve*1/2 \autoBeamOff a1 a2 a4 a8 a16 a32 a64 a64 } \layout { ragged-right = ##t indent=0\mm \context { \Score \remove "Bar_number_engraver" } \context { \Staff \remove "Clef_engraver" \override StaffSymbol #'transparent = ##t \override TimeSignature #'transparent = ##t \override BarLine #'transparent = ##t \consists "Pitch_squash_engraver" } } } @end lilypond @end ignore @c TODO Consider whether the beams should be @c removed in the following. If they, @c the c'128 notes are not displayed @c properly. See Note below. \autoBeamOff ? @lilypond[quote,ragged-right,verbatim,fragment] << \new Staff { \time 8/1 c'\longa c'\breve c'1 c'2 c'4 c'8 c'16 c'32 c'64 c'128 c'128 } \new Staff { r\longa r\breve r1 r2 r4 r8 r16 r32 r64 r128 r128 } >> @end lilypond Note: Up to four flags and up to five beams can be attached to note stems, so durations as small as 128 may be specified with beaming, but without beaming durations shorter than 64 should not be entered - a warning will be produced. Durations up to 128 may be specified for rests. If the duration is omitted then it is set to the previously entered duration. The default for the first note is a quarter note. @lilypond[quote,ragged-right,verbatim,fragment] { a a a2 a a4 a a1 a } @end lilypond @funindex . To obtain dotted note lengths, simply add a dot (@samp{.}) to the number. Double-dotted notes are produced in a similar way. @lilypond[quote,ragged-right,fragment,verbatim] a'4 b' c''4. b'8 a'4. b'4.. c''8. @end lilypond @refcommands Dots are normally moved up to avoid staff lines, except in polyphonic situations. The following commands may be used to force a particular direction manually @funindex \dotsUp @code{\dotsUp}, @funindex \dotsDown @code{\dotsDown}, @funindex \dotsNeutral @code{\dotsNeutral}. @c TODO: after deciding the link question, fix these. -gp Durations are entered in the same way in @code{drummode}, @code{chordmode}, @code{figuremode} and (optionally) in @code{lyricmode}. @seealso For alternative ways of aligning lyrics to notes see This manual: @ref{Vocal music} For a complete description of how to enter rests see This manual: @ref{Writing rests} Program reference: @internalsref{Dots}, and @internalsref{DotColumn}. @node Tuplets @unnumberedsubsubsec Tuplets @cindex tuplets @cindex triplets @funindex \times Tuplets are made out of a music expression by multiplying all durations with a fraction @example \times @var{fraction} @var{musicexpr} @end example @noindent The duration of @var{musicexpr} will be multiplied by the fraction. The fraction's denominator will be printed over the notes, optionally with a bracket. The most common tuplet is the triplet in which 3 notes have the length of 2, so the notes are 2/3 of their written length @lilypond[quote,ragged-right,fragment,verbatim] g'4 \times 2/3 {c'4 c' c'} d'4 d'4 @end lilypond Tuplets may be nested, for example, @lilypond[fragment,ragged-right,verbatim,relative=2] \override TupletNumber #'text = #tuplet-number::calc-fraction-text \times 4/6 { a4 a \times 3/5 { a a a a a } } @end lilypond @refcommands @funindex \tupletUp @code{\tupletUp}, @funindex \tupletDown @code{\tupletDown}, @funindex \tupletNeutral @code{\tupletNeutral}. @commonprop @funindex tupletNumberFormatFunction @cindex tuplet formatting The property @code{tupletSpannerDuration} specifies how long each bracket should last. With this, you can make lots of tuplets while typing @code{\times} only once, thus saving lots of typing. In the next example, there are two triplets shown, while @code{\times} was only used once @lilypond[quote,fragment,relative=2,ragged-right,verbatim] \set tupletSpannerDuration = #(ly:make-moment 1 4) \times 2/3 { c8 c c c c c } @end lilypond @noindent For more information about @code{make-moment}, see @ref{Time administration}. The format of the number is determined by the property @code{text} in @code{TupletNumber}. The default prints only the denominator, but if it is set to the function @code{tuplet-number::calc-fraction-text}, @var{num}:@var{den} will be printed instead. To avoid printing tuplet numbers, use @lilypond[quote,fragment,relative=2,ragged-right,verbatim] \times 2/3 { c8 c c } \times 2/3 { c8 c c } \override TupletNumber #'transparent = ##t \times 2/3 { c8 c c } \times 2/3 { c8 c c } @end lilypond Use the @code{\tweak} function to override nested tuplets beginning at the same music moment. In this example, @code{\tweak} specifies fraction text for the outer @code{TupletNumber} and denominator text for the @code{TupletNumber} of the first of the three inner tuplets. @lilypond[quote,ragged-right,verbatim] \new Staff { \tweak #'text #tuplet-number::calc-fraction-text \times 4/3 { \tweak #'text #tuplet-number::calc-denominator-text \times 2/3 { c'8[ c'8 c'8] } \times 2/3 { c'8[ c'8 c'8] } \times 2/3 { c'8[ c'8 c'8] } } } @end lilypond Here @code{\tweak} and @code{\override} work together to specify @code{TupletBracket} direction. The first @code{\tweak} positions the @code{TupletBracket} of the outer tuplet above the staff. The second @code{\tweak} positions the @code{TupletBracket} of the first of the three inner tuplets below the staff. Note that this pair of @code{\tweak} functions affects only the outer tuplet and the first of the three inner tuplets because only those two tuplets begin at the same music moment. We use @code{\override} in the usual way to position the @code{TupletBrackets} of the second and third of the inner tuplets below the staff. @lilypond[quote,ragged-right,verbatim] \new Staff { \tweak #'text #tuplet-number::calc-fraction-text \tweak #'direction #up \times 4/3 { \tweak #'direction #down \times 2/3 { c'8[ c'8 c'8] } \override TupletBracket #'direction = #down \times 2/3 { c'8[ c'8 c'8] } \times 2/3 { c'8[ c'8 c'8] } } } @end lilypond Tuplet brackets can be made to run to prefatory matter or the next note @lilypond[ragged-right] \new RhythmicStaff { \set tupletFullLength = ##t \time 4/4 \times 4/5 { c4 c1 } \set tupletFullLengthNote = ##t \time 2/4 \times 2/3 { c4 c c } \time 3/4 c4 } @end lilypond @seealso Program reference: @internalsref{TupletBracket}, @internalsref{TupletNumber}, and @internalsref{TimeScaledMusic}. @node Scaling durations @unnumberedsubsubsec Scaling durations You can alter the length of duration by a fraction @var{N/M} appending @samp{*@var{N/M}} (or @samp{*@var{N}} if @var{M=1}). This will not affect the appearance of the notes or rests produced. These may be combined such as @samp{*M*N}. In the following example, the first three notes take up exactly two beats, but no triplet bracket is printed. @lilypond[quote,ragged-right,fragment,relative=2,verbatim] \time 2/4 a4*2/3 gis4*2/3 a4*2/3 a4 a4 a4*2 b16*4 c4 @end lilypond @seealso This manual: @ref{Tuplets}. @node Writing rests @subsection Writing rests @menu * Rests:: * Skips:: * Multi measure rests:: @end menu @node Rests @unnumberedsubsubsec Rests @cindex Rests @funindex \rest @funindex r Rests are entered like notes with the note name @code{r} @lilypond[fragment,quote,ragged-right,verbatim] r1 r2 r4 r8 @end lilypond Whole bar rests, centered in middle of the bar, must be entered as multi-measure rests. They can be used for a single bar as well as many bars, and are discussed in @ref{Multi measure rests}. To explicitly specify a rest's vertical position, write a note followed by @code{\rest}. A rest will be placed in the position where the note would appear, @lilypond[fragment,quote,ragged-right,verbatim] a'4\rest d'4\rest @end lilypond @noindent This makes manual formatting of polyphonic music much easier, since the automatic rest collision formatter will leave these rests alone. @seealso Program reference: @internalsref{Rest}. @node Skips @unnumberedsubsubsec Skips @cindex Skip @cindex Invisible rest @cindex Space note @funindex \skip @funindex s An invisible rest (also called a @q{skip}) can be entered like a note with note name @samp{s} or with @code{\skip @var{duration}} @lilypond[fragment,quote,ragged-right,verbatim,relative=2] a4 a4 s4 a4 \skip 1 a4 @end lilypond The @code{s} syntax is only available in note mode and chord mode. In other situations, for example, when entering lyrics, you should use the @code{\skip} command @lilypond[quote,ragged-right,verbatim] << \relative { a'2 a2 } \new Lyrics \lyricmode { \skip 2 bla2 } >> @end lilypond The skip command is merely an empty musical placeholder. It does not produce any output, not even transparent output. The @code{s} skip command does create @internalsref{Staff} and @internalsref{Voice} when necessary, similar to note and rest commands. For example, the following results in an empty staff. @lilypond[quote,ragged-right,verbatim] { s4 } @end lilypond The fragment @code{@{ \skip 4 @} } would produce an empty page. @seealso Program reference: @internalsref{SkipMusic}. @node Multi measure rests @unnumberedsubsubsec Multi measure rests @cindex multi measure rests @cindex full measure rests @cindex Rests, multi measure @cindex Rests, full measure @cindex whole rests for a full measure @funindex R Rests for one or more full measures are entered using @code{R} followed by a duration (see @ref{Durations}). The duration should correspond to an integral number of bars, otherwise a barcheck warning is printed. Multi-measure rests are principally used to indicate that a part in a multi-part score should be silent: @lilypond[quote,ragged-right,fragment,verbatim] { \set Score.skipBars = ##t R1*4^"Piano" R1*24^"Solo" R1*4^"Piano" b'2 b'4 a'4 } @end lilypond A multi-measure rest can be expanded in the printed score to show all the rest bars explicitly, or, as above, it can be condensed to a single bar containing a multi-measure rest symbol, with the number of bars of rest printed above the bar. This expansion is controlled by the property @code{Score.skipBars}. If this is set to true, empty measures will condensed to a single bar. @lilypond[quote,ragged-right,fragment,verbatim] \time 4/4 r1 | R1 | R1*2 | \time 2/4 R2 | \time 4/4 \set Score.skipBars = ##t R1*17 | R1*4 | @end lilypond The @code{1} in @code{R1} is similar to the duration notation used for notes and is the length of a bar in 2/2 or 4/4 time. The duration in a multi-measure rest must always be an integral number of bar-lengths, so in other time signatures you must use augmentation dots or fractions: @lilypond[quote,ragged-right,fragment,verbatim] \set Score.skipBars = ##t \time 3/4 R2. | R2.*2 \time 13/8 R1*13/8 | R1*13/8*12 | \time 10/8 R4*5*4 | @end lilypond An @code{R} spanning a single measure is printed as either a whole or breve rest, centered in the measure, regardless of the time signature. @c TODO Is "church rests" an accepted musical term? I can't @c find it anywhere. Is there a better term? If it is @c retained it should be added to glossary. If there are 10 or fewer measures of rest, LilyPond prints @q{church rests} (a series of rectangles) in the staff and prints a simple line otherwise. This default number may be changed by overriding @code{MultiMeasureRest.expand-limit}. @lilypond[quote,ragged-right,fragment,verbatim] \set Score.skipBars = ##t R1*2 | R1*5 | R1*9 \override MultiMeasureRest #'expand-limit = 3 R1*2 | R1*5 | R1*9 @end lilypond @cindex text on multi-measure rest @cindex script on multi-measure rest @cindex fermata on multi-measure rest Text can be added to multi-measure rests by using the @var{note}-@code{markup} syntax @ref{Text markup}. A variable (@code{\fermataMarkup}) is provided for adding fermatas @lilypond[quote,ragged-right,verbatim,fragment] \set Score.skipBars = ##t \time 3/4 R2.*10^\markup { \italic "ad lib." } R2.^\fermataMarkup @end lilypond Warning! This text is created by @code{MultiMeasureRestText}, not @code{TextScript}. @lilypond[quote,ragged-right,verbatim,fragment] \override TextScript #'padding = #5 R1^"low" \override MultiMeasureRestText #'padding = #5 R1^"high" @end lilypond Text attached to a multi-measure rest will be centered above (or below) it. Long text attached in this way will not cause the bar to expand, and may collide with text in adjacent bars. Long text is better attached to a zero-length skip note preceding the rest, since this will cause the bar to expand to accommodate the length of the text. However, text attached above the bar in this way will collide with the rest number unless it is raised, either by increasing the padding or using @code{\raise}: @lilypond[quote,ragged-right,verbatim,fragment] \set Score.skipBars = ##t s1*0^\markup {\hspace #0 \raise #3 [FRED.]} R1*4 s1*0^\markup {\hspace #0 \raise #3 [MABEL] } s1*0_\markup {\italic {Cue: ...so let it be}} R1*6 @end lilypond @seealso Program reference: @internalsref{MultiMeasureRestMusicGroup}, @internalsref{MultiMeasureRest}. The layout object @internalsref{MultiMeasureRestNumber} is for the default number, and @internalsref{MultiMeasureRestText} for user specified texts. @refbugs It is not possible to use fingerings (e.g., @code{R1-4}) to put numbers over multi-measure rests. And the pitch of multi-measure rests (or staff-centered rests) can not be influenced. @cindex condensing rests There is no way to automatically condense multiple rests into a single multi-measure rest. Multi-measure rests do not take part in rest collisions. Be careful when entering multi-measure rests followed by whole notes. The following will enter two notes lasting four measures each @example R1*4 cis cis @end example When @code{skipBars} is set, the result will look OK, but the bar numbering will be off. @node Displaying rhythms @subsection Displaying rhythms @menu * Time signature:: * Upbeats:: * Unmetered music:: * Polymetric notation:: * Automatic note splitting:: @end menu @node Time signature @unnumberedsubsubsec Time signature @cindex Time signature @cindex meter @funindex \time @c TODO The word 'metrum' is latin for 'metre', I think @c Should we not use 'metre' or 'meter' here? Time signature indicates the metrum of a piece: a regular pattern of strong and weak beats. It is denoted by a fraction at the start of the staff. The time signature is set with the @code{\time} command @lilypond[quote,ragged-right,fragment,verbatim] \time 2/4 c'2 \time 3/4 c'2. @end lilypond @commonprop The symbol that is printed can be customized with the @code{style} property. Setting it to @code{#'()} uses fraction style for 4/4 and 2/2 time, @lilypond[fragment,quote,ragged-right,verbatim] \time 4/4 c'1 \time 2/2 c'1 \override Staff.TimeSignature #'style = #'() \time 4/4 c'1 \time 2/2 c'1 @end lilypond There are many more options for its layout. See @ref{Ancient time signatures}, for more examples. @code{\time} sets the property @code{timeSignatureFraction}, @code{beatLength} and @code{measureLength} in the @code{Timing} context, which is normally aliased to @internalsref{Score}. The property @code{measureLength} determines where bar lines should be inserted, and how automatic beams should be generated. Changing the value of @code{timeSignatureFraction} also causes the symbol to be printed. @cindex Measure groupings More options are available through the Scheme function @code{set-time-signature}. In combination with the @internalsref{Measure_grouping_engraver}, it will create @internalsref{MeasureGrouping} signs. Such signs ease reading rhythmically complex modern music. In the following example, the 9/8 measure is subdivided in 2, 2, 2 and 3. This is passed to @code{set-time-signature} as the third argument @code{(2 2 2 3)} @lilypond[quote,ragged-right,verbatim] \score { \relative c'' { #(set-time-signature 9 8 '(2 2 2 3)) g8[ g] d[ d] g[ g] a8[( bes g]) | #(set-time-signature 5 8 '(3 2)) a4. g4 } \layout { \context { \Staff \consists "Measure_grouping_engraver" } } } @end lilypond @seealso Program reference: @internalsref{TimeSignature}, and @internalsref{Timing_translator}. Examples: @lsr{contemporary,compound-time-signature.ly}. @refbugs Automatic beaming does not use the measure grouping specified with @code{set-time-signature}. @node Upbeats @unnumberedsubsubsec Upbeats @cindex anacrusis @cindex upbeat @cindex partial measure @cindex measure, partial @cindex shorten measures @funindex \partial Partial measures, such as an anacrusis or upbeat, are entered using the @lilypond[quote,ragged-right,fragment,verbatim,relative=2] \partial 16*5 c16 cis d dis e | a2. c,4 | b2 @end lilypond The syntax for this command is @example \partial @var{duration} @end example where @code{duration} is the rhythmic length to be added before the next bar. This is internally translated into @example \set Timing.measurePosition = -@var{length of duration} @end example The property @code{measurePosition} contains a rational number indicating how much of the measure has passed at this point. Note that this is a negative number; @code{\partial 4} is internally translated to mean @qq{there is a quarter note left in the bar.} @refbugs This command does not take into account grace notes at the start of the music. When a piece starts with graces notes in the pickup, then the @code{\partial} should follow the grace notes @lilypond[verbatim,quote,ragged-right,relative,fragment] \grace f16 \partial 4 g4 a2 g2 @end lilypond @code{\partial} is only intended to be used at the beginning of a piece. If you use it after the beginning, some odd warnings may occur. @node Unmetered music @unnumberedsubsubsec Unmetered music @cindex cadenza @funindex \cadenzaOn @funindex \cadenzaOff Bar lines and bar numbers are calculated automatically. For unmetered music (cadenzas, for example), this is not desirable. To turn off automatic bar lines and bar numbers, use the commands @code{\cadenzaOn} and @code{\cadenzaOff}. @lilypond[verbatim,quote,ragged-right,relative=2,fragment] c4 d e d \cadenzaOn c4 c d8 d d f4 g4. \cadenzaOff \bar "|" d4 e d c @end lilypond @refbugs LilyPond will only insert line breaks and page breaks at a barline. Unless the unmetered music ends before the end of the staff line, you will need to insert invisible bar lines @example \bar "" @end example @noindent to indicate where breaks can occur. @node Polymetric notation @unnumberedsubsubsec Polymetric notation @cindex double time signatures @cindex signatures, polymetric @cindex polymetric signatures @cindex meter, polymetric Double time signatures are not supported explicitly, but they can be faked. In the next example, the markup for the time signature is created with a markup text. This markup text is inserted in the @internalsref{TimeSignature} grob. See also @lsr{contemporary,compound-time-signature}. @lilypond[verbatim,ragged-right] % create 2/4 + 5/8 tsMarkup =\markup { \override #'(baseline-skip . 2) \number { \column { "2" "4" } \vcenter "+" \bracket \column { "5" "8" } } } { \override Staff.TimeSignature #'stencil = #ly:text-interface::print \override Staff.TimeSignature #'text = #tsMarkup \time 3/2 c'2 \bar ":" c'4 c'4. } @end lilypond Each staff can also have its own time signature. This is done by moving the @internalsref{Timing_translator} to the @internalsref{Staff} context. @example \layout @{ \context @{ \Score \remove "Timing_translator" \remove "Default_bar_line_engraver" @} \context @{ \Staff \consists "Timing_translator" \consists "Default_bar_line_engraver" @} @} @end example Now, each staff has its own time signature. @example << \new Staff @{ \time 3/4 c4 c c | c c c | @} \new Staff @{ \time 2/4 c4 c | c c | c c @} \new Staff @{ \time 3/8 c4. c8 c c c4. c8 c c @} >> @end example @lilypond[quote,ragged-right] \layout{ \context{ \Score \remove "Timing_translator" \remove "Default_bar_line_engraver" } \context{ \Staff \consists "Timing_translator" \consists "Default_bar_line_engraver" } } \relative c' << \new Staff { \time 3/4 c4 c c | c c c | } \new Staff { \time 2/4 c4 c | c c | c c } \new Staff { \time 3/8 c4. c8 c c c4. c8 c c } >> @end lilypond A different form of polymetric notation is where note lengths have different values across staves. This notation can be created by setting a common time signature for each staff but replacing it manually using @code{timeSignatureFraction} to the desired fraction. Then the printed durations in each staff are scaled to the common time signature. The latter is done with @code{\compressMusic}, which is used similar to @code{\times}, but does not create a tuplet bracket. The syntax is @example \compressMusic #'(@var{numerator} . @var{denominator}) @var{musicexpr} @end example In this example, music with the time signatures of 3/4, 9/8, and 10/8 are used in parallel. In the second staff, shown durations are multiplied by 2/3, so that 2/3 * 9/8 = 3/4, and in the third staff, shown durations are multiplied by 3/5, so that 3/5 * 10/8 = 3/4. @lilypond[quote,ragged-right,verbatim,fragment] \relative c' { << \new Staff { \time 3/4 c4 c c | c c c | } \new Staff { \time 3/4 \set Staff.timeSignatureFraction = #'(9 . 8) \compressMusic #'(2 . 3) \repeat unfold 6 { c8[ c c] } } \new Staff { \time 3/4 \set Staff.timeSignatureFraction = #'(10 . 8) \compressMusic #'(3 . 5) { \repeat unfold 2 { c8[ c c] } \repeat unfold 2 { c8[ c] } | c4. c4. \times 2/3 { c8 c c } c4 } } >> } @end lilypond @refbugs When using different time signatures in parallel, the spacing is aligned vertically, but bar lines distort the regular spacing. @node Automatic note splitting @unnumberedsubsubsec Automatic note splitting Long notes can be converted automatically to tied notes. This is done by replacing the @internalsref{Note_heads_engraver} by the @internalsref{Completion_heads_engraver}. In the following examples, notes crossing the bar line are split and tied. @lilypond[quote,fragment,verbatim,relative=1,line-width=12\cm] \new Voice \with { \remove "Note_heads_engraver" \consists "Completion_heads_engraver" } { c2. c8 d4 e f g a b c8 c2 b4 a g16 f4 e d c8. c2 } @end lilypond This engraver splits all running notes at the bar line, and inserts ties. One of its uses is to debug complex scores: if the measures are not entirely filled, then the ties exactly show how much each measure is off. If you want to allow line breaking on the bar lines where @internalsref{Completion_heads_engraver} splits notes, you must also remove @internalsref{Forbid_line_break_engraver}. @refbugs Not all durations (especially those containing tuplets) can be represented exactly with normal notes and dots, but the engraver will not insert tuplets. @code{Completion_heads_engraver} only affects notes; it does not split rests. @seealso Program reference: @internalsref{Completion_heads_engraver}. @node Beams @subsection Beams @menu * Automatic beams:: * Manual beams:: @end menu @node Automatic beams @unnumberedsubsubsec Automatic beams By default beams are inserted automatically @lilypond[quote,ragged-right,fragment,verbatim,relative=2] \time 2/4 c8 c c c \time 6/8 c c c c8. c16 c8 @end lilypond When these automatic decisions are not good enough, beaming can be entered explicitly, see @ref{Manual beams} below. It is also possible to define beaming patterns that differ from the defaults. See @ref{Manual beams} and @ref{Setting automatic beam behavior}. @commonprop Feathered beams are printed by setting the @code{grow-direction} property of a @code{Beam}. The @code{\featherDurations} function can be used to adjust note durations. @lilypond[ragged-right,relative=1,fragment,verbatim,quote] \override Beam #'grow-direction = #LEFT \featherDurations #(ly:make-moment 5 4) { c16[ c c c c c c] } @end lilypond @seealso Program reference: @internalsref{Beam}. @refbugs The @code{\featherDurations} command only works with very short music snippets. @node Manual beams @unnumberedsubsubsec Manual beams @cindex beams, manual Individual notes may be marked with @code{\noBeam} to prevent them from being beamed @lilypond[quote,ragged-right,fragment,verbatim,relative=2] \time 2/4 c8 c\noBeam c c @end lilypond @cindex autoBeamOn @cindex autoBeamOff @noindent and automatic beaming may be turned off and on with @code{\autoBeamOff} and @code{\autoBeamOn} commands: @lilypond[quote,ragged-right,fragment,relative=1,verbatim] c4 c8 c8. c16 c8. c16 c8 \autoBeamOff c4 c8 c8. c16 c8. \autoBeamOn c16 c8 @end lilypond @funindex ] @funindex [ In some cases it may be necessary to override the automatic beaming algorithm. For example, the autobeamer will not put beams over rests or bar lines, and in choral scores the beaming is often set to follow the meter of the lyrics rather than the notes. Such beams can be specified manually by marking the begin and end point with @code{[} and @code{]} @lilypond[quote,ragged-right,fragment,relative=1,verbatim] { r4 r8[ g' a r8] r8 g[ | a] r8 } @end lilypond @commonprop @funindex stemLeftBeamCount @funindex stemRightBeamCount LilyPond can automatically determine beaming patterns within a beam, but this automatic behavior can sometimes produce odd results; therefore the @code{stemLeftBeamCount} and @code{stemRightBeamCount} properties can be used to override the defaults. If either property is set, its value will be used only once, and then it is erased. @lilypond[quote,ragged-right,fragment,relative=1,verbatim] { f8[ r16 f g a] f8[ r16 \set stemLeftBeamCount = #1 f g a] } @end lilypond The property @code{subdivideBeams} can be set in order to subdivide all 16th or shorter beams. When set, multiple beams will be sub-divided at beat positions, defined by the current value of @code{beatLength}, by drawing only one beam over the beat. @lilypond[fragment,ragged-right,quote,relative=2,verbatim] c16[ c c c c c c c] \set subdivideBeams = ##t c16[ c c c c c c c] \set Score.beatLength = #(ly:make-moment 1 8) c16[ c c c c c c c] @end lilypond @funindex subdivideBeams @noindent For more information about @code{make-moment}, see @ref{Time administration}. Line breaks are normally forbidden when beams cross bar lines. This behavior can be changed by setting the @code{breakable} property: @code{\override Beam #'breakable = ##t}. @funindex breakable @cindex beams and line breaks @cindex beams, kneed @cindex kneed beams @cindex auto-knee-gap Kneed beams are inserted automatically when a large gap is detected between the note heads. This behavior can be tuned through the @code{auto-knee-gap} property. A kneed beam is drawn if the gap is larger than the value of @code{auto-knee-gap} plus the width of the beam object (which depends on the duration of the notes and the slope of the beam). By default @code{auto-knee-gap} is set to 5.5 staff spaces. @lilypond[fragment,ragged-right,quote,verbatim] f8 f''8 f8 f''8 \override Beam #'auto-knee-gap = #6 f8 f''8 f8 f''8 @end lilypond @refbugs Automatically kneed cross-staff beams cannot be used together with hidden staves. See @ref{Hiding staves}. @c Is this still true with skyline spacing stuff? -J.Mandereau Beams do not avoid collisions with symbols around the notes, such as texts and accidentals. @node Bars @subsection Bars @menu * Bar lines:: * Bar numbers:: * Bar and bar number checks:: * Rehearsal marks:: @end menu @node Bar lines @unnumberedsubsubsec Bar lines @cindex Bar lines @funindex \bar @cindex measure lines @cindex repeat bars Bar lines delimit measures, and are also used to indicate repeats. Normally, simple barlines are automatically inserted into the printed output at places based on the current time signature. It is not invalid if the final note in a bar does not end on the automatically entered barline: the note is assumed to carry over into the next bar. The simple barlines inserted automatically can be changed to other types with the @code{\bar} command. For example, a closing double barline is usually placed at the end of a piece: @lilypond[quote,ragged-right,relative=1,fragment,verbatim] e4 d c2 \bar "||" @end lilypond This and other special barlines may be inserted manually at any point. When they coincide with the end of a bar they replace the simple barline which would have been inserted there automatically. When they do not coincide with the end of a bar the specified barline is inserted at that point in the printed output. Such insertions do not affect the calculation and placement of subsequent automatic barlines. Although the barline types signifying repeats may be inserted manually they do not in themselves cause LilyPond to recognise a repeated section. Such repeated sections are better entered using the various repeat commands (see @ref{Repeats}), which automatically print the appropriate barlines. The following bar types are available for manual insertion: @lilypond[quote,ragged-right,relative=2,fragment,verbatim] \override Score.RehearsalMark #'padding = #3 c4 \bar "|" \mark \markup {\simple #"|" } c \bar "|:" \mark \markup {\simple #"|:" } c \bar "||" \mark \markup {\simple #"||" } c \bar ":|" \mark \markup {\simple #":|" } c \bar ".|" \mark \markup {\simple #".|" } c \bar ".|." \mark \markup {\simple #".|."} c \bar ":|:" \mark \markup {\simple #":|:"} c \bar "|." \mark \markup {\simple #"|." } c \bar ":" \mark \markup {\simple #":" } c c c \break c \bar "dashed" \mark \markup { \simple #"dashed" } c c c @end lilypond In addition, you can specify @code{"||:"}, which is equivalent to @code{"|:"} except at line breaks, where it gives a double bar line at the end of the line and a start repeat at the beginning of the next line. @lilypond[quote,ragged-right,relative=2,fragment,verbatim] \override Score.RehearsalMark #'padding = #3 c c c c \bar "||:" \mark \markup { \tiny \typewriter "unbroken" \simple #"||:" } c c c c \break \bar "||:" \mark \markup { \tiny \typewriter "broken" \simple #"||:" } c c c c @end lilypond Entered music is automatically broken into lines, but this happens only at manually inserted barlines or at automatically inserted barlines where these occur at the end of complete bars, i.e. where the end of a note coincides with the end of a bar. If this never happens, perhaps due to an error in entering durations, the outputted music can appear very compressed as no place can be found to make a line break. To allow a line break without printing a bar line, use @example \bar "" @end example @noindent This will insert an invisible bar line and allow (but not force) a line break to occur at this point. The bar number counter is not increased. To force a line break see @ref{Line breaking}. In scores with many staves, a @code{\bar} command in one staff is automatically applied to all staves. The resulting bar lines are connected between different staves of a @code{StaffGroup}, @code{PianoStaff}, or @code{GrandStaff}. @lilypond[quote,ragged-right,fragment,verbatim] << \new StaffGroup << \new Staff { e'4 d' \bar "||" f' e' } \new Staff { \clef bass c4 g e g } >> \new Staff { \clef bass c2 c2 } >> @end lilypond @commonprop @funindex whichBar @c TODO remove? @funindex repeatCommands @funindex defaultBarType The command @code{\bar }@var{bartype} is a short cut for @code{\set Timing.whichBar = }@var{bartype}. A bar line is created whenever the @code{whichBar} property is set. The default bar type used for automatically inserted bar lines is @code{"|"}. This may be changed at any time with @code{\set Timing.defaultBarType = }@var{bartype}. @ignore TODO Delete this section - repeats are mentioned earlier The contents of @code{repeatCommands} are used to override default measure bars. You are encouraged to use @code{\repeat} for repetitions. See @ref{Repeats}. @end ignore @seealso In this manual: @ref{Repeats}, @ref{System start delimiters}. Program reference: @internalsref{BarLine} (created at @internalsref{Staff} level), @internalsref{SpanBar} (across staves), @internalsref{Timing_translator} (for Timing properties). @node Bar numbers @unnumberedsubsubsec Bar numbers @cindex Bar numbers @cindex measure numbers @funindex currentBarNumber Bar numbers are typeset by default at the start of every line except the first line. The number itself is stored in the @code{currentBarNumber} property, which is normally updated automatically for every measure. It may also be set manually: @lilypond[verbatim,ragged-right,quote,fragment,relative] \repeat unfold 4 {c4 c c c} \break \set Score.currentBarNumber = #50 \repeat unfold 4 {c4 c c c} @end lilypond Bar numbers may only be printed at bar lines; to print a bar number at the beginning of a piece, an empty bar line must be inserted there: @lilypond[verbatim,ragged-right,quote,fragment,relative] \set Score.currentBarNumber = #50 \bar "" \repeat unfold 4 {c4 c c c} \break \repeat unfold 4 {c4 c c c} @end lilypond Bar numbers can be typeset at regular intervals instead of at the beginning of every line. This is illustrated in the following example, which also shows how to enclose bar numbers in boxes and circles. @ignore TODO Text to be deleted ? whose source is available as @lsr{staff,making-bar-numbers-appear-at-regular-intervals.ly}. @end ignore @lilypond[verbatim,ragged-right,quote,fragment,relative] % Avoid printing a bar number at the end of a line \override Score.BarNumber #'break-visibility = #end-of-line-invisible % Print a bar number every 3th bar \set Score.barNumberVisibility = #(every-nth-bar-number-visible 3) % Increase the size of the bar number by 2 \override Score.BarNumber #'font-size = #2 % Draw a box round the following bar number(s) \override Score.BarNumber #'stencil = #(make-stencil-boxer 0.1 0.25 ly:text-interface::print) \repeat unfold 5 { c1 } \bar "|" % Draw a circle round the following bar number(s) \override Score.BarNumber #'stencil = #(make-stencil-circler 0.1 0.25 ly:text-interface::print) \repeat unfold 4 { c1 } \bar "|." @end lilypond Bar numbers can be removed entirely by removing the Bar number engraver from the score context. @lilypond[verbatim,ragged-right,quote] \layout { \context { \Score \remove "Bar_number_engraver" } } \relative c''{ c4 c c c \break c4 c c c } @end lilypond @seealso Program reference: @internalsref{BarNumber}. Examples: @lsrdir{staff} @refbugs @c TODO is this still a bug in 11? Bar numbers can collide with the top of the @internalsref{StaffGroup} bracket, if there is one. To solve this, the @code{padding} property of @internalsref{BarNumber} can be used to position the number correctly. @node Bar and bar number checks @unnumberedsubsubsec Bar and bar number checks @cindex Bar check @funindex barCheckSynchronize @funindex | Bar checks help detect errors in the entered durations. A bar check may be entered using the bar symbol, @code{|}, at any place where a bar line is expected to fall. If bar check lines are encountered at other places, a list of warnings is printed in the log file, showing the line numbers and lines in which the bar checks failed. In the next example, the second bar check will signal an error @example \time 3/4 c2 e4 | g2 | @end example Bar checks can also be used in lyrics, for example @example \lyricmode @{ \time 2/4 Twin -- kle | Twin -- kle | @} @end example An incorrect duration can result in a completely garbled score, especially if the score is polyphonic, so a good place to start correcting input is by scanning for failed bar checks and incorrect durations. @funindex | @funindex pipeSymbol It is also possible to redefine the meaning of @code{|}. This is done by assigning a music expression to @code{pipeSymbol}, @lilypond[quote,ragged-right,verbatim] pipeSymbol = \bar "||" { c'2 c' | c'2 c' } @end lilypond When copying large pieces of music, it can be helpful to check that the LilyPond bar number corresponds to the original that you are entering from. This can be checked with @code{\barNumberCheck}, for example, @verbatim \barNumberCheck #123 @end verbatim @noindent will print a warning if the @code{currentBarNumber} is not 123 when it is processed. @node Rehearsal marks @unnumberedsubsubsec Rehearsal marks @cindex Rehearsal marks @funindex \mark To print a rehearsal mark, use the @code{\mark} command @lilypond[quote,ragged-right,fragment,verbatim,relative=2] c1 \mark \default c1 \mark \default c1 \mark #8 c1 \mark \default c1 \mark \default @end lilypond @noindent The letter@tie{}@q{I} is skipped in accordance with engraving traditions. If you wish to include the letter @q{I}, then use @example \set Score.markFormatter = #format-mark-alphabet @end example The mark is incremented automatically if you use @code{\mark \default}, but you can also use an integer argument to set the mark manually. The value to use is stored in the property @code{rehearsalMark}. The style is defined by the property @code{markFormatter}. It is a function taking the current mark (an integer) and the current context as argument. It should return a markup object. In the following example, @code{markFormatter} is set to a canned procedure. After a few measures, it is set to function that produces a boxed number. @lilypond[fragment,quote,ragged-right,verbatim,relative=2] \set Score.markFormatter = #format-mark-numbers c1 \mark \default c1 \mark \default \set Score.markFormatter = #format-mark-box-numbers c1 \mark \default c1 \mark \default c1 @end lilypond The file @file{scm/@/translation@/-functions@/.scm} contains the definitions of @code{format-mark-numbers} (the default format), @code{format-mark-box-numbers}, @code{format-mark-letters} and @code{format-mark-box-letters}. These can be used as inspiration for other formatting functions. You may use @code{format-mark-barnumbers}, @code{format-mark-box-barnumbers}, and @code{format-mark-circle-barnumbers} to get bar numbers instead of incremented numbers or letters. Other styles of rehearsal mark can be specified manually @example \mark "A1" @end example @noindent @code{Score.markFormatter} does not affect marks specified in this manner. However, it is possible to apply a @code{\markup} to the string. @example \mark \markup@{ \box A1 @} @end example @cindex segno @cindex coda @cindex D.S al Fine Music glyphs (such as the segno sign) may be printed inside a @code{\mark} @lilypond[fragment,quote,ragged-right,verbatim,relative] c1 \mark \markup { \musicglyph #"scripts.segno" } c1 \mark \markup { \musicglyph #"scripts.coda" } c1 \mark \markup { \musicglyph #"scripts.ufermata" } c1 @end lilypond @noindent See @ref{The Feta font}, for a list of symbols which may be printed with @code{\musicglyph}. For common tweaks to the positioning of rehearsal marks, see @ref{Text marks}. @seealso This manual: @ref{Text marks}. Program reference: @internalsref{RehearsalMark}. Init files: @file{scm/@/translation@/-functions@/.scm} contains the definition of @code{format-mark-numbers} and @code{format-mark-letters}. They can be used as inspiration for other formatting functions. Examples: @lsr{parts,rehearsal-mark-numbers.ly} @node Special rhythmic concerns @subsection Special rhythmic concerns @menu * Grace notes:: * Aligning to cadenzas:: * Time administration:: * Proportional notation (introduction):: @end menu @node Grace notes @unnumberedsubsubsec Grace notes @funindex \grace @cindex ornaments @cindex grace notes @cindex appoggiatura @cindex acciaccatura Grace notes are ornaments that are written out. The most common ones are acciaccatura, which should be played as very short. It is denoted by a slurred small note with a slashed stem. The appoggiatura is a grace note that takes a fixed fraction of the main note, and is denoted as a slurred note in small print without a slash. They are entered with the commands @code{\acciaccatura} and @code{\appoggiatura}, as demonstrated in the following example @lilypond[quote,ragged-right,relative=2,verbatim,fragment] b4 \acciaccatura d8 c4 \appoggiatura e8 d4 \acciaccatura { g16[ f] } e4 @end lilypond Both are special forms of the @code{\grace} command. By prefixing this keyword to a music expression, a new one is formed, which will be printed in a smaller font and takes up no logical time in a measure. @lilypond[quote,ragged-right,relative=2,verbatim,fragment] c4 \grace c16 c4 \grace { c16[ d16] } c2 c4 @end lilypond @noindent Unlike @code{\acciaccatura} and @code{\appoggiatura}, the @code{\grace} command does not start a slur. @cindex timing, internal Internally, timing for grace notes is done using a second, @q{grace} timing. Every point in time consists of two rational numbers: one denotes the logical time, one denotes the grace timing. The above example is shown here with timing tuples @lilypond[quote,ragged-right] << \relative c''{ c4 \grace c16 c4 \grace { c16[ d16] } c2 c4 } \new Lyrics \lyricmode { \override LyricText #'font-family = #'typewriter \markup { (0,0) } 4 \grace { \markup { ( \fraction 1 4 , \fraction -1 16 ) } 16 } \markup { (\fraction 1 4 , 0 ) } 4 \grace { \markup { (\fraction 2 4 , \fraction "-1" 8 ) } 16 \markup { (\fraction 2 4 , \fraction "-1" 16 ) } 16 } \markup { ( \fraction 2 4 , 0 ) } } >> @end lilypond The placement of grace notes is synchronized between different staves. In the following example, there are two sixteenth grace notes for every eighth grace note @lilypond[quote,ragged-right,relative=2,verbatim,fragment] << \new Staff { e4 \grace { c16[ d e f] } e4 } \new Staff { c4 \grace { g8[ b] } c4 } >> @end lilypond @funindex \afterGrace If you want to end a note with a grace, use the @code{\afterGrace} command. It takes two arguments: the main note, and the grace notes following the main note. @lilypond[ragged-right, verbatim,relative=2,fragment] c1 \afterGrace d1 { c16[ d] } c4 @end lilypond This will put the grace notes after a @q{space} lasting 3/4 of the length of the main note. The fraction 3/4 can be changed by setting @code{afterGraceFraction}, ie. @example #(define afterGraceFraction (cons 7 8)) @end example @noindent will put the grace note at 7/8 of the main note. The same effect can be achieved manually by doing @lilypond[quote,ragged-right,fragment,verbatim,relative=2] \new Voice { << { d1^\trill_( } { s2 \grace { c16[ d] } } >> c4) } @end lilypond @noindent By adjusting the duration of the skip note (here it is a half-note), the space between the main-note and the grace is adjusted. A @code{\grace} music expression will introduce special typesetting settings, for example, to produce smaller type, and set directions. Hence, when introducing layout tweaks, they should be inside the grace expression, for example, @lilypond[quote,ragged-right,fragment,verbatim,relative=2] \new Voice { \acciaccatura { \stemDown f16-> \stemNeutral } g4 } @end lilypond @noindent The overrides should also be reverted inside the grace expression. The layout of grace expressions can be changed throughout the music using the function @code{add-grace-property}. The following example undefines the @code{Stem} direction for this grace, so that stems do not always point up. @example \new Staff @{ #(add-grace-property 'Voice 'Stem 'direction '()) @dots{} @} @end example @noindent Another option is to change the variables @code{startGraceMusic}, @code{stopGraceMusic}, @code{startAcciaccaturaMusic}, @code{stopAcciaccaturaMusic}, @code{startAppoggiaturaMusic}, @code{stopAppoggiaturaMusic}. More information is in the file @file{ly/@/grace@/-init@/.ly}. @noindent The slash through the stem in acciaccaturas can be obtained in other situations by @code{\override Stem #'stroke-style = #"grace"}. @commonprop Grace notes may be forced to use floating spacing, @lilypond[relative=2,ragged-right] << \override Score.SpacingSpanner #'strict-grace-spacing = ##t \new Staff { c'4 \afterGrace c'4 { c'16[ c'8 c'16] } c'4 } \new Staff { c'16[ c'16 c'16 c'16] c'16[ c'16 c'16 c'16] c'4 } >> @end lilypond @seealso Program reference: @internalsref{GraceMusic}. @refbugs A score that starts with a @code{\grace} expression needs an explicit @code{\new Voice} declaration, otherwise the main note and the grace note end up on different staves. Grace note synchronization can also lead to surprises. Staff notation, such as key signatures, bar lines, etc., are also synchronized. Take care when you mix staves with grace notes and staves without, for example, @lilypond[quote,ragged-right,relative=2,verbatim,fragment] << \new Staff { e4 \bar "|:" \grace c16 d4 } \new Staff { c4 \bar "|:" d4 } >> @end lilypond @noindent This can be remedied by inserting grace skips of the corresponding durations in the other staves. For the above example @lilypond[quote,ragged-right,relative=2,verbatim,fragment] << \new Staff { e4 \bar "|:" \grace c16 d4 } \new Staff { c4 \bar "|:" \grace s16 d4 } >> @end lilypond Grace sections should only be used within sequential music expressions. Nesting or juxtaposing grace sections is not supported, and might produce crashes or other errors. @node Aligning to cadenzas @unnumberedsubsubsec Aligning to cadenzas In an orchestral context, cadenzas present a special problem: when constructing a score that includes a cadenza, all other instruments should skip just as many notes as the length of the cadenza, otherwise they will start too soon or too late. A solution to this problem are the functions @code{mmrest-of-length} and @code{skip-of-length}. These Scheme functions take a piece of music as argument, and generate a @code{\skip} or multi-rest, exactly as long as the piece. The use of @code{mmrest-of-length} is demonstrated in the following example. @lilypond[verbatim,ragged-right,quote] cadenza = \relative c' { c4 d8 << { e f g } \\ { d4. } >> g4 f2 g4 g } \new GrandStaff << \new Staff { \cadenza c'4 } \new Staff { #(ly:export (mmrest-of-length cadenza)) c'4 } >> @end lilypond @node Time administration @unnumberedsubsubsec Time administration @cindex Time administration Time is administered by the @internalsref{Time_signature_engraver}, which by default is to be found in the @internalsref{Score} context. The bookkeeping deals with the following variables @table @code @item currentBarNumber The measure number. @item measureLength The length of the measures in the current time signature. For a 4/4 time this is@tie{}1, and for 6/8 it is 3/4. @item measurePosition The point within the measure where we currently are. This quantity is reset to@tie{}0 whenever it exceeds @code{measureLength}. When that happens, @code{currentBarNumber} is incremented. @item timing If set to true, the above variables are updated for every time step. When set to false, the engraver stays in the current measure indefinitely. @end table Timing can be changed by setting any of these variables explicitly. In the next example, the 4/4 time signature is printed, but @code{measureLength} is set to 5/4. After a while, the measure is shortened by 1/8, by setting @code{measurePosition} to 7/8 at 2/4 in the measure, so the next bar line will fall at 2/4 + 3/8. The 3/8 arises because 5/4 normally has 10/8, but we have manually set the measure position to be 7/8 and 10/8 - 7/8 = 3/8. @lilypond[quote,ragged-right,verbatim,relative,fragment] \set Score.measureLength = #(ly:make-moment 5 4) c1 c4 c1 c4 c4 c4 \set Score.measurePosition = #(ly:make-moment 7 8) b8 b b c4 c1 @end lilypond @noindent As the example illustrates, @code{ly:make-moment n m} constructs a duration of n/m of a whole note. For example, @code{ly:make-moment 1 8} is an eighth note duration and @code{ly:make-moment 7 16} is the duration of seven sixteenths notes. @node Proportional notation (introduction) @unnumberedsubsubsec Proportional notation (introduction) @cindex Proportional notation See @ref{Proportional notation}. TODO: remove all this stuff? Notes can be spaced proportionally to their time-difference by assigning a duration to @code{proportionalNotationDuration} @lilypond[quote,ragged-right,verbatim,relative=2,fragment] << \set Score.proportionalNotationDuration = #(ly:make-moment 1 16) \new Staff { c8[ c c c c c] c4 c2 r2 } \new Staff { c2 \times 2/3 { c8 c c } c4 c1 } >> @end lilypond Setting this property only affects the ideal spacing between consecutive notes. For true proportional notation, the following settings are also required. @itemize @item True proportional notation requires that symbols are allowed to overstrike each other. That is achieved by removing the @internalsref{Separating_line_group_engraver} from @internalsref{Staff} context. @item Spacing influence of prefatory matter (clefs, bar lines, etc.) is removed by setting the @code{strict-note-spacing} property to @code{#t} in @internalsref{SpacingSpanner} grob. @item Optical spacing tweaks are switched by setting @code{uniform-stretching} in @internalsref{SpacingSpanner} to true. @end itemize @seealso Examples: @lsr{spacing,proportional@/-spacing@/.ly}, @lsr{spacing,proportional@/-strict@/-grace@/-notes@/.ly}, and @lsr{spacing,proportional@/-strict@/-notespacing@/.ly} An example of strict proportional notation is in the example file @file{input/proportional.ly}.