@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
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
-@c ref{Controlling visibility of objects}.
+@ref{Visibility of objects}.
@lilypond[quote,verbatim,relative=2]
\time 2/4
@snippets
-@c TODO Send as snippet called "setting measure and beat lengths"
-@c when example is added
-
-@c This example seems rather obscure. Perhaps the effect of
-@c changing the three variables could be separated out -td
+@c TODO Send as snippet called "Changing the time signature without affecting the beat length"
-@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}
-and @code{beatGrouping}, how
-automatic beams should be generated.
+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:
@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
+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 End of snippet
-
-@cindex measure groupings
-@cindex beats, grouping
-@cindex grouping beats
-@cindex measure sub-grouping
-
-@c TODO Sent as snippet called "Conducting signs, measure grouping signs" 18 Oct 08 -td
-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"
- }
- }
-}
-@end lilypond
-@c TODO End of snippet called "grouping beats"
-
@cindex compound time signatures
@cindex time signature, compound
entered using the @code{\partial} command, with the syntax
@example
-\partial @var{duration}
+\partial @var{duration}
@end example
where @code{duration} is the rhythmic length of the interval
@seealso
-Music Glossary:
+Music Glossary:
@rglos{anacrusis}.
-Notation Reference:
+Notation Reference:
@ref{Grace notes}.
Snippets:
Bar lines and bar numbers are calculated automatically. For
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,relative=2,fragment]
@knownissues
Not all durations (especially those containing tuplets) can be
-represented exactly with normal notes and dots, but the
+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
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:
@snippets
-@c TODO -- convert to snippet called "Grouping beats"
-@c Added to lsr 18 Oct 08 -td
-
-Beaming patterns may be altered with the @code{beatGrouping} property,
-
-@lilypond[quote,verbatim,relative=2]
-\time 5/16
-\set beatGrouping = #'(2 3)
-c8[^"(2+3)" c16 c8]
-\set beatGrouping = #'(3 2)
-c8[^"(3+2)" c16 c8]
-@end lilypond
-
-@funindex subdivideBeams
-
-@c TODO convert to snippet called "Sub-dividing beams"
-@c Added to lsr 18 Oct 08
-
-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[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
-
-@noindent
-For more information about @code{make-moment}, see
-@ref{Time administration}.
-
@funindex breakable
@cindex break, line
@cindex line breaks
-@c TODO convert to snippet called "Beams across line breaks"
-@c This snippet exists but doesn't show the effect - replaced it
-@c with this 18 Oct 08, but this also will not break
-
-Line breaks are normally forbidden when beams cross bar lines.
-This behavior can be changed by setting the @code{breakable}
-property:
-
-@lilypond[relative=2,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
-
-@c TODO convert to snippet called "Changing beam knee gap"
-@c Added to lsr 18 Oct 08
-
-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,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
@ref{Setting automatic beam behavior}.
Installed Files:
-@file{scm/auto-beam.scm}.
+@file{scm/@/auto@/-beam@/.scm}.
Snippets:
@rlsr{Rhythms}.
@cindex lyrics and beaming
-@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.}
+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
+
+@item If @code{beatGrouping} and @code{beatLength} are consistent
+with @code{measureLength}, @code{beatGrouping} is used to determine
+the end points of beams.
+
+@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.
-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}.
+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
- '(beam-limit beam-numerator beam-denominator
- time-signature-numerator time-signature-denominator)
+ '(beam-limit
+ beam-numerator beam-denominator
+ time-signature-numerator time-signature-denominator)
moment-numerator moment-denominator [context])
@end example
+@noindent
+where
+
@itemize
@item @code{beam-limit} is the type of automatic beam limit
-defined, either @code{begin} or @code{end}.
+defined. This can be either @code{begin} or @code{end} but
+only @code{end} is effective.
@item @code{beam-numerator/beam-denominator} is the beam duration
-for which you want to add a rule. 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 beams of any 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{time-signature-numerator/time-signature-denominator}
-is the time signature to which
-this rule should apply. Set @code{time-signature-numerator} and
-@code{time-signature-denominator} to @code{'*'}
-to have this rule apply in any time signature.
+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{monent-numerator/moment-denominator} is the position
-in the bar at which the beam should
-begin or end.
+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}.
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,verbatim,relative=2]
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,verbatim,relative=2]
@end lilypond
When multiple voices are used the @code{Staff} context must be
-specified:
+specified if the beaming is to be applied to all voices in the
+staff:
@lilypond[quote,verbatim,relative=2]
\time 7/8
@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
@example
#(revert-auto-beam-setting
- '(beam-limit beam-numerator beam-denominator
- time-signature-numerator time-signature-denominator)
+ '(beam-limit
+ beam-numerator beam-denominator
+ time-signature-numerator time-signature-denominator)
moment-numerator moment-denominator [context])
@end example
@snippets
-@c TODO Add to LSR with name "Beam grouping in 7/8 time"
-@c Added 19 Oct 08
-There are no default automatic beam groupings specified for 7/8
-time, so if automatic beams are required the grouping must be
-specified. For example, to group all beams 2-3-2 in 7/8 time,
-specify beam endings at 2/8 and 5/8:
-
-@lilypond[quote,verbatim,relative=2]
-\time 7/8
-% rhythm 2-3-2
-a8 a a a a a a
-#(override-auto-beam-setting '(end * * 7 8) 2 8)
-#(override-auto-beam-setting '(end * * 7 8) 5 8)
-a8 a a a a a a
-@end lilypond
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+{beam-grouping-in-7-8-time.ly}
@ignore
-@c TODO Fix this example and convert to @lilypond
-@c Seems like setting beam starting points is no longer
-@c necessary, and/or has no effect. Remove mention?
-
-The same syntax can be used to specify beam starting points.
@c TODO Does this example add anything?
@end ignore
-@c TODO Convert to snippet called "Reverting default beam endings"
-@c Added to lsr 19 Oct 08
-
-To typeset beams grouped @code{3-4-3-2} in 12/8 it is necessary
-first to override the default beam endings in 12/8, and then to
-set up the new beaming endings:
-
-@lilypond[verbatim,quote,relative=2]
-\time 12/8
-
-% Default beaming
-a8 a a a a a a a a a a a
-
-% Revert default values in scm/auto-beam.scm for 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)
-a8 a a a a a a a a a a a
-
-% Set new values for beam endings
-#(override-auto-beam-setting '(end * * 12 8) 3 8)
-#(override-auto-beam-setting '(end * * 12 8) 7 8)
-#(override-auto-beam-setting '(end * * 12 8) 10 8)
-a8 a a a a a a a a a a a
-@end lilypond
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+{reverting-default-beam-endings.ly}
@predefined
@snippets
+@c TODO Add snippet "Flat flags and beam nibs" when available
+@c Added to LSR 27 Oct 08
+
@node Feathered beams
@unnumberedsubsubsec Feathered beams
@seealso
-Notation Reference:
-@ref{Line breaking},
+Notation Reference:
+@ref{Line breaking},
@ref{Repeats},
@ref{Grouping staves}.
@cindex acciaccatura
Grace notes are ornaments that are written out. Grace notes
-are printed in a smaller font and take up no logical time
+are printed in a smaller font and take up no logical time
in a measure.
@lilypond[quote,relative=2,verbatim]
\grace { c16[ d16] } c2
@end lilypond
-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 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,relative=2,verbatim]
-\grace c8 b4
+\grace c8 b4
\acciaccatura d8 c4
\appoggiatura e8 d4
\acciaccatura { g16[ f] } e4
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
+the results from setting the space at the default, at 15/16, and
finally at 1/2 of the main note.
@lilypond[quote,verbatim,relative=2]
@snippets
-The slash through the stem found in @emph{acciaccatura}s can be applied
+The slash through the stem found in @emph{acciaccatura}s can be applied
in other situations:
@lilypond[quote,verbatim,relative=2]
#(add-grace-property 'Voice 'Stem 'direction ly:stem::calc-direction)
#(remove-grace-property 'Voice 'Stem 'direction)
\new Voice {
- \acciaccatura { f16 } g4
+ \acciaccatura { f16 } g4
\grace { d16[ e] } f4
\appoggiatura { a,32[ b c d] } e2
}
A multi-note beamed @i{acciaccatura} is printed without a slash,
and looks exactly the same as a multi-note beamed
@i{appoggiatura}.
+
@c TODO Add link to LSR snippet to add slash when available
Grace note synchronization can also lead to surprises. Staff
In an orchestral context, cadenzas present a special problem: when
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.
+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.
One solution to this problem is to use the functions
@code{mmrest-of-length} and @code{skip-of-length}. These Scheme
-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.
+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
+ c4 d8 e f g g4
f2 g4 g
}
\new GrandStaff <<
- \new Staff {
- \MyCadenza c'1
+ \new Staff {
+ \MyCadenza c'1
\MyCadenza c'1
}
\new Staff {