X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Documentation%2Fnotation%2Frhythms.itely;h=9b719c93ea93e506fea2b44662b7441a0d33ba4d;hb=7ba0a22641cb0c7f5949d66a06d1e2e1fd0b3033;hp=f7ff2fc929bdec9c54b03314f2edcae1f0fdb961;hpb=ed748ad93c3b4aebee28dbc078d3f8c388db5cce;p=lilypond.git diff --git a/Documentation/notation/rhythms.itely b/Documentation/notation/rhythms.itely index f7ff2fc929..9b719c93ea 100644 --- a/Documentation/notation/rhythms.itely +++ b/Documentation/notation/rhythms.itely @@ -7,7 +7,7 @@ Guide, node Updating translation committishes.. @end ignore -@c \version "2.12.0" +@c \version "2.13.36" @node Rhythms @section Rhythms @@ -140,6 +140,12 @@ the staff; see @ref{Direction and placement}. @endpredefined +@snippets + +@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +{changing-the-number-of-augmentation-dots-per-note.ly} + + @seealso Music Glossary: @rglos{breve}, @@ -191,7 +197,7 @@ durations with a fraction: @end example @noindent -The duration of @var{music} will be multiplied by the +The duration of @code{@var{music}} will be multiplied by the fraction. The fraction's denominator will be printed over or under the notes, optionally with a bracket. The most common tuplet is the triplet in which 3 notes have the duration of 2, so @@ -218,7 +224,7 @@ Tuplets may be nested: @lilypond[quote,verbatim,relative=2] \autoBeamOff -c4 \times 4/5 { f8 e f \times 2/3 { e[ f g] } } f4 | +c4 \times 4/5 { f8 e f \times 2/3 { e[ f g] } } f4 @end lilypond Modifying nested tuplets which begin at the same musical moment @@ -256,6 +262,9 @@ see @ref{Scaling durations}. @lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] {non-default-tuplet-numbers.ly} +@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +{controlling-tuplet-bracket-visibility.ly} + @lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] {permitting-line-breaks-within-beamed-tuplets.ly} @@ -287,10 +296,16 @@ Internals Reference: @cindex grace notes within tuplet brackets @knownissues -When the first note on a staff is a grace note followed by a -tuplet the grace note must be placed before the @code{\times} -command to avoid errors. Anywhere else, grace notes may be -placed within tuplet brackets. +Grace notes may be placed within tuplet brackets, @emph{except} +when a staff begins with a grace note followed by a tuplet. In this +particular case, the grace note must be placed before the @code{\times} +command to avoid errors. + +@cindex tempo marks within tuplet brackets + +When using a tuplet at the beginning of a piece with a @code{\tempo} +mark, the music must be explicitly entered in a @code{\new Voice} +block, as discussed in @rlearning{Voices contain music}. @node Scaling durations @@ -552,7 +567,6 @@ Internals Reference: @knownissues - Switching staves when a tie is active will not produce a slanted tie. @@ -592,12 +606,12 @@ Rests are entered as part of the music in music expressions. @funindex breve Rests are entered like notes with the note name @code{r}. -Durations longer than a whole rest use the predefined -commands shown: +Durations longer than a whole rest use the following predefined +commands: @c \time 16/1 is used to avoid spurious bar lines @c and long tracts of empty measures -@lilypond[fragment,quote,verbatim] +@lilypond[quote,verbatim,relative=2] \new Staff { % These two lines are just to prettify this example \time 16/1 @@ -617,8 +631,8 @@ commands shown: Whole measure rests, centered in the middle of the measure, must be entered as multi-measure rests. They can be used for a single -measure as well as many measures and are discussed in @ref{Full -measure rests}. +measure as well as many measures and are discussed in +@ref{Full measure rests}. @cindex rest, specifying vertical position @@ -688,7 +702,9 @@ s2 c Spacer rests are available only in note mode and chord mode. In other situations, for example, when entering lyrics, the command @code{\skip} is used to skip a musical moment. -@code{\skip} requires an explicit duration. +@code{\skip} requires an explicit duration, but this is ignored if +the lyrics derive their durations from the notes in an associated +melody through @code{\addlyrics} or @code{\lyricsto}. @lilypond[quote,verbatim,relative=2] << @@ -709,7 +725,7 @@ durations of following notes, unlike@tie{}@code{s}. @lilypond[quote,verbatim,relative=2] << { - \repeat unfold 8 {a4} + \repeat unfold 8 { a4 } } { a4 \skip 2 a | @@ -723,14 +739,14 @@ A spacer rest implicitly causes @code{Staff} and @code{Voice} contexts to be created if none exist, just like notes and rests do: -@lilypond[quote,verbatim,fragment] +@lilypond[quote,verbatim,relative=2] s1 s s @end lilypond @code{\skip} simply skips musical time; it creates no output of any kind. -@lilypond[quote,verbatim,fragment] +@lilypond[quote,verbatim,relative=2] % This is valid input, but does nothing \skip 1 \skip1 \skip 1 @end lilypond @@ -780,7 +796,7 @@ notation 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,fragment,verbatim] +@lilypond[quote,verbatim,relative=2] \compressFullBarRests \time 2/4 R1 | R2 | @@ -795,7 +811,7 @@ R4*5*4 | A full-measure rest is printed as either a whole or breve rest, centered in the measure, depending on the time signature. -@lilypond[quote,verbatim,fragment] +@lilypond[quote,verbatim,relative=2] \time 4/4 R1 | \time 6/4 @@ -817,7 +833,7 @@ show all the rest measures explicitly. Alternatively, a multi-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,fragment,verbatim] +@lilypond[quote,verbatim,relative=2] % Default behavior \time 3/4 r2. | R2.*2 | \time 2/4 R2 | @@ -849,25 +865,23 @@ Markups can be added to multi-measure rests. The predefined command @code{\fermataMarkup} is provided for adding fermatas. -@lilypond[quote,verbatim,fragment] +@lilypond[quote,verbatim,relative=2] \compressFullBarRests \time 3/4 R2.*10^\markup { \italic "ad lib." } R2.^\fermataMarkup @end lilypond -@warning{ -Markups attached to a multi-measure rest are -objects of type @code{MultiMeasureRestText}, not -@code{TextScript}. Overrides must be directed to the correct -object, or they will be ignored. See the following example. -} +@warning{Markups attached to a multi-measure rest are objects of type +@code{MultiMeasureRestText}, not @code{TextScript}. Overrides must +be directed to the correct object, or they will be ignored. See the +following example:} -@lilypond[quote,verbatim,fragment] +@lilypond[quote,verbatim,relative=2] % This fails, as the wrong object name is specified \override TextScript #'padding = #5 R1^"wrong" -% This is correct and works +% This is the correct object name to be specified \override MultiMeasureRestText #'padding = #5 R1^"right" @end lilypond @@ -879,7 +893,7 @@ setting, resulting bar-check warnings may not be displayed. @funindex \textLengthOn @funindex textLengthOn @funindex \textLengthOff -@funindex textLenthOff +@funindex textLengthOff @funindex \fermataMarkup @funindex fermataMarkup @funindex \compressFullBarRests @@ -938,11 +952,9 @@ Internals Reference: @cindex multi-measure rests and fingerings @knownissues - -If an attempt is made to use fingerings (e.g., -@code{R1*10-4}) to put numbers over multi-measure rests, the -fingering numeral (4) may collide with the bar counter -numeral (10). +Fingerings over multi-measure rests (e.g. @code{R1*10-4}) may result +in the fingering numeral colliding with the bar counter +numeral. @cindex condensing rests @cindex rest, condensing ordinary @@ -959,6 +971,7 @@ Multi-measure rests do not take part in rest collisions. @menu * Time signature:: +* Metronome marks:: * Upbeats:: * Unmetered music:: * Polymetric notation:: @@ -1029,6 +1042,83 @@ changed to a numeric style: Mensural time signatures are covered in @ref{Mensural time signatures}. +@cindex time signature default settings +@cindex autobeaming properties for time signatures +@cindex beaming, time signature default properties +@funindex \overrideTimeSignatureSettings + +In addition to setting the printed time signature, the @code{\time} +command also sets time-signature-based default values for the properties +@code{baseMoment}, @code{beatStructure}, and @code{beamExceptions}. The +predefined default values for these properties can be found in +@file{scm/time-signature-settings.scm}. The existing default values can +be changed, or new default values can be added: + +@lilypond[quote,verbatim] +\score { + \relative c' { + \overrideTimeSignatureSettings + #'Score % context + #'(4 . 4) % timeSignatureFraction + #'(1 . 4) % baseMomentFraction + #'(3 1) % beatStructure + #'() % beamExceptions + \time 4/4 + \repeat unfold 8 { c8 } | + } +} +@end lilypond + +@code{\overrideTimeSignatureSettings} takes five arguments: + +@enumerate +@item +@code{@var{context}}, a Scheme symbol that describes the context +to which the default setting will apply. + +@item +@code{@var{timeSignatureFraction}}, a Scheme pair describing the +time signature. + +@item +@code{@var{baseMomentFraction}}, a Scheme pair containing the numerator +and denominator of the basic timing unit for the time signature. + +@item +@code{@var{beatStructure}}, a Scheme list indicating the structure +of the beats in the measure, in units of the base moment. + +@item +@code{@var{beamExceptions}}, an alist containing any beaming rules +for the time signature that go beyond ending at every beat, as +described in @ref{Setting automatic beam behavior}. +@end enumerate + +@cindex time signature properties, restoring default values +@cindex restoring default properties for time signatures +@funindex \revertTimeSignatureSettings + +Changed values of default time signature properties can be restored +to the original values: + +@lilypond[quote,verbatim] +\score{ + \relative c' { + \repeat unfold 8 { c8 } | + \overrideTimeSignatureSettings + #'Score % context + #'(4 . 4) % timeSignatureFraction + #'(1 . 4) % baseMomentFraction + #'(3 1) % beatStructure + #'((end . (((1 . 8) . (3 1))))) % beamExceptions + \time 4/4 + \repeat unfold 8 { c8 } | + \revertTimeSignatureSettings #'Score #'(4 . 4) + \time 4/4 + \repeat unfold 8 { c8 } | + } +} +@end lilypond @predefined @code{\numericTimeSignature}, @@ -1066,6 +1156,91 @@ Internals Reference: @rinternals{TimeSignature}, @rinternals{Timing_translator}. +@node Metronome marks +@unnumberedsubsubsec Metronome marks + +@cindex tempo +@cindex beats per minute +@cindex metronome mark +@cindex metronome marking with text + +@funindex \tempo +@funindex tempo + +A basic metronome mark is simple to write: + +@lilypond[verbatim,quote,relative=1] +\tempo 4 = 120 +c2 d +e4. d8 c2 +@end lilypond + +Tempo indications with text can be used instead: + +@lilypond[verbatim,quote,relative=2] +\tempo "Allegretto" +c4 e d c +b4. a16 b c4 r4 +@end lilypond + +Combining a metronome mark and text will automatically place the +metronome mark within parentheses: + +@lilypond[verbatim,quote,relative=2] +\tempo "Allegro" 4 = 160 +g4 c d e +d4 b g2 +@end lilypond + +In general, the text can be any markup object: + +@lilypond[verbatim,quote,relative=2] +\tempo \markup { \italic Faster } 4 = 132 +a8-. r8 b-. r gis-. r a-. r +@end lilypond + +A parenthesized metronome mark with no textual indication may be +written by including an empty string in the input: + +@lilypond[verbatim,quote,relative=2] +\tempo "" 8 = 96 +d4 g e c +@end lilypond + + +@snippets + +@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +{printing-metronome-and-rehearsal-marks-below-the-staff.ly} + +@c perhaps also an example of how to move it horizontally? + +@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +{changing-the-tempo-without-a-metronome-mark.ly} + +@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +{creating-metronome-marks-in-markup-mode.ly} + +For more details, see @ref{Formatting text}. + + +@seealso +Music Glossary: +@rglos{metronome}, +@rglos{metronomic indication}, +@rglos{tempo indication}, +@rglos{metronome mark}. + +Notation Reference: +@ref{Formatting text}, +@ref{MIDI output}. + +Snippets: +@rlsr{Staff notation}. + +Internals Reference: +@rinternals{MetronomeMark}. + @node Upbeats @unnumberedsubsubsec Upbeats @@ -1089,34 +1264,39 @@ entered using the @code{\partial} command, with the syntax @end example @noindent -where @code{duration} is the rhythmic length of the interval -before the start of the first complete measure: +where @code{@var{duration}} is the rhythmic length of the +remaining interval of the current measure before the start of the +next. @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: +The partial measure can be any duration less than the full measure: @lilypond[quote,verbatim,relative=2] \partial 8*3 c8 d e | a2. c,4 | @end lilypond -Internally, @code{\partial} is translated into +Internally, @code{\partial @var{duration}} is translated into: @example -\set Timing.measurePosition = -@var{duration} +\set Timing.measurePosition -@var{duration} +@end example + +For example, @code{\partial 8*3} becomes: + +@example +\set Timing.measurePosition = #(ly:make-moment -3 8) @end example -@noindent The property @code{measurePosition} contains a rational number indicating how much of the measure has passed at this point. Note -that this is set to a negative number by the @code{\partial} -command: i.e., @code{\partial 4} is internally translated to -@code{-4}, meaning @qq{there is a quarter note left in the measure.} - +that this is set to a negative number by the @code{\partial} command: +i.e., @code{\partial 4} is internally translated to @code{-4}, meaning +@qq{there is a quarter note left in the measure.} @seealso Music Glossary: @@ -1131,12 +1311,12 @@ Snippets: Internal Reference: @rinternals{Timing_translator}. - @knownissues 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. +odd warnings or effects may occur, in this case use +@code{\set Timing.measurePosition} instead. @node Unmetered music @unnumberedsubsubsec Unmetered music @@ -1157,10 +1337,10 @@ To turn off automatic calculation of bar lines and bar numbers, use the command @code{\cadenzaOn}, and use @code{\cadenzaOff} to turn them on again. -@lilypond[verbatim,relative=2,fragment] +@lilypond[verbatim,relative=2,quote] c4 d e d \cadenzaOn -c4 c d8 d d f4 g4. +c4 c d8[ d d] f4 g4. \cadenzaOff \bar "|" d4 e d c @@ -1169,17 +1349,35 @@ d4 e d c Bar numbering is resumed at the end of the cadenza as if the cadenza were not there: -@lilypond[verbatim,relative=2,fragment] +@lilypond[verbatim,relative=2,quote] % Show all bar numbers \override Score.BarNumber #'break-visibility = #all-visible c4 d e d \cadenzaOn -c4 c d8 d d f4 g4. +c4 c d8[ d d] f4 g4. \cadenzaOff \bar "|" d4 e d c @end lilypond +@cindex beaming in cadenzas +@cindex beaming in unmetered music +@cindex cadenza, beaming in +@cindex unmetered music, beaming in + +Automatic beaming is disabled by @code{\cadenzaOn} and enabled +by @code{\cadenzaOff}. Therefore, all beaming in cadenzas +must be entered manually (@ref{Manual beams}). + +@lilypond[verbatim,relative=2,quote] +\repeat unfold 8 { c8 } +\cadenzaOn +\repeat unfold 5 { c8 } +\bar"|" +\cadenzaOff +\repeat unfold 8 { c8 } +@end lilypond + Note that these predefined commands affect all staves in the score, even when they are placed in just one @code{Voice} context. To change this, move the @code{Timing_translator} @@ -1198,7 +1396,8 @@ Music Glossary: Notation Reference: @ref{Visibility of objects}, -@ref{Polymetric notation}. +@ref{Polymetric notation}, +@ref{Manual beams}. Snippets: @rlsr{Rhythms}. @@ -1227,16 +1426,19 @@ staff line, you will need to insert invisible bar lines with @noindent to indicate where breaks can occur. -You must explicitly create a @code{Voice} context when starting a +You should explicitly create a @code{Voice} context when starting a piece with @code{\cadenzaOn}, otherwise strange errors may occur. -@lilypond[verbatim,relative=2,fragment] -\new Voice \relative c'{ - \cadenzaOn - c16^"Solo Free Time" d e f g2. \bar "||" - \cadenzaOff -} -@end lilypond +@example +\new Voice @{ + \relative c' @{ + \cadenzaOn + c16[^"Solo Free Time" d e f] g2. + \bar "||" + \cadenzaOff + @} +@} +@end example @node Polymetric notation @@ -1282,7 +1484,7 @@ staff, shown durations are multiplied by 3/5, as 3/5 * 10/8 = 3/4. It will often be necessary to insert beams manually, as the duration scaling affects the autobeaming rules. -@lilypond[quote,verbatim,fragment] +@lilypond[quote,verbatim] \relative c' << \new Staff { \time 3/4 @@ -1494,7 +1696,6 @@ be done with the @code{Pitch_squash_engraver} and c1 f g c } } - \new Voice \with { \consists Pitch_squash_engraver } \relative c'' { @@ -1556,7 +1757,7 @@ By default, beams are inserted automatically: @lilypond[quote,verbatim,relative=2] \time 2/4 c8 c c c -\time 6/8 c c c c8. c16 c8 +\time 6/8 c8 c c c8. c16 c8 @end lilypond If these automatic decisions are not satisfactory, beaming can be @@ -1581,6 +1782,9 @@ c16 c8 automatic beaming should be switched off with @code{\autoBeamOff} and the beams indicated manually.} +@warning{Using @code{@bs{}partcombine} with @code{@bs{}autoBeamOff} can +produce unintended results. See the snippet below for more information.} + Beaming patterns that differ from the automatic defaults can be created; see @ref{Setting automatic beam behavior}. @@ -1593,6 +1797,7 @@ created; see @ref{Setting automatic beam behavior}. @snippets + @cindex line breaks and beams @cindex beams and line breaks @@ -1604,6 +1809,13 @@ created; see @ref{Setting automatic beam behavior}. @lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] {changing-beam-knee-gap.ly} +@cindex \partcombine and \autoBeamOff +@cindex \autoBeamOff and \partcombine + + +@lilypondfile [verbatim, lilyquote, ragged-right, texidoc, doctitle] +{partcombine-and-autobeamoff.ly} + @seealso Notation Reference: @@ -1611,7 +1823,7 @@ Notation Reference: @ref{Setting automatic beam behavior}. Installed Files: -@file{scm/@/auto@/-beam@/.scm}. +@file{scm/auto-beam.scm}. Snippets: @rlsr{Rhythms}. @@ -1642,111 +1854,30 @@ Beams can collide with note heads and accidentals in other voices. @cindex lyrics and beaming @funindex autoBeaming -@funindex beamSettings +@funindex baseMoment +@funindex beamExceptions +@funindex beatStructure @funindex measureLength -@funindex beatLength @funindex \time @funindex time @funindex \set @funindex set -The placement of automatic beams is determined by the time signature. -Three types of rules are used for determining the end of automatic -beams: @emph{default} rules -for the time signature, @emph{explicit} rules for the beam in the time -signature, and the @emph{beatLength} for the time signature. - -The following rules, in order of priority, apply when determining -the appearance of beams: - -@itemize -@item -If a manual beam is specified with @code{[..]} set the beam -as specified, otherwise - -@item -if @code{\autoBeamOff} is in force do not beam, otherwise - -@item -if an explicit beam-ending rule is defined for the beam type -in the time signature, use it to determine the valid -places where beams may end, otherwise - -@item -if a default beam-ending rule is defined in the time signature, -use it to group notes with beams, otherwise - -@item -use the value of @code{beatLength} to group notes with beams - -@end itemize - -@i{@strong{Modifying the grouping of beats}} - -By default @code{beatLength} is -derived from the time signature set by the @code{\time} command. -The @code{beatLength} is set to be one over the denominator -of the time signature. - -@code{beatLength} is a @i{moment}, -a unit 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}. - -Autobeam and beam subdivide settings are stored in the -@code{beamSettings} property. Default values of @code{beamSettings} -are determined in @file{scm/@/beam@/-settings@/.scm}. Entries in -@code{beamSettings} are indexed by time signature and -rule type. - -Time signature should be a scheme pair , e.g. @code{#'(4 . 4)}. - -Rule type should be @code{#'end} for beam ending and @code{#'subdivide} for -beam subdivision. - -The ending and subdivision rules consist of a scheme alist -(or list of pairs) that -indicates the beam type and the grouping to be applied to that -beam type. - -@example -#'((beam-type1 . grouping-1) - (beam-type2 . grouping-2) - (beam-type3 . grouping-3)) -@end example - -Beam type is either a scheme pair indicating the duration -of the beam, e.g. @code{(1 . 16)}, or @code{*} to indicate a -default rule, which applies to all beams if no explicit rule is -defined. - -Grouping is a scheme list indicating the grouping to be applied to -the beam. For default rules (where beam type is -@code{*}, the grouping is in units of @code{beatLength}. -For explicit rules, the grouping is in units of the beam type. - -For reference, the default beaming rules are found in -@file{scm/beam-settings.scm}. - -Beam settings are changed with -@code{\overrideBeamSettings} and @code{\revertBeamSettings}. - -@warning{ -The ending and subdivision settings must be -@emph{complete} rules. That is, every rule that should apply to -the current time signature must be included in the setting. -It is not possible to change the grouping of only one beam type -for a given time signature. While this may seem cumbersome, -it means that the current beaming settings need not be known -in order to specify a new beaming pattern.} +In most instances, automatic beams will end at the end of a beat. +The ending points for beats are determined by the context properties +@code{baseMoment} and @code{beatStructure}. @code{beatStructure} +is a scheme list that defines the length of each beat in the measure +in units of @code{baseMoment}. By default, @code{baseMoment} is +the one over numerator of the time signature. By default, +each unit of length @code{baseMoment} is a single beat. @lilypond[quote,relative=2,verbatim] \time 5/16 -c8^"beats" c16 c8 | -\overrideBeamSettings #'Score #'(5 . 16) #'end #'((* . (2 3))) -c8^"(2+3)" c16 c8 -\overrideBeamSettings #'Score #'(5 . 16) #'end #'((* . (3 2))) -c8^"(3+2)" c16 c8 +c16^"default" c c c c | +\set Timing.beatStructure = #'(2 3) +c16^"(2+3)" c c c c | +\set Timing.beatStructure = #'(3 2) +c16^"(3+2)" c c c c | @end lilypond Beam setting changes can be limited to specific contexts. If no @@ -1754,22 +1885,24 @@ setting is included in a lower-level context, the setting of the enclosing context will apply. @lilypond[quote, verbatim,relative=1] -\new Staff << +\new Staff { \time 7/8 - \new Voice = one { - \relative c'' { - \overrideBeamSettings #'Staff #'(7 . 8) #'end #'((* . (2 3 2))) + \set Staff.beatStructure = #'(2 3 2) + << + \new Voice = one { + \relative c'' { a8 a a a a a a + } } - } - \new Voice = two { - \relative c' { - \voiceTwo - \overrideBeamSettings #'Voice #'(7 . 8) #'end #'((* . (1 3 3))) - f8 f f f f f f + \new Voice = two { + \relative c' { + \voiceTwo + \set Voice.beatStructure = #'(1 3 3) + f8 f f f f f f + } } - } ->> + >> +} @end lilypond When multiple voices are used the @code{Staff} context must be @@ -1779,53 +1912,148 @@ staff: @lilypond[quote,verbatim,relative=2] \time 7/8 % rhythm 3-1-1-2 -% Context Voice specified -- does not work correctly +% Change applied to Voice by default -- does not work correctly % Because of autogenerated voices, all beating will -% be at beatLength (1 . 8) -\overrideBeamSettings #'Voice #'(7 . 8) #'end #'((* . (3 1 1 2))) +% be at baseMoment (1 . 8) +\set beatStructure = #'(3 1 1 2) << {a8 a a a16 a a a a8 a} \\ {f4. f8 f f f} >> % Works correctly with context Staff specified -\overrideBeamSettings #'Staff #'(7 . 8) #'end #'((* . (3 1 1 2))) +\set Staff.beatStructure = #'(3 1 1 2) << {a8 a a a16 a a a a8 a} \\ {f4. f8 f f f} >> @end lilypond -@funindex revertBeamSettings +The value of @code{baseMoment} can be adjusted to change +the beaming behavior, if desired. When this is done, +the value of @code{beatStructure} must be set to be +compatible with the new value of @code{baseMoment}. + +@lilypond[quote,verbatim,relative=2] +\time 5/8 +\set Timing.baseMoment = #(ly:make-moment 1 16) +\set Timing.beatStructure = #'(7 3) +\repeat unfold 10 { a16 } +@end lilypond + +@code{baseMoment} is a @i{moment}; a unit 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}. + +By default @code{baseMoment} is set to one over the denominator of +the time signature. Any exceptions to this default can be found in +@file{scm/time-signature-settings.scm}. + +Special autobeaming rules (other than ending a beam on a beat) +are defined in the @code{beamExceptions} property. + +@lilypond[quote,relative=2,verbatim] +\time 3/16 +\set Timing.beatStructure = #'(2 1) +\set Timing.beamExceptions = + #'( ;start of alist + (end . ;entry for end of beams + ( ;start of alist of end points + ((1 . 32) . (2 2 2)) ;rule for 1/32 beams -- end each 1/16 + ))) %close all entries +c16 c c | +\repeat unfold 6 { c32 } | +@end lilypond + +@code{beamExceptions} is an alist with a key of rule-type and a value +of beaming-rules. + +At this time the only available value of rule-type is +@code{#'end} for beam ending. -Beam settings can be reverted to get back to default behavior. This -is accomplished by using @code{\revertBeamSettings}. The arguments -are the same as for @code{\overrideBeamSettings}, except no value -for @var{grouping} is given: +Beaming-rules is a scheme alist (or list of pairs) that indicates the +beam type and the grouping to be applied to beams containing notes with +a shortest duration of that beam type. @example -\revertBeamSettings context time-signature rule-type +#'((beam-type1 . grouping-1) + (beam-type2 . grouping-2) + (beam-type3 . grouping-3)) @end example +Beam type is a scheme pair indicating the duration of the beam, +e.g., @code{(1 . 16)}. + +Grouping is a scheme list indicating the grouping to be applied to +the beam. The grouping is in units of the beam type. + +@warning{ A @code{beamExceptions} value must be @emph{complete} +exceptions list. That is, every exception that should be applied +must be included in the setting. It is not possible to add, remove, +or change only one of the exceptions. While this may seem cumbersome, +it means that the current beaming settings need not be known in order +to specify a new beaming pattern.} + +When the time signature is changed, default values of +@code{Timing.baseMoment}, @code{Timing.beatStructure}, +and @code{Timing.beamExceptions} are set. Setting the time signature +will reset the automatic beaming settings for the @code{Timing} +context to the default behavior. @lilypond[quote,verbatim,relative=2] -\time 4/4 -\repeat unfold 8 {a8} -% set default rule for (1 1 1 1) grouping -\overrideBeamSettings #'Score #'(4 . 4) #'end #'((* . (1 1 1 1))) -\repeat unfold 8 {a8} -% revert the new rule -\revertBeamSettings #'Score #'(4 . 4) #'end -\repeat unfold 8 {a8} +\time 6/8 +\repeat unfold 6 { a8 } +% group (4 + 2) +\set Timing.beatStructure = #'(4 2) +\repeat unfold 6 { a8 } +% go back to default behavior +\time 6/8 +\repeat unfold 6 { a8 } @end lilypond +These default automatic beaming settings for a time signature +are determined in @file{scm/time-signature-settings.scm}. +The automatic beaming settings for a time signature can be changed +as described in @ref{Time signature}. -@predefined -@code{\overrideBeamSettings}, -@code{\revertBeamSettings}. -@endpredefined +@i{@strong{How automatic beaming works}} + +When automatic beaming is enabled, the placement of automatic beams +is determined by the context properties +@code{baseMoment}, @code{beatStructure}, and @code{beamExceptions}. + +The following rules, in order of priority, apply when determining +the appearance of beams: +@itemize +@item +If a manual beam is specified with @code{[..]} set the beam +as specified, otherwise + +@item +if a beam-ending rule is defined in @code{beamExceptions} +for the beam-type, use it to determine the valid places where +beams may end, otherwise + +@item +if a beam-ending rule is defined in @code{beamExceptions} +for a longer beam-type, use it to determined the valid places +where beams may end, otherwise + +@item +use the values of @code{baseMoment} and @code{beatStructure} to +determine the ends of the beats in the measure, and +end beams at the end of beats. + +@end itemize + +In the rules above, the beam-type is the duration of the +shortest note in the beamed group. + +For reference, the default beaming rules are found in +@file{scm/time-signature-settings.scm}. @snippets @cindex beams, subdividing @lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] -{sub-dividing-beams.ly} +{subdividing-beams.ly} @cindex measure groupings @cindex beats, grouping @@ -1857,13 +2085,13 @@ Internals Reference: @knownissues - If a score ends while an automatic beam has not been ended and is still accepting notes, this last beam will not be typeset at all. -The same holds for polyphonic voices, entered with @code{<< -@dots{} \\ @dots{} >>}. If a polyphonic voice ends while an +The same holds for polyphonic voices, entered with +@code{<< @dots{} \\ @dots{} >>}. If a polyphonic voice ends while an automatic beam is still accepting notes, it is not typeset. - +The workaround for these problems is to manually beam the last +beam in the voice or score. @node Manual beams @unnumberedsubsubsec Manual beams @@ -1882,10 +2110,11 @@ notes. Such beams can be specified manually by marking the begin and end point with @code{[} and @code{]}. @lilypond[quote,relative=1,verbatim] -r4 r8[ g' a r8] r8 g[ | a] r8 +r4 r8[ g' a r] r g[ | a] r @end lilypond @cindex manual beams, direction shorthand for +@cindex manual beams, grace notes Beaming direction can be set manually using direction indicators: @@ -1904,6 +2133,17 @@ from being beamed: c8 c\noBeam c c @end lilypond +Grace note beams and normal note beams can occur simultaneously. +Unbeamed grace notes are not put into normal note beams. + +@lilypond[quote,verbatim,relative=2] +c4 d8[ +\grace { e32[ d c d] } +e8] e[ e +\grace { f16 } +e8 e] +@end lilypond + @funindex stemLeftBeamCount @funindex stemRightBeamCount @@ -1940,7 +2180,8 @@ g16 a] @seealso Notation Reference: -@ref{Direction and placement}. +@ref{Direction and placement}, +@ref{Grace notes}. Snippets: @rlsr{Rhythms}. @@ -2139,7 +2380,7 @@ g1 \bar ":|:" a1 \bar ":|.|:" b1 \bar ":|.:" c1 \bar ":|" -d1 +e1 @end lilypond Additionally, a bar line can be printed as a simple tick: @@ -2150,6 +2391,26 @@ However, as such ticks are typically used in Gregorian chant, it is preferable to use @code{\divisioMinima} there instead, described in the section @ref{Divisiones} in Gregorian chant. +@cindex segno + +For in-line segno signs, there are three types of bar lines which +differ in their behavior at line breaks: + +@lilypond[quote,relative=2,verbatim] +c4 c c c +\bar "S" +c4 c c c \break +\bar "S" +c4 c c c +\bar "|S" +c4 c c c \break +\bar "|S" +c4 c c c +\bar "S|" +c4 c c c \break +\bar "S|" +c1 +@end lilypond @cindex repeats @@ -2172,6 +2433,38 @@ c4 c c c \break c4 c c c @end lilypond +For combinations of repeats with the segno sign, there are six different +variations: + +@lilypond[quote,relative=2,verbatim] +c4 c c c +\bar ":|S" +c4 c c c \break +\bar ":|S" +c4 c c c +\bar ":|S." +c4 c c c \break +\bar ":|S." +c4 c c c +\bar "S|:" +c4 c c c \break +\bar "S|:" +c4 c c c +\bar ".S|:" +c4 c c c \break +\bar ".S|:" +c4 c c c +\bar ":|S|:" +c4 c c c \break +\bar ":|S|:" +c4 c c c +\bar ":|S.|:" +c4 c c c \break +\bar ":|S.|:" +c1 +@end lilypond + + 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}, @@ -2203,13 +2496,13 @@ connected between different staves of a @code{StaffGroup}, @funindex bar @funindex bartype -The command @code{\bar }@var{bartype} is a shortcut for -@code{\set Timing.whichBar = }@var{bartype}. A bar line is +The command @samp{\bar @var{bartype}} is a shortcut for +@samp{\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}. +@code{"|"}. This may be changed at any time with +@samp{\set Timing.defaultBarType = @var{bartype}}. @seealso @@ -2312,7 +2605,6 @@ Internals Reference: @cindex collision, bar number @knownissues - Bar numbers may collide with the top of the @code{StaffGroup} bracket, if there is one. To solve this, the @code{padding} property of @code{BarNumber} can be used to position the number correctly. See @@ -2374,10 +2666,10 @@ for end of bar. @lilypond[quote,verbatim] pipeSymbol = \bar "||" { - c'2 c'2 | - c'2 c'2 - c'2 | c'2 - c'2 c'2 + c'2 c' | + c'2 c' + c'2 | c' + c'2 c' } @end lilypond @@ -2414,6 +2706,19 @@ Snippets: To print a rehearsal mark, use the @code{\mark} command. +@lilypond[quote,verbatim,relative=2] +c1 \mark \default +c1 \mark \default +c1 \mark \default +c1 \mark \default +@end lilypond + +@noindent +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}. + @lilypond[quote,verbatim,relative=2] c1 \mark \default c1 \mark \default @@ -2424,16 +2729,25 @@ c1 \mark \default @noindent The letter@tie{}@q{I} is skipped in accordance with engraving -traditions. If you wish to include the letter @q{I}, then use +traditions. If you wish to include the letter @q{I}, then use one +of the following commands, depending on which style of rehearsal mark +you want (letters only, letters in a hollow box, or letters in a +hollow circle). @example \set Score.markFormatter = #format-mark-alphabet +\set Score.markFormatter = #format-mark-box-alphabet +\set Score.markFormatter = #format-mark-circle-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}. +@lilypond[quote,verbatim,relative=2] +\set Score.markFormatter = #format-mark-box-alphabet +c1 \mark \default +c1 \mark \default +c1 \mark #8 +c1 \mark \default +c1 \mark \default +@end lilypond @cindex rehearsal mark format @cindex rehearsal mark style @@ -2465,7 +2779,7 @@ c1 \mark \default c1 @end lilypond -The file @file{scm/@/translation@/-functions@/.scm} contains the +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 @@ -2516,16 +2830,18 @@ 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{Formatting text}. +@ref{Formatting text}. For more precise control, see +@code{break-alignable-interface} in @ref{Aligning objects}. @seealso Notation Reference: @ref{The Feta font}, -@ref{Formatting text}. +@ref{Formatting text}, +@ref{Aligning objects}. Installed Files: -@file{scm/@/translation@/-functions@/.scm} contains +@file{scm/translation-functions.scm} contains the definitions of @code{format-mark-numbers} and @code{format-mark-letters}. They can be used as inspiration for other formatting functions. @@ -2560,7 +2876,7 @@ Internals Reference: @funindex \grace @funindex grace -Grace notes are ornaments that are written out. Grace notes +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. @@ -2629,7 +2945,7 @@ finally at 1/2 of the main note. @end lilypond The space between the main note and the grace note may also be -specified using spacers. The following example places the grace +specified using spacers. The following example places the grace note after a space lasting 7/8 of the main note. @lilypond[quote,verbatim,relative=2] @@ -2690,8 +3006,11 @@ Music Glossary: @rglos{acciaccatura}, @rglos{appoggiatura}. +Notation Reference: +@ref{Manual beams}. + Installed Files: -@file{ly/@/grace@/-init@/.ly}. +@file{ly/grace-init.ly}. Snippets: @rlsr{Rhythms}. @@ -2803,7 +3122,10 @@ Snippets: Time is administered by the @code{Timing_translator}, which by default is to be found in the @code{Score} context. An alias, @code{Timing}, is added to the context in which the -@code{Timing_translator} is placed. +@code{Timing_translator} is placed. To ensure that the +@code{Timing} alias is available, you may need to explicitly +instantiate the containing context (such as @code{Voice} or +@code{Staff}). The following properties of @code{Timing} are used to keep track of timing within the score. @@ -2842,14 +3164,16 @@ 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,verbatim,relative=1] -\set Score.measureLength = #(ly:make-moment 5 4) -c1 c4 -c1 c4 -c4 c4 -\set Score.measurePosition = #(ly:make-moment 5 8) -b4 b4 b8 -c4 c1 +@lilypond[quote,verbatim] +\new Voice \relative c' { + \set Timing.measureLength = #(ly:make-moment 5 4) + c1 c4 | + c1 c4 | + c4 c + \set Timing.measurePosition = #(ly:make-moment 5 8) + b4 b b8 | + c4 c1 | +} @end lilypond @noindent