]> git.donarmstrong.com Git - lilypond.git/blobdiff - Documentation/notation/rhythms.itely
Doc: NR: Capitalize "f" in "Installed files".
[lilypond.git] / Documentation / notation / rhythms.itely
index 74f27f6fe72b61daacfdaae07502a619d8a38ba1..6a9c08a8acf527ccaf0256a7298187d1647dbc01 100644 (file)
@@ -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
@@ -290,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
@@ -555,7 +567,6 @@ Internals Reference:
 
 
 @knownissues
-
 Switching staves when a tie is active will not produce a slanted
 tie.
 
@@ -595,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
@@ -620,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
 
@@ -691,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]
 <<
@@ -712,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 |
@@ -726,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
@@ -783,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 |
@@ -798,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
@@ -820,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 |
@@ -852,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
@@ -882,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
@@ -941,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
@@ -962,6 +971,7 @@ Multi-measure rests do not take part in rest collisions.
 
 @menu
 * Time signature::
+* Metronome marks::
 * Upbeats::
 * Unmetered music::
 * Polymetric notation::
@@ -1032,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},
@@ -1069,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
@@ -1092,8 +1264,9 @@ entered using the @code{\partial} command, with the syntax
 @end example
 
 @noindent
-where @code{duration} is the rhythmic length of the remaining
-interval of the current measure before the start of the next.
+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 |
@@ -1164,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
@@ -1176,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}
@@ -1205,7 +1396,8 @@ Music Glossary:
 
 Notation Reference:
 @ref{Visibility of objects},
-@ref{Polymetric notation}.
+@ref{Polymetric notation},
+@ref{Manual beams}.
 
 Snippets:
 @rlsr{Rhythms}.
@@ -1234,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
@@ -1289,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
@@ -1501,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'' {
@@ -1563,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
@@ -1588,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}.
 
@@ -1600,6 +1797,7 @@ created; see @ref{Setting automatic beam behavior}.
 
 @snippets
 
+
 @cindex line breaks and beams
 @cindex beams and line breaks
 
@@ -1611,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:
@@ -1618,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}.
@@ -1649,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 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.
-
-The ending rules consist of 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
-#'((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 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
@@ -1761,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
@@ -1786,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}.
 
-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:
+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.
+
+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
@@ -1850,7 +2071,7 @@ for @var{grouping} is given:
 
 
 @seealso
-Installed files:
+Installed Files:
 @file{scm/beam-settings.scm}.
 
 Snippets:
@@ -1864,11 +2085,10 @@ 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.
@@ -1890,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:
 
@@ -1912,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
 
@@ -1948,7 +2180,8 @@ g16 a]
 
 @seealso
 Notation Reference:
-@ref{Direction and placement}.
+@ref{Direction and placement},
+@ref{Grace notes}.
 
 Snippets:
 @rlsr{Rhythms}.
@@ -2147,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:
@@ -2263,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
@@ -2372,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
@@ -2434,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
 
@@ -2547,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
@@ -2609,7 +2841,7 @@ Notation Reference:
 @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.
@@ -2644,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.
 
@@ -2713,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]
@@ -2774,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}.