Guide, node Updating translation committishes..
@end ignore
-@c \version "2.12.0"
+@c \version "2.13.36"
@node Rhythms
@section Rhythms
@endpredefined
+@snippets
+
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+{changing-the-number-of-augmentation-dots-per-note.ly}
+
+
@seealso
Music Glossary:
@rglos{breve},
@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
@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
@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}
@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
@knownissues
-
Switching staves when a tie is active will not produce a slanted
tie.
@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
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
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]
<<
@lilypond[quote,verbatim,relative=2]
<<
{
- \repeat unfold 8 {a4}
+ \repeat unfold 8 { a4 }
}
{
a4 \skip 2 a |
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
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 |
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
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 |
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
@funindex \textLengthOn
@funindex textLengthOn
@funindex \textLengthOff
-@funindex textLenthOff
+@funindex textLengthOff
@funindex \fermataMarkup
@funindex fermataMarkup
@funindex \compressFullBarRests
@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
@menu
* Time signature::
+* Metronome marks::
* Upbeats::
* Unmetered music::
* Polymetric notation::
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},
@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
+
+Metronome marks may also be printed as a range of two numbers:
+
+@lilypond[verbatim,quote,relative=1]
+\tempo 4 = 40 ~ 46
+c4. ees8
+fis g aes c,
+b1
+@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
@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:
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
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
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}
Notation Reference:
@ref{Visibility of objects},
-@ref{Polymetric notation}.
+@ref{Polymetric notation},
+@ref{Manual beams}.
Snippets:
@rlsr{Rhythms}.
@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
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
c1 f g c
}
}
-
\new Voice \with {
\consists Pitch_squash_engraver
} \relative c'' {
@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
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}.
@snippets
+
@cindex line breaks and beams
@cindex beams and line breaks
@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:
@ref{Setting automatic beam behavior}.
Installed Files:
-@file{scm/@/auto@/-beam@/.scm}.
+@file{scm/auto-beam.scm}.
Snippets:
@rlsr{Rhythms}.
@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
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
@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 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}.
+
+Most automatic beaming settings for a time signature contain an
+entry for @code{beamExceptions}. For example, 4/4 time tries to
+beam the measure in two if there are only eighth notes. The
+@code{beamExceptions} rule can override the @code{beatStructure} setting
+if @code{beamExceptions} is not reset.
@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}
+\set Timing.baseMoment = #(ly:make-moment 1 8)
+\set Timing.beatStructure = #'(3 3 2)
+% This won't beam (3 3 2) because of beamExceptions
+\repeat unfold 8 {c8} |
+% This will beam (3 3 2) because we clear beamExceptions
+\set Timing.beamExceptions = #'()
+\repeat unfold 8 {c8}
@end lilypond
+In a similar fashion, eighth notes in 3/4 time are beamed as a full
+measure by default. To beam eighth notes in 3/4 time on the beat,
+reset @code{beamExceptions}.
-@predefined
-@code{\overrideBeamSettings},
-@code{\revertBeamSettings}.
-@endpredefined
+@lilypond[quote,verbatim,relative=2]
+\time 3/4
+% by default we beam in (3) due to beamExceptions
+\repeat unfold 6 {a8} |
+% This will beam (1 1 1) due to beatLength
+\set Timing.beamExceptions = #'()
+\repeat unfold 6 {a8}
+@end lilypond
+@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
@seealso
-Installed files:
+Installed Files:
@file{scm/beam-settings.scm}.
Snippets:
@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
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:
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
@seealso
Notation Reference:
-@ref{Direction and placement}.
+@ref{Direction and placement},
+@ref{Grace notes}.
Snippets:
@rlsr{Rhythms}.
a1 \bar ":|.|:"
b1 \bar ":|.:"
c1 \bar ":|"
-d1
+e1
@end lilypond
Additionally, a bar line can be printed as a simple tick:
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
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},
@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
@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
@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
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
@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
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
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.
@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.
@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]
@rglos{acciaccatura},
@rglos{appoggiatura}.
+Notation Reference:
+@ref{Manual beams}.
+
Installed Files:
-@file{ly/@/grace@/-init@/.ly}.
+@file{ly/grace-init.ly}.
Snippets:
@rlsr{Rhythms}.
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.
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