X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Documentation%2Fuser%2Frhythms.itely;h=827eaefd1ff2b3b4295c4ebaf04d77b900b4bc82;hb=0dc8d12d04d40386d318a7203620a6753c75dd32;hp=c644863b3bf0e9c6b27c5dcc58cc202c48ccd820;hpb=a38a563f999c2b0c6fe2715e19b14afe77108338;p=lilypond.git diff --git a/Documentation/user/rhythms.itely b/Documentation/user/rhythms.itely index c644863b3b..827eaefd1f 100644 --- a/Documentation/user/rhythms.itely +++ b/Documentation/user/rhythms.itely @@ -6,29 +6,15 @@ version that you are working on. See TRANSLATION for details. @end ignore -@c \version "2.11.51" +@c \version "2.11.61" @ignore GDP TODO list -1.2.3.1 Time signature -Needs an example of beatLength, which is broken (see my recent -mail -to -bug). What to do? For now I've left a paragraph of text -which really -needs to be inserted with an example in a snippet. - 1.2.3.4 Polymetric notation Quite extensive changes. Could you please check through. Divided into three -sections. Necessarily uses tweaks. I've also left an @lsr under -@seealso -Snippets - is this permitted or is @lsr now verboten? This -snippet is too -long to include, but seems relevant. -A snippet "grouping beats" hasn't yet appeared (only sent to vv a -couple of -days ago). Text left in Snippets: with TODO. +sections. Necessarily uses tweaks. @end ignore @node Rhythms @@ -59,7 +45,7 @@ This section discusses rhythms, rests, durations, beaming and bars. @end menu @node Durations -@subsubsection Durations +@unnumberedsubsubsec Durations @cindex durations, of notes @cindex note durations @@ -78,7 +64,7 @@ Durations as short as 64th notes may be specified. Shorter values are possible, but only as beamed notes. @c Two 64th notes are needed to obtain beams -@lilypond[quote,ragged-right,verbatim,fragment,relative=2] +@lilypond[quote,verbatim,relative=2] \time 8/1 c\longa c\breve c1 c2 c4 c8 c16 c32 c64 c64 @@ -89,7 +75,7 @@ Here are the same durations with automatic beaming turned off. @c not strictly "writing rhythms"; more of a "displaying" thing, @c but it's ok here. -gp -@lilypond[quote,ragged-right,verbatim,fragment,relative=2] +@lilypond[quote,verbatim,relative=2] \time 8/1 \autoBeamOff c\longa c\breve c1 c2 @@ -104,7 +90,7 @@ If the duration is omitted, it is set to the previously entered duration. The default for the first note is a quarter note. -@lilypond[quote,ragged-right,verbatim,fragment,relative=2] +@lilypond[quote,verbatim,relative=2] a a a2 a a4 a a1 a @end lilypond @@ -117,7 +103,7 @@ To obtain dotted note lengths, place a dot (@code{.}) after the duration. Double-dotted notes are specified by appending two dots, and so on. -@lilypond[quote,ragged-right,fragment,verbatim,relative=2] +@lilypond[quote,verbatim,relative=2] a4 b c4. b8 a4. b4.. c8. @end lilypond @@ -183,7 +169,7 @@ rests from 128th to maxima (8 x whole) may be printed. @node Tuplets -@subsubsection Tuplets +@unnumberedsubsubsec Tuplets @cindex tuplets @cindex triplets @@ -203,7 +189,7 @@ under the notes, optionally with a bracket. The most common tuplet is the triplet in which 3 notes have the duration of 2, so the notes are 2/3 of their written length. -@lilypond[quote,ragged-right,fragment,verbatim,relative=2] +@lilypond[quote,verbatim,relative=2] a2 \times 2/3 { b4 b b } c4 c \times 2/3 { b4 a g } @end lilypond @@ -218,7 +204,7 @@ details see @ref{Direction and placement}. Tuplets may be nested: -@lilypond[quote,fragment,ragged-right,verbatim,relative=2] +@lilypond[quote,verbatim,relative=2] \autoBeamOff c4 \times 4/5 { f8 e f \times 2/3 { e[ f g] } } f4 | @end lilypond @@ -267,7 +253,7 @@ Learning Manual: @rlearning{Tweaking methods}. Notation Reference: @ref{Time administration}, @ref{Scaling durations}, -@ref{Objects connected to the input}, +@ref{The tweak command}, @ref{Polymetric notation}. Snippets: @@ -287,7 +273,7 @@ placed within tuplet brackets. @node Scaling durations -@subsubsection Scaling durations +@unnumberedsubsubsec Scaling durations @cindex scaling durations @cindex durations, scaling @@ -303,7 +289,7 @@ output. Multiplying factors may be combined such as @code{*L*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] +@lilypond[quote,relative=2,verbatim] \time 2/4 % Alter durations to triplets a4*2/3 gis4*2/3 a4*2/3 @@ -330,7 +316,7 @@ fraction @emph{num}/@emph{den}. The spaces around the dot are required. Here is an example showing how music can be compressed and expanded: -@lilypond[quote,fragment,relative=2,ragged-right,verbatim] +@lilypond[quote,relative=2,verbatim] \time 2/4 % Normal durations 4 c8 a @@ -361,7 +347,7 @@ Snippets: @node Ties -@subsubsection Ties +@unnumberedsubsubsec Ties @cindex tie @funindex ~ @@ -376,8 +362,8 @@ duration, similar to the augmentation dot.} A tie is entered using the tilde symbol @code{~} -@lilypond[quote,ragged-right,fragment,verbatim] -e'2 ~ e' +@lilypond[quote,verbatim,relative=2] +a2 ~ a @end lilypond @@ -386,7 +372,7 @@ Ties are used either when the note crosses a bar line, or when dots cannot be used to denote the rhythm. Ties should also be used when note values cross larger subdivisions of the measure: -@lilypond[fragment,quote,ragged-right] +@lilypond[verbatim,quote] \relative c' { r8 c8 ~ c2 r4 | r8^"not" c2 ~ c8 r4 @@ -406,7 +392,7 @@ match are connected. When no note heads match, no ties will be created. Chords may be partially tied by placing the tie inside the chord. -@lilypond[quote,ragged-right,fragment,verbatim,relative=1] +@lilypond[quote,verbatim,relative=1] ~ @end lilypond @@ -420,7 +406,7 @@ the chord. When a second alternative of a repeat starts with a tied note, you have to specify the repeated tie as follows: -@lilypond[fragment,quote,ragged-right,relative=2,verbatim] +@lilypond[quote,relative=2,verbatim] \repeat volta 2 { c g 2 ~ } \alternative { % First alternative: following note is tied normally @@ -438,7 +424,7 @@ notes must not be damped at the end. It is used in notation for piano, harp and other string and percussion instruments. They can be entered as follows: -@lilypond[fragment,quote,ragged-right,verbatim,relative=1] +@lilypond[quote,verbatim,relative=1] 1\laissezVibrer @end lilypond @@ -521,7 +507,7 @@ Rests are entered as part of the music in music expressions. @end menu @node Rests -@subsubsection Rests +@unnumberedsubsubsec Rests @cindex rest @cindex rest, entering durations @cindex maxima @@ -540,7 +526,7 @@ commands shown: @c \time 16/1 is used to avoid spurious bar lines @c and long tracts of empty measures -@lilypond[fragment,quote,ragged-right,verbatim] +@lilypond[fragment,quote,verbatim] \new Staff { % These two lines are just to prettify this example \time 16/1 @@ -571,7 +557,7 @@ be placed at the staff position where the note would appear. This allows for precise manual formatting of polyphonic music, since the automatic rest collision formatter will not move these rests. -@lilypond[fragment,quote,ragged-right,verbatim,relative=2] +@lilypond[quote,verbatim,relative=2] a4\rest d4\rest @end lilypond @@ -602,7 +588,7 @@ are rests from 128th to maxima (8 x whole). @node Invisible rests -@subsubsection Invisible rests +@unnumberedsubsubsec Invisible rests @cindex skip @cindex invisible rest @@ -626,7 +612,7 @@ other situations, for example, when entering lyrics, @code{\skip} is used to skip a musical moment. @code{\skip} requires an explicit duration. -@lilypond[quote,ragged-right,verbatim,relative=2] +@lilypond[quote,verbatim,relative=2] << { a2 \skip2 a2 a2 @@ -664,7 +650,7 @@ Internals Reference: @rinternals{SkipMusic} @node Full measure rests -@subsubsection Full measure rests +@unnumberedsubsubsec Full measure rests @cindex multi-measure rests @cindex full-measure rests @@ -676,7 +662,7 @@ Internals Reference: @rinternals{SkipMusic} Rests for one or more full measures are entered like notes with the note name uppercase @code{R}: -@lilypond[quote,fragment,verbatim,relative=2] +@lilypond[quote,verbatim,relative=2] % Rest measures contracted to single measure \compressFullBarRests R1*4 @@ -690,7 +676,7 @@ used for notes. The duration in a multi-measure rest must always be an integral number of measure-lengths, so augmentation dots or fractions must often be used: -@lilypond[quote,ragged-right,fragment,verbatim] +@lilypond[quote,fragment,verbatim] \compressFullBarRests \time 2/4 R1 | R2 | @@ -706,7 +692,7 @@ A full-measure rest is printed as either a whole or breve rest, centered in the measure, depending on the time signature. -@lilypond[quote,ragged-right,fragment,verbatim] +@lilypond[quote,verbatim,fragment] \time 4/4 R1 | \time 6/4 @@ -725,7 +711,7 @@ Alternatively, a mult-measure rest can be shown as a single measure containing a multi-measure rest symbol, with the number of measures of rest printed above the measure: -@lilypond[quote,ragged-right,fragment,verbatim] +@lilypond[quote,fragment,verbatim] % Default behavior \time 3/4 r2. | R2.*2 | \time 2/4 R2 | @@ -751,7 +737,7 @@ Markups can be added to multi-measure rests. The predefined command @code{\fermataMarkup} is provided for adding fermatas. -@lilypond[quote,ragged-right,verbatim,fragment] +@lilypond[quote,verbatim,fragment] \compressFullBarRests \time 3/4 R2.*10^\markup { \italic "ad lib." } @@ -765,7 +751,7 @@ objects of type @code{MultiMeasureRestText}, not object, or they will be ignored. See the following example. } -@lilypond[quote,ragged-right,verbatim,fragment] +@lilypond[quote,verbatim,fragment] % This fails, as the wrong object name is specified \override TextScript #'padding = #5 R1^"wrong" @@ -799,33 +785,8 @@ setting, resulting bar-check warnings may not be displayed. @lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] {positioning-multi--measure-rests.ly} -@c TODO -- convert to snippet -Markups attached to a multi-measure rest will be centered above or -below it. Long markups attached to multi-measure rests do not cause -the measure to expand. To expand a multi-measure rest to fit the markup, -use a spacer rest with an attached markup before the multi-measure rest: - -@c -- music is somewhat compressed vertically. I thought it -@c was good because the emphasis is not on the content -@c of the markup, but on the place the markup was attached -cs -@lilypond[quote,ragged-right,verbatim,fragment,relative=2] -\compressFullBarRests -\textLengthOn -s1*0^\markup { [MAJOR GENERAL] } -R1*19 -s1*0_\markup { \italic { Cue: ... it is yours } } -s1*0^\markup { A } -R1*30^\markup { [MABEL] } -\textLengthOff -c4^\markup { CHORUS } d f c -@end lilypond - -@noindent -Note that the spacer rest causes a bar to be inserted. -Text attached to a spacer rest in this way is left-aligned to the -position where the note would be placed in the measure, but if the -measure length is determined by the length of the text, the text will -appear to be centered. +@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +{multi--measure-rest-markup.ly} @seealso @@ -877,7 +838,7 @@ Multi-measure rests do not take part in rest collisions. @end menu @node Time signature -@subsubsection Time signature +@unnumberedsubsubsec Time signature @cindex time signature @cindex meter @@ -885,7 +846,7 @@ Multi-measure rests do not take part in rest collisions. The time signature is set as follows: -@lilypond[quote,ragged-right,fragment,verbatim,relative=2] +@lilypond[quote,verbatim,relative=2] \time 2/4 c2 \time 3/4 c2. @end lilypond @@ -896,9 +857,9 @@ Time signatures are printed at the beginning of a piece and whenever the time signature changes. If a change takes place at the end of a line a warning time signature sign is printed there. This default behavior may be changed, see -@ref{Controlling visibility of objects}. +@ref{Visibility of objects}. -@lilypond[quote,ragged-right,fragment,verbatim,relative=2] +@lilypond[quote,verbatim,relative=2] \time 2/4 c2 c \break @@ -915,7 +876,7 @@ c c c c The time signature symbol that is used in 2/2 and 4/4 time can be changed to a numeric style: -@lilypond[fragment,quote,ragged-right,verbatim,relative=2] +@lilypond[quote,verbatim,relative=2] % Default style \time 4/4 c1 \time 2/2 c1 @@ -930,8 +891,8 @@ changed to a numeric style: @end lilypond -Ancient time signatures are covered in -@ref{Ancient time signatures}. +Mensural time signatures are covered in +@ref{Mensural time signatures}. @predefined @@ -940,55 +901,26 @@ Ancient time signatures are covered in @snippets -@c TODO Send as snippet called "setting measure and beat lengths" -@c when example is added -@code{\time} sets the properties @code{timeSignatureFraction}, -@code{beatLength}, and @code{measureLength} in the @code{Timing} -context, which is normally aliased to @code{Score}. Changing the -value of @code{timeSignatureFraction} causes the new time -signature symbol to be printed without changing the other -properties. The property @code{measureLength} determines where -bar lines should be inserted and, with @code{beatLength}, how -automatic beams should be generated. - -TODO Add example of using beatLength. -@c beatLength is broken - see bug 511 - -@c End of snippet +@c TODO Send as snippet called "Changing the time signature without affecting the beat length" -@cindex measure groupings -@cindex beats, grouping -@cindex grouping beats -@cindex measure sub-grouping +The @code{\time} command sets the properties +@code{timeSignatureFraction}, @code{beatLength}, and +@code{measureLength} in the @code{Timing} context, which is +normally aliased to @code{Score}. Changing the value of +@code{timeSignatureFraction} causes the new time signature symbol +to be printed without changing the other properties: -@c TODO Sent as snippet called "grouping beats" 25 Mar 08 -Options to group beats within a bar are available through the -Scheme function @code{set-time-signature}, which takes three -arguments: the number of beats, the beat length, and the internal -grouping of beats in the measure. If the -@rinternals{Measure_grouping_engraver} is included, the function -will also create @rinternals{MeasureGrouping} signs. Such signs -ease reading rhythmically complex modern music. In the 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" - } - } -} +@lilypond[quote,verbatim,relative=2] +\time 3/4 +a16 a a a a a a a a a a a +% Change time signature but keep 3/4 beaming +% due to unchanged beatLength +\set Score.timeSignatureFraction = #'(12 . 16) +a16 a a a a a a a a a a a +\time 12/16 +% Lose 3/4 beaming now beatLength has changed to 16 +a16 a a a a a a a a a a a @end lilypond -@c TODO End of snippet called "grouping beats" @cindex compound time signatures @cindex time signature, compound @@ -1003,7 +935,7 @@ Music Glossary: @rglos{time signature} Notation Reference: -@ref{Ancient time signatures}, +@ref{Mensural time signatures}, @ref{Time administration}. Snippets: @@ -1014,14 +946,8 @@ Internals Reference: @rinternals{Timing_translator}. -@knownissues - -Automatic beaming does not use the measure grouping specified with -@code{set-time-signature}. - - @node Upbeats -@subsubsection Upbeats +@unnumberedsubsubsec Upbeats @cindex anacrusis @cindex upbeat @@ -1036,20 +962,20 @@ Partial or pick-up measures, such as an anacrusis or upbeat, are entered using the @code{\partial} command, with the syntax @example -\partial @var{duration} @emph{notes} +\partial @var{duration} @end example where @code{duration} is the rhythmic length of the interval before the start of the first complete measure: -@lilypond[quote,ragged-right,fragment,verbatim,relative=2] +@lilypond[quote,verbatim,relative=2] \partial 4 e4 | a2. c,4 | @end lilypond The partial measure can be any duration less than a full measure: -@lilypond[quote,ragged-right,fragment,verbatim,relative=2] +@lilypond[quote,verbatim,relative=2] \partial 8*3 c8 d e | a2. c,4 | @end lilypond @@ -1068,37 +994,26 @@ command: i.e., @code{\partial 4} is internally translated to @seealso -Music Glossary: @rglos{anacrusis} +Music Glossary: +@rglos{anacrusis}. -Notation Reference: @ref{Grace notes} +Notation Reference: +@ref{Grace notes}. Snippets: @rlsr{Rhythms}. Internal Reference: -@rinternals{Timing_translator} +@rinternals{Timing_translator}. @knownissues -@cindex grace notes, in anacruses - -This command does not take into account grace notes at the start -of the music. If the pick-up starts with one or more grace -notes, then the @code{\partial} should follow the grace note(s): - -@lilypond[verbatim,quote,ragged-right,relative,fragment] -\grace f16 -\partial 4 -g4 -a2 g2 -@end lilypond - The @code{\partial} command is intended to be used only at the beginning of a piece. If you use it after the beginning, some odd warnings may occur. @node Unmetered music -@subsubsection Unmetered music +@unnumberedsubsubsec Unmetered music @funindex \cadenzaOn @funindex \cadenzaOff @@ -1108,12 +1023,12 @@ odd warnings may occur. @cindex unmetered music Bar lines and bar numbers are calculated automatically. For -unmetered music (cadenzas, for example), this is not desirable. +unmetered music (some cadenzas, for example), this is not desirable. To turn off automatic calculation of bar lines and bar numbers, -use the command @code{\cadenzaOn}, and use @code{\cadenzaOff} +use the command @code{\cadenzaOn}, and use @code{\cadenzaOff} to turn them on again. -@lilypond[verbatim,quote,ragged-right,relative=2,fragment] +@lilypond[verbatim,relative=2,fragment] c4 d e d \cadenzaOn c4 c d8 d d f4 g4. @@ -1125,7 +1040,7 @@ d4 e d c Bar numbering is resumed at the end of the cadenza as if the cadenza were not there: -@lilypond[verbatim,quote,ragged-right,relative=2,fragment] +@lilypond[verbatim,relative=2,fragment] % Show all bar numbers \override Score.BarNumber #'break-visibility = #all-visible c4 d e d @@ -1144,10 +1059,10 @@ d4 e d c @seealso Music Glossary: -@rglos{cadenza} +@rglos{cadenza}. Notation Reference: -@ref{Controlling visibility of objects} +@c ref{Controlling visibility of objects}. Snippets: @rlsr{Rhythms}. @@ -1167,7 +1082,7 @@ to indicate where breaks can occur. @node Polymetric notation -@subsubsection Polymetric notation +@unnumberedsubsubsec Polymetric notation @cindex double time signatures @cindex signatures, polymetric @@ -1177,38 +1092,6 @@ to indicate where breaks can occur. Polymetric notation is supported, either explicitly or through clever use of markup features. -@c Each of these examples uses \set or \override, and therefore -@c by policy should be converted to a snippet. -@c Do we want to have a section with a very brief (two-line -@c introduction, and have most of the content be in snippets? - -@strong{Alternating time signatures} - -Regularly alternating double time signatures are not supported -explicitly, but they can be faked. In the next example, the -double time signature is created with markup text, while the -real time signature is set in the usual way with @code{\time}. - -@lilypond[verbatim,ragged-right] -% Create 9/8 split into 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 9/8 - c'2 \bar ":" c'4 c'4. - c'2 \bar ":" c'4 c'4. -} -@end lilypond - @strong{Staves with different time signatures, equal measure lengths} This notation can be created by setting a common time signature @@ -1224,7 +1107,7 @@ In this example, music with the time signatures of 3/4, 9/8, and are multiplied by 2/3, as 2/3 * 9/8 = 3/4, and in the third staff, shown durations are multiplied by 3/5, as 3/5 * 10/8 = 3/4. -@lilypond[quote,ragged-right,verbatim,fragment] +@lilypond[quote,verbatim,fragment] \relative c' { << \new Staff { \time 3/4 @@ -1249,15 +1132,12 @@ staff, shown durations are multiplied by 3/5, as 3/5 * 10/8 = 3/4. >> } @end lilypond -@c I guess this example doesn't use \set or \override, and so -@c could stay in the manual. - @strong{Staves with different time signatures, unequal bar lengths} Each staff can be given its own independent time signature by moving the @code{Timing_translator} to the @code{Staff} context. -@lilypond[quote,verbatim,ragged-right] +@lilypond[quote,verbatim] \layout { \context { \Score @@ -1295,6 +1175,11 @@ moving the @code{Timing_translator} to the @code{Staff} context. >> @end lilypond +@snippets + +@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +{compound-time-signatures.ly} + @seealso @@ -1307,33 +1192,34 @@ Notation Reference: @ref{Scaling durations} Snippets: @rlsr{Rhythms}. -@c Is this still permitted? -@c @lsr{contemporary,compound-time-signature} Internals Reference: @rinternals{TimeSignature}, -@rinternals{Timing-translator}, +@rinternals{Timing_translator}, @rinternals{Staff}. @knownissues -When using different time signatures in parallel, the spacing is -aligned vertically, but bar lines distort the regular spacing. - +When using different time signatures in parallel, notes +at the same moment will be be placed at the same horizontal +location. However, the bar lines in the different staves +will cause the note spacing to be less regular in each of the +individual staves than would be normal without the different +time signatures. @node Automatic note splitting -@subsubsection Automatic note splitting +@unnumberedsubsubsec Automatic note splitting @cindex notes, splitting @cindex splitting notes Long notes which overrun bar lines can be converted automatically to tied notes. This is done by replacing the -@code{Note_heads_engraver} by the +@code{Note_heads_engraver} with the @code{Completion_heads_engraver}. In the following example, notes crossing the bar lines are split and tied. -@lilypond[quote,fragment,verbatim,relative=1,ragged-right] +@lilypond[quote,verbatim,relative=1] \new Voice \with { \remove "Note_heads_engraver" \consists "Completion_heads_engraver" @@ -1347,11 +1233,6 @@ inserts ties. One of its uses is to debug complex scores: if the measures are not entirely filled, then the ties show exactly how much each measure is off. -To allow line breaking on the bar lines where the -@code{Completion_heads_engraver} has inserted a split note, remove -the @code{Forbid_line_break_engraver} too. - - @seealso Music Glossary: @rglos{tie} @@ -1372,28 +1253,81 @@ Internals Reference: @knownissues Not all durations (especially those containing tuplets) can be -represented exactly with normal notes and dots, but the engraver -will not insert tuplets. +represented exactly with normal notes and dots, but the +@code{Completion_heads_engraver} will not insert tuplets. The @code{Completion_heads_engraver} only affects notes; it does not split rests. @node Showing melody rhythms -@subsubsection Showing melody rhythms +@unnumberedsubsubsec Showing melody rhythms Sometimes you might want to show only the rhythm of a melody. This can be done with the rhythmic staff. All pitches of notes on such a staff are squashed, and the staff itself has a single line -@c TODO Devise a more realistic example, perhaps with lyrics -td -@lilypond[quote,ragged-right,fragment,relative=1,verbatim] -\new RhythmicStaff { - \time 4/4 - c4 e8 f g2 | r4 g r2 | g1 | r1 | -} +@lilypond[quote,relative=1,verbatim] +<< + \new RhythmicStaff { + \new Voice = "myRhythm" { + \time 4/4 + c4 e8 f g2 + r4 g g f + g1 + } + } + \new Lyrics { + \lyricsto "myRhythm" { + This is my song + I like to sing + } + } +>> @end lilypond +Guitar chord charts often show the strumming rhythms. This can +be done with the @code{Pitch_squash_engraver} and +@code{\improvisationOn}. + + +@lilypond[quote,verbatim] +<< + \new ChordNames { + \chordmode { + c1 f g c + } + } + + \new Voice \with { + \consists Pitch_squash_engraver + } \relative c'' { + \improvisationOn + c4 c8 c c4 c8 c + f4 f8 f f4 f8 f + g4 g8 g g4 g8 g + c4 c8 c c4 c8 c + } +>> +@end lilypond + +@predefined +@code{\improvisationOn}, +@code{\improvisationOff}. + +@snippets + +@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +{guitar-strum-rhythms.ly} + +@seealso + +Snippets: +@rlsr{Rhythms}. + +Internals Reference: +@rinternals{RhythmicStaff}, +@rinternals{Pitch_squash_engraver}. @node Beams @subsection Beams @@ -1406,32 +1340,42 @@ staff are squashed, and the staff itself has a single line @end menu @node Automatic beams -@subsubsection Automatic beams +@unnumberedsubsubsec Automatic beams By default, beams are inserted automatically: @cindex beams, manual @cindex manual beams -@lilypond[quote,ragged-right,fragment,verbatim,relative=2] +@lilypond[quote,verbatim,relative=2] \time 2/4 c8 c c c \time 6/8 c c c c8. c16 c8 @end lilypond If these automatic decisions are not satisfactory, beaming can be entered explicitly; see @ref{Manual beams}. It is also possible -to define beaming patterns that differ from the defaults; see -@ref{Setting automatic beam behavior}. The default beaming rules -are defined in @file{scm/@/auto@/-beam@/.scm}. +to define beaming patterns that differ from the defaults. The +default beaming rules for most common time signatures are defined +in @file{scm/@/auto@/-beam@/.scm}. If there are no beaming rules +defined for the time signature being used the beaming is controlled +by the values of three context properties, @code{measureLength}, +@code{beatLength} and @code{beatGrouping}. Both the beaming rules +and the context properties can be overridden, see +@ref{Setting automatic beam behavior}. @cindex autoBeamOn @cindex autoBeamOff +@warning{If beams are used to indicate melismata in songs, then automatic +beaming should be switched off with @code{\autoBeamOff} and the beams +indicated manually.} + + @noindent Automatic beaming may be turned off and on with @code{\autoBeamOff} and @code{\autoBeamOn} commands: -@lilypond[quote,ragged-right,fragment,relative=1,verbatim] +@lilypond[quote,relative=1,verbatim] c4 c8 c8. c16 c8. c16 c8 \autoBeamOff c4 c8 c8. c16 c8. @@ -1439,84 +1383,30 @@ c4 c8 c8. c16 c8. c16 c8 @end lilypond +@predefined +@code{\autoBeamOff}, +@code{\autoBeamOn}. @snippets -Beaming patterns may be altered with the @code{beatGrouping} property, - -@lilypond[quote,verbatim,relative=2,fragment,ragged-right] -\time 5/16 -\set beatGrouping = #'(2 3) -c8[^"(2+3)" c16 c8] -\set beatGrouping = #'(3 2) -c8[^"(3+2)" c16 c8] -@end lilypond - -The beams of consecutive 16th (or shorter) notes are, by default, -not sub-divided. That is, the three (or more) beams stretch -unbroken over entire groups of notes. This behavior can -be modified to sub-divide the beams into sub-groups by setting -the property @code{subdivideBeams}. When set, multiple beams -will be sub-divided at intervals defined by the current value of -@code{beatLength} by reducing the multiple beams to just one beam -between the sub-groups. Note that @code{beatLength} lives in the -@code{Score} context and defaults to a quarter note. It must be -set to a fraction giving the duration of the beam sub-group -using the @code{make-moment} function, as shown here: - -@lilypond[fragment,ragged-right,quote,relative=2,verbatim] -c32[ c c c c c c c] -\set subdivideBeams = ##t -c32[ c c c c c c c] -% Set beam sub-group length to an eighth note -\set Score.beatLength = #(ly:make-moment 1 8) -c32[ c c c c c c c] -% Set beam sub-group length to a sixteenth note -\set Score.beatLength = #(ly:make-moment 1 16) -c32[ c c c c c c c] -@end lilypond -@funindex subdivideBeams - -@noindent -For more information about @code{make-moment}, see -@ref{Time administration}. - @funindex breakable @cindex break, line @cindex line breaks -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}. - -@lilypond[ragged-right,relative=2,fragment,verbatim,quote] -\override Beam #'breakable = ##t -c8 \repeat unfold 15 { c[ c] } c -@end lilypond - -@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 +@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +{beams-across-line-breaks.ly} +@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +{changing-beam-knee-gap.ly} @seealso -Notation Reference: @ref{Manual beams}, @ref{Setting automatic beam behavior}. +Notation Reference: +@ref{Manual beams}, +@ref{Setting automatic beam behavior}. + +Installed Files: +@file{scm/@/auto@/-beam@/.scm}. Snippets: @rlsr{Rhythms}. @@ -1533,44 +1423,205 @@ Beams can collide with note heads and accidentals in other voices @node Setting automatic beam behavior -@subsubsection Setting automatic beam behavior +@unnumberedsubsubsec Setting automatic beam behavior +@funindex autoBeaming @funindex autoBeamSettings @funindex (end * * * *) @funindex (begin * * * *) + @cindex automatic beams, tuning @cindex tuning automatic beaming +@cindex automatic beam generation +@cindex autobeam +@cindex lyrics and beaming + + +The placement of automatic beams is determined by the rules +described in @ref{Automatic beams}. There are two mutually +exclusive ways in which these rules may be modified. The +first, modifying the grouping of beats, applies to uncommon time +signatures, i.e. those for which there are no predefined rules +defining the beam end points. The second method, modifying the +specification of the beam end points, can be used for any time +signature. This second method @strong{must} be used for those time +signatures for which beam ending rules are pre-defined, unless +these have all been reverted. There are predefined rules for time +signatures of 3/2, 3/4, 4/4, 2/4, 4/8, 4/16, 6/8, 9/8 and 12/8. + +@i{@strong{Modifying the grouping of beats}} + +If there are no beam-ending rules defined for the time signature +in use the beaming is controlled by three context properties: +@code{measureLength}, @code{beatLength} and @code{beatGrouping}. +These properties may be set in the @code{Score}, @code{Staff} or +@code{Voice} contexts to delimit their scope. + +These determine the beaming as follows: + +Beams may begin anywhere (unless a beam is already active). Beams +end at a time determined by the values of @code{beatGrouping} and +@code{beatLength}, as follows: + +@itemize -@c [TODO: use \applyContext] +@item If @code{beatGrouping} and @code{beatLength} are consistent +with @code{measureLength}, @code{beatGrouping} is used to determine +the end points of beams. -In normal time signatures, automatic beams can start on any note -but can end in only a few positions within the measure: beams can -end on a beat, or at durations specified by the properties in -@code{autoBeamSettings}. The properties in -@code{autoBeamSettings} consist of a list of rules for where beams -can begin and end. The default @code{autoBeamSettings} rules are -defined in @file{scm/@/auto@/-beam@/.scm}. +@item If @code{beatGrouping} and @code{beatLength} are inconsistent +with @code{measureLength}, @code{beatLength} is used to determine +the end points of beams. + +@end itemize + +@warning{These three properties are effective @strong{only} if +there are no beam-ending rules defined for the time signature in +force, or if these beam-ending rules have all been reverted.} + +By default the @code{measureLength} and @code{beatLength} are +derived from the time signature set by the @code{\time} command. +The @code{measureLength} is set to be exactly the same length as +the measure length given by the time signature, and the +@code{beatLength} is set to be the same as one over the denominator +of the time signature. + +The default value of @code{beatGrouping} is taken from a table in +@file{scm/@/music@/-functions@/.scm}. To find this, see +@rlearning{Other sources of information}. It defines the beat +grouping for 5/8, 6/8, 8/8, 9/8 and 12/8 time signatures. + +Both @code{measureLength} and @code{beatLength} are @i{moments}, +units of musical duration. A quantity of type @i{moment} is +created by the scheme function @code{ly:make-moment}. For more +information about this function, see @ref{Time administration}. + +@code{beatGrouping} is a list of integers giving the number of +beats in each group. + +@snippets + +@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +{grouping-beats.ly} + +@c TODO Convert to snippet called "Specifying context with beatGrouping" + +By specifying the context, the effect of @code{beatGrouping} can be +limited to the context specified, and the values set in higher-level +contexts overridden: + +@lilypond[quote,verbatim] +\score { + \new Staff << + \time 7/8 + \new Voice { + \relative c'' { + \set Staff.beatGrouping = #'(2 3 2) + a8 a a a a a a + } + } + \new Voice { + \relative c' { + \voiceTwo + \set Voice.beatGrouping = #'(1 3 3) + f8 f f f f f f + } + } + >> +} +@end lilypond + + +@c TODO Send as snippet? + +The property @code{measureLength} determines where bar lines +should be inserted and, with @code{beatLength} and +@code{beatGrouping}, how automatic beams should be generated +for time signatures for which no beam-ending rules are defined. + +@lilypond[quote,verbatim,relative=2] +\time 3/4 % auto beam on 1/4 note groups +a16 a a a a a a a a a a a a a a a +\time 12/16 % no defined auto-beaming for this time sig +a16 a a a a a a a a a a a a a a a +\time 3/4 +a16 a a a a a a a a a a a a a a a +\set Score.timeSignatureFraction = #'(12 . 16) %keep 3/4 beaming + % due to beatLength +a16 a a a a a a a a a a a a a a a +\set Score.beatLength = #(ly:make-moment 1 8) %beam on 1/8 notes +a16 a a a a a a a a a a a a a a a +\set Score.beatLength = #(ly:make-moment 1 16) +\set Score.beatGrouping = #'(3 4 2 3) %beam on 3/16, 7/16, 9/16, 12/16 +a16 a a a a a a a a a a a a a a a +@end lilypond + + +@c End of snippet + +@funindex subdivideBeams + +@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +{sub-dividing-beams.ly} + +@cindex measure groupings +@cindex beats, grouping +@cindex grouping beats +@cindex measure sub-grouping + +@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +{conducting-signs,-measure-grouping-signs.ly} + + +@strong{@i{Modifying the beam end points}} + +In common time signatures, automatic beams can start on any note +but can end at only a few positions within the measure, namely at +durations specified by the properties in @code{autoBeamSettings}. +These properties consist of a list of rules defining where beams can +end. The default @code{autoBeamSettings} rules are defined in +@file{scm/@/auto@/-beam@/.scm}. To find this, see +@rlearning{Other sources of information}. + +This method @strong{must} be used for the time signatures for which +beam-ending rules are defined by default, unless these have all +been reverted. It is also particularly suitable for many other time +signatures if the time signature of the measures changes frequently, +or if the beaming should be different for different beam durations. In order to add a rule to the list, use + @example -#(override-auto-beam-setting '(be p q n m) a b [context]) +#(override-auto-beam-setting + '(beam-limit + beam-numerator beam-denominator + time-signature-numerator time-signature-denominator) + moment-numerator moment-denominator [context]) @end example +@noindent +where + @itemize -@item @code{be} is either @code{begin} or @code{end}. +@item @code{beam-limit} is the type of automatic beam limit +defined. This can be either @code{begin} or @code{end} but +only @code{end} is effective. -@item @code{p/q} is the duration of the note for which you want -to add a rule. A beam is considered to have the duration of its -shortest note. Set @code{p} and @code{q} to @code{'*'} to -have this apply to any beam. +@item @code{beam-numerator/beam-denominator} is the beam duration +to which the rule is to apply. A beam is considered to have +the duration of its shortest note. Set @code{beam-numerator} +and @code{beam-denominator} to @code{'*'} to have this rule apply +to beams of any duration. -@item @code{n/m} is the time signature to which -this rule should apply. Set @code{n} and @code{m} to @code{'*'} -to have this apply in any time signature. +@item @code{time-signature-numerator/time-signature-denominator} +specifies the time signature to which this rule should apply. +If @code{time-signature-numerator} and +@code{time-signature-denominator} are set to @code{'*'} this rule +will apply in any time signature. -@item @code{a/b} is the position in the bar at which the beam should -begin/end. +@item @code{monent-numerator/moment-denominator} is the position +in the bar at which the beam should end. @item @code{context} is optional, and it specifies the context at which the change should be made. The default is @code{'Voice}. @@ -1581,29 +1632,34 @@ the change should be made. The default is @code{'Voice}. @end itemize For example, if automatic beams should always end on the first quarter -note, use +note, whatever the time signature or beam duration, use -@example +@lilypond[quote,verbatim,relative=2] +a8 a a a a a a a #(override-auto-beam-setting '(end * * * *) 1 4) -@end example +a8 a a a a a a a +@end lilypond -You can force the beam settings to only take effect on beams whose shortest +You can force the beam settings to take effect only on beams whose shortest note is a certain duration -@lilypond[quote,fragment,ragged-right,verbatim,relative=2] +@lilypond[quote,verbatim,relative=2] \time 2/4 +% end 1/16 beams for all time signatures at the 1/16 moment #(override-auto-beam-setting '(end 1 16 * *) 1 16) a16 a a a a a a a | a32 a a a a16 a a a a a | +% end 1/32 beams for all time signatures at the 1/16 moment #(override-auto-beam-setting '(end 1 32 * *) 1 16) a32 a a a a16 a a a a a | @end lilypond -You can force the beam settings to only take effect in certain time +You can force the beam settings to take effect only in certain time signatures -@lilypond[quote,fragment,ragged-right,verbatim,relative=2] +@lilypond[quote,verbatim,relative=2] \time 5/8 +% end beams of all durations in 5/8 time signature at the 2/8 moment #(override-auto-beam-setting '(end * * 5 8) 2 8) c8 c d d d \time 4/4 @@ -1612,21 +1668,56 @@ e8 e f f e e d d c8 c d d d @end lilypond -You can also remove a previously set beam-ending rule by using +When multiple voices are used the @code{Staff} context must be +specified if the beaming is to be applied to all voices in the +staff: + +@lilypond[quote,verbatim,relative=2] +\time 7/8 +% rhythm 3-1-1-2 +% Context not specified - does not work correctly +#(override-auto-beam-setting '(end * * 7 8) 3 8) +#(override-auto-beam-setting '(end * * 7 8) 4 8) +#(override-auto-beam-setting '(end * * 7 8) 5 8) +<< {a8 a a a16 a a a a8 a} \\ {f4. f8 f f f} >> + +% Works correctly with context specified +#(override-auto-beam-setting '(end * * 7 8) 3 8 'Staff) +#(override-auto-beam-setting '(end * * 7 8) 4 8 'Staff) +#(override-auto-beam-setting '(end * * 7 8) 5 8 'Staff) +<< {a8 a a a16 a a a a8 a} \\ {f4. f8 f f f} >> +@end lilypond + +@c TODO Add example using Score for multiple staves? +@c Hmm. Not sure it works correctly. Needs more investigation. + +@warning{If any unexpected beam behavior occurs, check the default +automatic beam settings in @file{scm/@/auto@/-beam@/.scm} for +possible interference, because the beam endings defined there will +still apply in addition to your own.} + +Any unwanted or conflicting default endings must be reverted for +your time signature(s). Existing auto-beam rules are removed by +using @example -#(revert-auto-beam-setting '(be p q n m) a b [context]) +#(revert-auto-beam-setting + '(beam-limit + beam-numerator beam-denominator + time-signature-numerator time-signature-denominator) + moment-numerator moment-denominator [context]) @end example @noindent -@code{be}, @code{p}, @code{q}, @code{n}, @code{m}, @code{a}, -@code{b} and @code{context} are the same as above. Note that the -default rules are specified in @file{scm/@/auto@/-beam@/.scm}, -so you can revert rules that you did not explicitly create. +@code{beam-limit}, @code{beam-numerator}, @code{beam-denominator}, +@code{time-signature-numerator}, @code{time-signature-denominator}, +@code{moment-numerator}, @code{moment-denominator} and @code{context} +are the same as above. -@lilypond[quote,fragment,ragged-right,verbatim,relative=2] +@lilypond[quote,verbatim,relative=2] \time 4/4 a16 a a a a a a a a a a a a a a a +% undo a rule ending 1/16 beams in 4/4 time at 1/4 moment #(revert-auto-beam-setting '(end 1 16 4 4) 1 4) a16 a a a a a a a a a a a a a a a @end lilypond @@ -1635,7 +1726,7 @@ The rule in a @code{revert-auto-beam-setting} statement must exactly match the original rule. That is, no wildcard expansion is taken into account. -@lilypond[quote,fragment,ragged-right,verbatim,relative=2] +@lilypond[quote,verbatim,relative=2] \time 1/4 #(override-auto-beam-setting '(end 1 16 1 4) 1 8) a16 a a a @@ -1645,59 +1736,31 @@ a a a a a a a a @end lilypond +@snippets +@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +{beam-grouping-in-7-8-time.ly} -@c TODO: old material -- not covered by above stuff, I think. -If automatic beams should end on every quarter in 5/4 time, specify -all endings -@example -#(override-auto-beam-setting '(end * * * *) 1 4 'Staff) -#(override-auto-beam-setting '(end * * * *) 1 2 'Staff) -#(override-auto-beam-setting '(end * * * *) 3 4 'Staff) -#(override-auto-beam-setting '(end * * * *) 5 4 'Staff) -@dots{} -@end example +@ignore + +@c TODO Does this example add anything? -The same syntax can be used to specify beam starting points. In this +In this example, automatic beams can only end on a dotted quarter note @example #(override-auto-beam-setting '(end * * * *) 3 8) #(override-auto-beam-setting '(end * * * *) 1 2) #(override-auto-beam-setting '(end * * * *) 7 8) @end example + In 4/4 time signature, this means that automatic beams could end only on 3/8 and on the fourth beat of the measure (after 3/4, that is 2 times 3/8, has passed within the measure). -If any unexpected beam behavior occurs, check the default automatic beam -settings in @file{scm/@/auto@/-beam@/.scm} -for possible interference, because the beam -endings defined there will still apply on top of your own overrides. Any -unwanted endings in the default vales must be reverted for your time -signature(s). - -For example, to typeset @code{(3 4 3 2)}-beam endings in 12/8, begin -with - -@example -%%% revert default values in scm/auto-beam.scm regarding 12/8 time -#(revert-auto-beam-setting '(end * * 12 8) 3 8) -#(revert-auto-beam-setting '(end * * 12 8) 3 4) -#(revert-auto-beam-setting '(end * * 12 8) 9 8) - -%%% your new values -#(override-auto-beam-setting '(end 1 8 12 8) 3 8) -#(override-auto-beam-setting '(end 1 8 12 8) 7 8) -#(override-auto-beam-setting '(end 1 8 12 8) 10 8) -@end example - -@cindex automatic beam generation -@cindex autobeam -@funindex autoBeaming -@cindex lyrics +@end ignore -If beams are used to indicate melismata in songs, then automatic -beaming should be switched off with @code{\autoBeamOff}. +@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +{reverting-default-beam-endings.ly} @predefined @@ -1723,9 +1786,11 @@ Snippets: @node Manual beams -@subsubsection Manual beams +@unnumberedsubsubsec Manual beams @cindex beams, manual +@funindex ] +@funindex [ In some cases it may be necessary to override the automatic beaming algorithm. For example, the autobeamer will not put beams @@ -1734,7 +1799,7 @@ 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] +@lilypond[quote,relative=1,verbatim] { r4 r8[ g' a r8] r8 g[ | a] r8 } @@ -1744,13 +1809,10 @@ marking the begin and end point with @code{[} and @code{]} Individual notes may be marked with @code{\noBeam} to prevent them from being beamed: -@lilypond[quote,ragged-right,fragment,verbatim,relative=2] +@lilypond[quote,verbatim,relative=2] \time 2/4 c8 c\noBeam c c @end lilypond -@funindex ] -@funindex [ - @funindex stemLeftBeamCount @funindex stemRightBeamCount @@ -1763,20 +1825,24 @@ then it is erased. In this example, the last @code{f} is printed with only one beam on the left side, i.e., the eighth-note beam of the group as a whole. -@lilypond[quote,ragged-right,fragment,relative=1,verbatim] -{ - f8[ r16 f g a] - f8[ r16 - \set stemLeftBeamCount = #1 - f g a] -} +@lilypond[quote,relative=2,verbatim] +a8[ r16 f g a] +a8[ r16 +\set stemLeftBeamCount = #2 +\set stemRightBeamCount = #1 +f +\set stemLeftBeamCount = #1 +g a] @end lilypond @snippets +@c TODO Add snippet "Flat flags and beam nibs" when available +@c Added to LSR 27 Oct 08 + @node Feathered beams -@subsubsection Feathered beams +@unnumberedsubsubsec Feathered beams @cindex beams, feathered @funindex \featherDurations @@ -1807,7 +1873,7 @@ as the last one, with the intermediate notes gradually lengthening. The first four 32nd notes gradually speed up, while the last four 32nd notes are at a constant tempo. -@lilypond[ragged-right,relative=1,fragment,verbatim,quote] +@lilypond[relative=1,verbatim,quote] \override Beam #'grow-direction = #LEFT \featherDurations #(ly:make-moment 2 1) { c16[ c c c c c c c] } @@ -1821,7 +1887,7 @@ the last four 32nd notes are at a constant tempo. @noindent The spacing in the printed output represents the -note durations only approximately, but the midi output is exact. +note durations only approximately, but the MIDI output is exact. @knownissues @@ -1847,7 +1913,7 @@ Snippets: @end menu @node Bar lines -@subsubsection Bar lines +@unnumberedsubsubsec Bar lines @cindex bar lines @funindex \bar @@ -1863,20 +1929,21 @@ The simple bar lines inserted automatically can be changed to other types with the @code{\bar} command. For example, a closing double bar line is usually placed at the end of a piece: -@lilypond[quote,ragged-right,relative=1,fragment,verbatim] +@lilypond[quote,relative=1,verbatim] e4 d c2 \bar "|." @end lilypond -@warning{An incorrect duration can lead to poorly formatted -music.} - It is not invalid if the final note in a measure does not end on the automatically entered bar line: the note is assumed to carry over into the next measure. But if a long sequence of such carry-over measures appears the music can appear compressed or even flowing off the page. This is because automatic line breaks happen only at the end of complete measures, i.e., where -the end of a note coincides with the end of a measure. +all notes end before the end of a measure. + +@warning{An incorrect duration can cause line breaks to be +inhibited, leading to a line of highly compressed music or +music which flows off the page.} @cindex line breaks @cindex bar lines, invisible @@ -1904,25 +1971,25 @@ with the end of a measure the specified bar line is inserted at that point in the printed output. Such insertions do not affect the calculation and placement of subsequent automatic bar lines. -The simple bar line and four types of double bar line are available +The simple bar line and five types of double bar line are available for manual insertion: -@lilypond[quote,ragged-right,fragment,relative=1,verbatim] -f1 \bar "|" g \bar "||" a \bar ".|" b \bar ".|." c \bar "|." d +@lilypond[quote,relative=1,verbatim] +f1 \bar "|" g \bar "||" a \bar ".|" b \bar ".|." c \bar "|.|" d \bar "|." e @end lilypond @noindent together with dotted and dashed bar lines: -@lilypond[quote,ragged-right,fragment,relative=1,verbatim] +@lilypond[quote,relative=1,verbatim] f1 \bar ":" g \bar "dashed" a @end lilypond @noindent -and three types of repeat bar line: +and five types of repeat bar line: -@lilypond[quote,ragged-right,fragment,relative=1,verbatim] -f1 \bar "|:" g \bar ":|:" a \bar ":|" b +@lilypond[quote,relative=1,verbatim] +f1 \bar "|:" g \bar ":|:" a \bar ":|.|:" b \bar ":|.:" c \bar ":|" d @end lilypond @cindex repeats @@ -1938,7 +2005,7 @@ In addition, you can specify @code{"||:"}, which is equivalent to 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] +@lilypond[quote,relative=2,verbatim] \override Score.RehearsalMark #'padding = #3 c c c c \bar "||:" @@ -1952,7 +2019,7 @@ automatically applied to all staves. The resulting bar lines are connected between different staves of a @code{StaffGroup}, @code{InnerStaffGroup}, @code{PianoStaff}, or @code{GrandStaff}. -@lilypond[quote,ragged-right,fragment,verbatim] +@lilypond[quote,fragment,verbatim] << \new StaffGroup << \new Staff { @@ -1983,9 +2050,10 @@ with @code{\set Timing.defaultBarType = }@var{bartype}. @seealso -Notation Reference: @ref{Line breaking}, @ref{Repeats}, -@c FIXME: node name changed, but is subject to further changes. -@c @ref{System start delimiters}. +Notation Reference: +@ref{Line breaking}, +@ref{Repeats}, +@ref{Grouping staves}. Snippets: @rlsr{Rhythms}. @@ -1997,7 +2065,7 @@ properties). @node Bar numbers -@subsubsection Bar numbers +@unnumberedsubsubsec Bar numbers @cindex bar numbers @cindex measure numbers @@ -2008,7 +2076,7 @@ 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] +@lilypond[verbatim,quote,fragment,relative=1] c1 c c c \break \set Score.currentBarNumber = #50 @@ -2032,8 +2100,8 @@ of the three values is @code{end of line visible}, @code{middle of line visible}, @code{beginning of line visible}. In the following example bar numbers are printed at all possible places: -@lilypond[verbatim,ragged-right,quote,fragment,relative] -\override Score.BarNumber #'break-visibility = ##(#t #t #t) +@lilypond[verbatim,quote,relative=1] +\override Score.BarNumber #'break-visibility = #'#(#t #t #t) \set Score.currentBarNumber = #11 \bar "" % Permit first bar number to be printed c1 c c c @@ -2048,8 +2116,8 @@ c c c c and here the bar numbers are printed every two measures except at the end of the line: -@lilypond[verbatim,ragged-right,quote,fragment,relative] -\override Score.BarNumber #'break-visibility = ##(#f #t #t) +@lilypond[verbatim,quote,relative=1] +\override Score.BarNumber #'break-visibility = #'#(#f #t #t) \set Score.currentBarNumber = #11 \bar "" % Permit first bar number to be printed % Print a bar number every second measure @@ -2067,7 +2135,7 @@ in the following example, which also shows how to enclose bar numbers in boxes and circles, and shows an alternative way of specifying @code{#(#f #t #t)} for @code{break-visibility}. -@lilypond[verbatim,ragged-right,quote,fragment,relative] +@lilypond[verbatim,quote,relative=1] % Prevent bar numbers at the end of a line and permit them elsewhere \override Score.BarNumber #'break-visibility = #end-of-line-invisible @@ -2095,9 +2163,9 @@ within a line, the left bar line of the measure. The numbers may also be positioned directly on the bar line or right-aligned to the bar line: -@lilypond[verbatim,ragged-right,quote,fragment,relative] +@lilypond[verbatim,quote,relative=1] \set Score.currentBarNumber = #111 -\override Score.BarNumber #'break-visibility = ##(#t #t #t) +\override Score.BarNumber #'break-visibility = #'#(#t #t #t) % Increase the size of the bar number by 2 \override Score.BarNumber #'font-size = #2 % Print a bar number every second measure @@ -2114,7 +2182,7 @@ c1 c1 Bar numbers can be removed entirely by removing the @code{Bar_number_engraver} from the @code{Score} context. -@lilypond[verbatim,ragged-right,quote] +@lilypond[verbatim,quote] \layout { \context { \Score @@ -2148,7 +2216,7 @@ number at the beginning of a piece, an empty bar line must be inserted there, and a value other than @code{1} must be placed in @code{currentBarNumber}: -@lilypond[verbatim,ragged-right,quote,fragment,relative] +@lilypond[verbatim,quote,relative=1] \set Score.currentBarNumber = #50 \bar "" c1 c c c @@ -2159,7 +2227,7 @@ c1 c c c @node Bar and bar number checks -@subsubsection Bar and bar number checks +@unnumberedsubsubsec Bar and bar number checks @cindex bar check @funindex barCheckSynchronize @@ -2208,7 +2276,7 @@ In the following example @code{|} is set to insert a double bar line wherever it appears in the input, rather than checking for end of bar. -@lilypond[quote,ragged-right,verbatim] +@lilypond[quote,verbatim] pipeSymbol = \bar "||" { c'2 c'2 | @@ -2238,7 +2306,7 @@ Snippets: @node Rehearsal marks -@subsubsection Rehearsal marks +@unnumberedsubsubsec Rehearsal marks @cindex rehearsal marks @cindex mark, rehearsal @@ -2246,7 +2314,7 @@ Snippets: To print a rehearsal mark, use the @code{\mark} command -@lilypond[quote,ragged-right,fragment,verbatim,relative=2] +@lilypond[quote,verbatim,relative=2] c1 \mark \default c1 \mark \default c1 \mark #8 @@ -2281,13 +2349,15 @@ following example, @code{markFormatter} is set to a pre-defined procedure. After a few measures, it is set to a procedure that produces a boxed number. -@lilypond[fragment,quote,ragged-right,verbatim,relative=2] +@lilypond[quote,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 +\set Score.markFormatter = #format-mark-circle-numbers c1 \mark \default +\set Score.markFormatter = #format-mark-circle-letters c1 @end lilypond @@ -2324,7 +2394,7 @@ string. Music glyphs (such as the segno sign) may be printed inside a @code{\mark} -@lilypond[fragment,quote,ragged-right,verbatim,relative] +@lilypond[quote,verbatim,relative=1] c1 \mark \markup { \musicglyph #"scripts.segno" } c1 \mark \markup { \musicglyph #"scripts.coda" } c1 \mark \markup { \musicglyph #"scripts.ufermata" } @@ -2340,20 +2410,20 @@ For common tweaks to the positioning of rehearsal marks, see @seealso -Snippets: -@rlsr{Rhythms}. - -This manual: @ref{The Feta font}, @ref{Formatting text}. - -Internals Reference: @rinternals{RehearsalMark}. +Notation Reference: +@ref{The Feta font}, +@ref{Formatting text}. -Init files: @file{scm/@/translation@/-functions@/.scm} contains +Installed 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: @c @lsr{parts,rehearsal-mark-numbers.ly} +Snippets: +@rlsr{Rhythms}. +Internals Reference: @rinternals{RehearsalMark}. @node Special rhythmic concerns @subsection Special rhythmic concerns @@ -2366,7 +2436,7 @@ Examples: @c @lsr{parts,rehearsal-mark-numbers.ly} @end menu @node Grace notes -@subsubsection Grace notes +@unnumberedsubsubsec Grace notes @funindex \grace @cindex ornaments @@ -2374,42 +2444,35 @@ Examples: @c @lsr{parts,rehearsal-mark-numbers.ly} @cindex appoggiatura @cindex acciaccatura -Grace notes are ornaments that are written out. They are made with -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. +Grace notes are ornaments that are written out. Grace notes +are printed in a smaller font and take up no logical time +in a measure. -@lilypond[quote,ragged-right,relative=2,verbatim,fragment] +@lilypond[quote,relative=2,verbatim] c4 \grace c16 c4 -\grace { c16[ d16] } c2 c4 +\grace { c16[ d16] } c2 @end lilypond -Two special forms of the @code{\grace} command exist. -An @emph{acciaccatura}, which should be played as very short, -is denoted by a slurred small note with a slashed stem. The -@emph{appoggiatura}, a grace note that takes a fixed fraction of the -main note, 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 also supports two special types of grace notes, the +@emph{acciaccatura}--an unmeasured grace note indicated by a slurred +small note with a slashed stem--and the @emph{appoggiatura}, which +takes a fixed fraction of the main note and appears in small print +without a slash. -@lilypond[quote,ragged-right,relative=2,verbatim,fragment] -b4 \acciaccatura d8 c4 +@lilypond[quote,relative=2,verbatim] +\grace c8 b4 +\acciaccatura d8 c4 \appoggiatura e8 d4 \acciaccatura { g16[ f] } e4 @end lilypond -@noindent -@code{\acciaccatura} and @code{\appoggiatura} start a slur, -@code{\grace} does not. - 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 } >> +@lilypond[quote,relative=2,verbatim] +<< \new Staff { e2 \grace { c16[ d e f] } e2 } + \new Staff { c2 \grace { g8[ b] } c2 } >> @end lilypond @funindex \afterGrace @@ -2420,101 +2483,122 @@ 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[quote,ragged-right,verbatim,relative=2,fragment] -c1 \afterGrace d1 { c16[ d] } c4 +@lilypond[quote,verbatim,relative=2] +c1 \afterGrace d1 { c16[ d] } c1 @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}, i.e., - -@example -#(define afterGraceFraction (cons 7 8)) -@end example +This will put the grace notes after a space lasting 3/4 of the +length of the main note. The default fraction 3/4 can be changed by +setting @code{afterGraceFraction}. The following example shows +the results from setting the space at the default, at 15/16, and +finally at 1/2 of the main note. -@noindent -will put the grace note at 7/8 of the main note. +@lilypond[quote,verbatim,relative=2] +<< + \new Staff { + c1 \afterGrace d1 { c16[ d] } c1 + } + \new Staff { + #(define afterGraceFraction (cons 15 16)) + c1 \afterGrace d1 { c16[ d] } c1 + } + \new Staff { + #(define afterGraceFraction (cons 1 2)) + c1 \afterGrace d1 { c16[ d] } c1 + } +>> +@end lilypond -The same effect can be achieved manually by doing +The space between the main note and the grace note may also be +specified using spacers. The following example places the grace +note after a space lasting 7/8 of the main note. -@lilypond[quote,ragged-right,fragment,verbatim,relative=2] +@lilypond[quote,verbatim,relative=2] \new Voice { << { d1^\trill_( } - { s2 \grace { c16[ d] } } >> - c4) + { s2 s4. \grace { c16[ d] } } >> + c1) } @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 -may be 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, +set directions. Hence, when introducing layout tweaks to +override the special settings, they should be placed inside +the grace expression. The overrides should also be reverted +inside the grace expression. Here, the grace note's default stem +direction is overriden and then reverted. -@lilypond[quote,ragged-right,fragment,verbatim,relative=2] +@lilypond[quote,verbatim,relative=2] \new Voice { \acciaccatura { \stemDown f16-> \stemNeutral } - g4 + g4 e c2 } @end lilypond -@noindent -The overrides should also be reverted inside the grace expression. + +@cindex stem, with slash + + +@snippets + +The slash through the stem found in @emph{acciaccatura}s can be applied +in other situations: + +@lilypond[quote,verbatim,relative=2] +\relative c'' { + \override Stem #'stroke-style = #"grace" + c8( d2) e8( f4) +} +@end lilypond 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 +@lilypond[quote,verbatim,relative=2] +\relative c'' { + \new Staff { + #(add-grace-property 'Voice 'Stem 'direction ly:stem::calc-direction) + #(remove-grace-property 'Voice 'Stem 'direction) + \new Voice { + \acciaccatura { f16 } g4 + \grace { d16[ e] } f4 + \appoggiatura { a,32[ b c d] } e2 + } + } +} +@end lilypond -@noindent Another option is to change the variables @code{startGraceMusic}, @code{stopGraceMusic}, @code{startAcciaccaturaMusic}, @code{stopAcciaccaturaMusic}, @code{startAppoggiaturaMusic}, @code{stopAppoggiaturaMusic}. The default values of these can be -seen in the file @file{ly/@/grace@/-init@/.ly}. By redefining +seen in the file @code{ly/@/grace@/-init@/.ly}. By redefining them other effects may be obtained. -@cindex stem, with slash - -@noindent -The slash through the stem in @emph{acciaccatura}s can be obtained in -other situations by @code{\override Stem #'stroke-style = -#"grace"}. - +Grace notes may be forced to align with regular notes +in other staves: -@snippets - -Grace notes may be forced to use align with regular notes -in other staves by setting @code{strict-grace-spacing} to -##t: - -@lilypond[verbatim,quote,relative=2] -<< - \override Score.SpacingSpanner #'strict-grace-spacing = ##t - \new Staff { - c4 - \afterGrace c4 { c16[ c8 c16] } - c4 r - } - \new Staff { - c16 c c c c c c c c4 r - } ->> +@lilypond[verbatim,quote] +\relative c'' { + << + \override Score.SpacingSpanner #'strict-grace-spacing = ##t + \new Staff { + c4 + \afterGrace c4 { c16[ c8 c16] } + c4 r + } + \new Staff { + c16 c c c c c c c c4 r + } + >> +} @end lilypond @@ -2523,19 +2607,21 @@ in other staves by setting @code{strict-grace-spacing} to Music Glossary: @rglos{grace notes}, @rglos{acciaccatura}, -@rglos{appoggiatura} +@rglos{appoggiatura}. -Snippets: -@rlsr{Rhythms}. +Installed Files: @file{ly/@/grace@/-init@/.ly}. + +Snippets: @rlsr{Rhythms}. Internals Reference: @rinternals{GraceMusic}. @knownissues -A multi-note beamed @emph{acciaccatura} is printed without a slash, +A multi-note beamed @i{acciaccatura} is printed without a slash, and looks exactly the same as a multi-note beamed -@emph{appoggiatura}. +@i{appoggiatura}. + @c TODO Add link to LSR snippet to add slash when available Grace note synchronization can also lead to surprises. Staff @@ -2543,18 +2629,18 @@ 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 } >> +@lilypond[quote,relative=2,verbatim] +<< \new Staff { e4 \bar "|:" \grace c16 d2. } + \new Staff { c4 \bar "|:" d2. } >> @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 } >> +@lilypond[quote,relative=2,verbatim] +<< \new Staff { e4 \bar "|:" \grace c16 d2. } + \new Staff { c4 \bar "|:" \grace s16 d2. } >> @end lilypond Grace sections should only be used within sequential music @@ -2562,46 +2648,53 @@ expressions. Nesting or juxtaposing grace sections is not supported, and might produce crashes or other errors. @node Aligning to cadenzas -@subsubsection Aligning to cadenzas +@unnumberedsubsubsec Aligning to cadenzas @cindex cadenza @cindex cadenza, aligning to @cindex aligning to cadenza 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. +constructing a score that includes a measured cadenza or other solo +passage, 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 is to use the functions +One solution to this problem is to use the functions @code{mmrest-of-length} and @code{skip-of-length}. These Scheme -functions take a piece of music as argument, and generate a multi-measure -rest or @code{\skip}, 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 +functions take a defined piece of music as an argument and generate a +multi-measure rest or @code{\skip} exactly as long as the piece. + +@lilypond[verbatim,quote] +MyCadenza = \relative c' { + c4 d8 e f g g4 + f2 g4 g } \new GrandStaff << - \new Staff { \cadenza c'4 } \new Staff { - #(ly:export (mmrest-of-length cadenza)) - c'4 + \MyCadenza c'1 + \MyCadenza c'1 + } + \new Staff { + #(ly:export (mmrest-of-length MyCadenza)) + c'1 + #(ly:export (skip-of-length MyCadenza)) + c'1 } >> @end lilypond @seealso +Music Glossary: +@rglos{cadenza}. + Snippets: @rlsr{Rhythms}. @node Time administration -@subsubsection Time administration +@unnumberedsubsubsec Time administration @cindex time administration @cindex timing (within the score) @@ -2654,7 +2747,7 @@ At 4/8 through the third measure, the @code{measurePosition} is advanced by 1/8 to 5/8, shortening that bar by 1/8. The next bar line then falls at 9/8 rather than 5/4. -@lilypond[quote,ragged-right,verbatim,relative,fragment] +@lilypond[quote,verbatim,relative=1] \set Score.measureLength = #(ly:make-moment 5 4) c1 c4 c1 c4 @@ -2681,3 +2774,4 @@ Snippets: Internals Reference: @rinternals{Timing_translator}, @rinternals{Score} +