X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Documentation%2Fuser%2Frepeats.itely;h=250bd3792e1e86742e79b9fef233b26feea7a49a;hb=9d4fb687da8137aeefa1dbc9fcf2574d8d6e9953;hp=11a5ad599422104b5759904dfe66658ef437a3da;hpb=d65b96b2d2147f3681c5fea56ad81ca0d6fec5a5;p=lilypond.git diff --git a/Documentation/user/repeats.itely b/Documentation/user/repeats.itely index 11a5ad5994..250bd3792e 100644 --- a/Documentation/user/repeats.itely +++ b/Documentation/user/repeats.itely @@ -20,11 +20,11 @@ exist for repetitions. LilyPond supports the following kinds of repeats: @table @code @item volta -The repeated music is not written out but enclosed in repeat bar +The repeated music is not written out but enclosed between repeat bar lines. If the repeat is at the beginning of a piece, a repeat bar line is only printed at the end. Alternative endings (volte) are -printed, left to right with brackets. This is the standard -notation for repeats with alternatives. +printed left to right with brackets. This is the standard notation +for repeats with alternatives. @item unfold The repeated music is fully written out, as many times as @@ -32,56 +32,32 @@ specified by @var{repeatcount}. This is useful when entering repetitious music. @item percent -Write beat or measure repeats. These look like percent signs. -Percent repeats must be declared within a @code{Voice} context. +These are beat or measure repeats. They look like single slashes or +percent signs. @item tremolo -Write tremolo beams. +This is used to write tremolo beams. @end table -@ignore -LilyPond has one syntactic construct for specifying different -types of repeats. The syntax is - -@example -\repeat @var{variant} @var{repeatcount} @var{repeatbody} -@end example - -where @var{repeatbody} is a music expression. - - -Alternative endings are entered with -@funindex \alternative -@example -\alternative @{ - @var{alternative1} - @var{alternative2} - @var{alternative3} - @dots{} -@} -@end example - -@noindent -after a @code{\repeat volta} or @code{unfold} block, where each -@var{alternative} is a music expression. If you give fewer -alternatives than @var{repeatcount}, the first alternative is assumed -to be played more than once. -@end ignore - @menu -* Writing long repeats:: +* Long repeats:: * Short repeats:: @end menu -@node Writing long repeats -@subsection Writing long repeats +@node Long repeats +@subsection Long repeats + +This section discusses how to input long (usually multi-measure) +repeats. The repeats can take two forms: repeats enclosed between +repeat signs; or written out repeats, used to input repetitious music. +Repeat signs can also be controlled manually. @menu * Normal repeats:: * Manual repeat marks:: -* Written-out repeats:: +* Written-out repeats:: @end menu @cindex volta @@ -97,11 +73,13 @@ to be played more than once. The syntax for a normal repeat is @example -\repeat volta @var{repeatcount} @var{repeatbody} +\repeat volta @var{repeatcount} @var{musicexpr} @end example -where @var{repeatbody} is a music expression. Alternate endings can -be produced using @code{\alternative}. +where @var{musicexpr} is a music expression. Alternate endings can be +produced using @code{\alternative}. If there are more repeats than +there are alternate endings, the earliest repeats are given the first +alternative. Normal repeats without alternate endings: @@ -114,23 +92,31 @@ c2 d Normal repeats with alternate endings: @lilypond[quote,ragged-right,fragment,verbatim,relative=2] -\repeat volta 2 { g f e d } +\repeat volta 2 { g4 f e d } \alternative { { cis2 g' } { cis,2 b } } +\repeat volta 3 { c4 d e f } + \alternative { + { d2 e } + { f2 g } + } c1 @end lilypond -Repeats with upbeats: +Repeats with upbeats can be entered in two ways: @lilypond[quote,ragged-right,fragment,verbatim,relative=2] \new Staff { \partial 4 e | - \repeat volta 4 { c2 d2 | e2 f2 | } - \alternative { { g4 g g e } { a a a a | b2. } } + \repeat volta 4 { c2 d | e2 f | } + \alternative { + { g4 g g e } + { a4 a a a | b2. } + } } @end lilypond @@ -140,8 +126,11 @@ or @lilypond[quote,ragged-right,fragment,verbatim,relative=2] \new Staff { \partial 4 - \repeat volta 4 { e | c2 d2 | e2 f2 | } - \alternative { { \partial 4*3 g4 g g } { a a a a | b2. } } + \repeat volta 4 { e4 | c2 d | e2 f | } + \alternative { + { \partial 4*3 g4 g g } + { a4 a a a | b2. } + } } @end lilypond @@ -153,20 +142,25 @@ Ties may be added to a second ending: @lilypond[quote,ragged-right,fragment,verbatim,relative=2] c1 \repeat volta 2 {c4 d e f ~ } -\alternative { {f2 d} {f\repeatTie f,} } +\alternative { + {f2 d} + {f2\repeatTie f,} +} @end lilypond @snippets -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,lilyquote,texidoc,doctitle] {shortening-volta-brackets.ly} -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,lilyquote,texidoc,doctitle] {adding-volta-brackets-to-additional-staves.ly} @c Is there a way to have a final bar ("|.") at the end of the @c previous line? Doesn't seem to be. +@c It could be done by overriding +@c the BreakAlignment property. Want a separate example? If you want to start a repeat at the beginning of a line and have a double bar at the end of the previous line, use @code{\bar}. For more information, see @ref{Bar lines}. @@ -184,11 +178,11 @@ Music Glossary: @rglos{repeat}, @rglos{volta}. Notation Reference: @ref{Bar lines}, @ref{Modifying context plug-ins}. -Snippets: @lsrdir{Repeats,Repeats}. +Snippets: @rlsr{Repeats}. -Internals Reference: @internalsref{VoltaBracket}, -@internalsref{RepeatedMusic}, @internalsref{VoltaRepeatedMusic}, -@internalsref{UnfoldedRepeatedMusic}. +Internals Reference: @rinternals{VoltaBracket}, +@rinternals{RepeatedMusic}, @rinternals{VoltaRepeatedMusic}, +@rinternals{UnfoldedRepeatedMusic}. @knownissues @@ -211,7 +205,7 @@ For clarity, it is advisable to use braces in such situations. Timing information is not remembered at the start of an alternative, so after a repeat timing information must be reset by hand; for example, by setting @code{Score.measurePosition} or entering -@code{\partial}. Similarly, slurs or ties are also not repeated. +@code{\partial}. Similarly, slurs are also not repeated. @@ -220,50 +214,153 @@ example, by setting @code{Score.measurePosition} or entering @funindex repeatCommands -@c FIXME: Markup does not work in the "text" field -@c And how does one change the font? -@c On the whole, this section needs better documentation (why the -@c double parentheses around the volta expressions?) +@warning{These methods are only used for displaying unusual repeat +constructs. In most cases, repeats should be created using the +standard @code{\\repeat} command or by printing the relevant bar +lines. For more information, see @ref{Bar lines}.} The property @code{repeatCommands} can be used to control the layout of repeats. Its value is a Scheme list of repeat commands. -@table @asis -@item @code{start-repeat} +@table @code +@item start-repeat Print a @code{|:} bar line. -@item @code{end-repeat} -Print a @code{:|} bar line. +@lilypond[quote,ragged-right,verbatim,fragment,relative=2] +c1 +\set Score.repeatCommands = #'( start-repeat ) +d4 e f g +c1 +@end lilypond -@item @code{(volta @var{text})} -Print a volta bracket saying @var{text}. The text can be specified as -a text string or as a markup text, see @ref{Formatting text}. Do not -forget to change the font, as the default number font does not contain -alphabetic characters; +As per standard engraving practice, repeat signs are not printed +at the beginning of a piece. +@item end-repeat +Print a @code{:|} bar line: -@item @code{(volta #f)} -Stop a running volta bracket. -@end table +@lilypond[quote,ragged-right,verbatim,fragment,relative=2] +c1 +d4 e f g +\set Score.repeatCommands = #'( end-repeat ) +c1 +@end lilypond + +@item (volta @var{number}) +Create a new volta with the specified number: + +@lilypond[verbatim,quote,relative=2] +f4 g a b +\set Score.repeatCommands = #'( ( volta "2" ) ) +g4 a g a +c1 +@end lilypond + +@item (volta #f) +Stops a running volta bracket: @lilypond[quote,ragged-right,verbatim,fragment,relative=2] -c4 - \set Score.repeatCommands = #'((volta "93") end-repeat) -c4 c4 +c1 +\set Score.repeatCommands = #'( ( volta "2" ) ) +f4 g a b +\set Score.repeatCommands = #'( ( volta #f ) ) +a4 g f e +c1 +@end lilypond + +@end table + +Multiple repeat commands may occur at the same point: + +@lilypond[verbatim,quote,relative=2] +f4 g a b +\set Score.repeatCommands = #'( ( volta "2, 5" ) end-repeat ) +g4 a g a +c1 +\set Score.repeatCommands = #'( ( volta #f ) ( volta "95" ) end-repeat ) +b1 +@end lilypond + +Text can be included with the volta bracket. The text can be a +number or numbers or markup text, see @ref{Formatting text}. The +simplest way to use markup text is to define the markup first, +then include the the markup in a Scheme list. + +@lilypond[verbatim,quote] +voltaAdLib = \markup { 1. 2. 3... \text \italic { ad lib. } } +\relative c'' { + c1 + \set Score.repeatCommands = #(list (list 'volta voltaAdLib) 'start-repeat) + c4 b d e + \set Score.repeatCommands = #'((volta #f) (volta "4.") end-repeat) + f1 \set Score.repeatCommands = #'((volta #f)) -c4 c4 +} +@end lilypond + + +@snippets + +@c FIXME: send these to Neil or Valentin to be added as snippets, +@c delete them. +Manual control of the volte, including a @code{|:} bar line at the +beginning and explicit volta numbers: + +@c FIXME: I can't believe this is right. +@c TODO: I think it is. I plan +@c to delete this example, since it's +@c already been given at L238. rp +@lilypond[verbatim,quote,relative=2] +s1*1/10 +\set Score.repeatCommands = #'( start-repeat ) +c1*9/10 +d4 e f g +\set Score.repeatCommands = #'( ( volta "1, 2, 5" ) ) +f4 g a b +\set Score.repeatCommands = #'( ( volta #f ) ( volta "95" ) end-repeat ) +g4 a g a +\set Score.repeatCommands = #'( ( volta #f ) ) +c1 +@end lilypond + +In order to print a @code{|:} bar line at the beginning of a piece, +the @code{BreakAlignment} property must be overridden: + +@lilypond[quote,ragged-right,verbatim,fragment,relative=2] +\once \override Score.BreakAlignment #'break-align-orders = +#(make-vector 3 '( +instrument-name +left-edge +ambitus +span-bar +breathing-sign +clef +key-signature +time-signature +staff-bar +custos +span-bar +)) +\bar "|:" +c1 +d1 +d4 e f g @end lilypond -@c FIXME: improve visibility of bar lines link? @seealso -Notation Reference: @ref{Bar lines}, @ref{Formatting text}. +Notation Reference: +@ref{Bar lines}, +@ref{Formatting text}. -Snippets: @lsrdir{Repeats,Repeats} +Snippets: +@rlsr{Repeats}. -Internals Reference: @internalsref{VoltaBracket}, -@internalsref{RepeatedMusic}, @internalsref{VoltaRepeatedMusic}. +Internals Reference: +@rinternals{VoltaBracket}, +@rinternals{RepeatedMusic}, +@rinternals{VoltaRepeatedMusic}. @node Written-out repeats @@ -274,14 +371,17 @@ Internals Reference: @internalsref{VoltaBracket}, @cindex repeats, written-out By using the @code{unfold} command, repeats can be used to simplify -the writing out of repetitious music. The syntax is +the writing out of repetitious music. The syntax is @example -\repeat unfold @var{repeatcount} @var{repeatbody} +\repeat unfold @var{repeatcount} @var{musicexpr} @end example -Unfold repeats can be made with or without alternate endings. Unfold -repeats without alternate endings: +where @var{musicexpr} is a music expression. Unfold repeats can be +made with or without alternate endings. If there are more repeats +than there are alternate endings, the first alternative ending is +applied to the earliest endings. Unfold repeats without alternate +endings: @lilypond[quote,ragged-right,verbatim,fragment,relative=2] c1 @@ -293,24 +393,34 @@ Unfold repeats with alternate endings: @lilypond[quote,ragged-right,verbatim,fragment,relative=2] c1 -\repeat unfold 2 { g f e d } +\repeat unfold 2 { g4 f e d } \alternative { { cis2 g' } { cis,2 b } } c1 +\repeat unfold 3 { d4 c b2 } + \alternative { + { c4 d e f } + { d4 c b a } + } +c1 @end lilypond @seealso -Snippets: @lsrdir{Repeats,Repeats}. +Snippets: @rlsr{Repeats}. -Internals Reference: @internalsref{RepeatedMusic}, -@internalsref{UnfoldedRepeatedMusic}. +Internals Reference: @rinternals{RepeatedMusic}, +@rinternals{UnfoldedRepeatedMusic}. @node Short repeats @subsection Short repeats +This section discusses how to input short repeats. Short repeats can +take two basic forms: repeats of a single note to two measures, +represented by slashes or percent signs; and tremolos. + @menu * Percent repeats:: * Tremolo repeats:: @@ -322,25 +432,30 @@ Internals Reference: @internalsref{RepeatedMusic}, @cindex percent repeats @cindex measure repeats -A note pattern can be repeated with the @code{\repeat percent -@var{number}} syntax. The music is printed once, and the pattern -is replaced with a special sign. Patterns of one and two measures -are replaced by percent-like signs, patterns that divide the -measure length are replaced by slashes. Percent repeats must be -declared within a @code{Voice} context. +Repeated short patterns of notes are supported. The music is printed +once, and the pattern is replaced with a special sign. Patterns that +are shorter than one measure are replaced by slashes, and patterns of +one or two measures are replaced by percent-like signs. The syntax is + +@example +@code{\repeat percent @var{number} @var{musicexpr}} +@end example + +where @var{musicexpr} is a music expression. @lilypond[quote,verbatim,ragged-right] -\new Voice \relative c' { +\relative c' { \repeat percent 4 { c4 } - \repeat percent 2 { c2 es2 f4 fis4 g4 c4 } + \repeat percent 2 { b'4 a g f } + \repeat percent 2 { c2 es | f4 fis g c | } } @end lilypond -Measure repeats of more than two measures get a counter if you -switch on the @code{countPercentRepeats} property: +Measure repeats of more than two repeats get a counter if you switch +on the @code{countPercentRepeats} property: @lilypond[relative=2,fragment,quote,verbatim,ragged-right] -\new Voice { +\relative c' { \set countPercentRepeats = ##t \repeat percent 4 { c1 } } @@ -357,29 +472,49 @@ R1 @end lilypond +@knownissues + +Only three kinds of percent repeats are supported: a single slash +representing a single beat (regardless of the duration of the repeated +notes); a single slash with dots representing one full measure; and +two slashes with dots crossing a bar line representing two full +measures. Neither multiple slashes representing single beat repeats +consisting of sixteenth or shorter notes, nor two slashes with dots +representing single beat repeats consisting of notes of varying +durations, are supported. + + @seealso -Snippets: @lsrdir{Repeats,Repeats} +Music Glossary: @rglos{percent repeat}, @rglos{simile}. -Internals Reference: @internalsref{RepeatSlash}, -@internalsref{PercentRepeat}, @internalsref{DoublePercentRepeat}, -@internalsref{DoublePercentRepeatCounter}, -@internalsref{PercentRepeatCounter}, -@internalsref{PercentRepeatedMusic}. +Snippets: @rlsr{Repeats}. + +Internals Reference: @rinternals{RepeatSlash}, +@rinternals{PercentRepeat}, @rinternals{DoublePercentRepeat}, +@rinternals{DoublePercentRepeatCounter}, +@rinternals{PercentRepeatCounter}, @rinternals{PercentRepeatedMusic}. @node Tremolo repeats @subsubsection Tremolo repeats +Tremolos can take two forms: alternation between two chords or two +notes, and rapid repetition of a single +note or chord. Tremolos consisting of an alternation are indicated by +adding beams between the notes or chords being alternated, while +tremolos consisting of the rapid repetition of a single note are +indicated by adding beams or slashes to a single note. + @cindex tremolo beams To place tremolo marks between notes, use @code{\repeat} with tremolo style: @lilypond[quote,verbatim,ragged-right] -\new Voice \relative c' { - \repeat tremolo 8 { c16 d16 } - \repeat tremolo 4 { c16 d16 } - \repeat tremolo 2 { c16 d16 } +\relative c' { + \repeat tremolo 8 { c16 d } + \repeat tremolo 4 { c16 d } + \repeat tremolo 2 { c16 d } } @end lilypond @@ -395,7 +530,7 @@ braced expression multiplied by the number of repeats: notated as two whole notes joined by tremolo beams. There are two ways to put tremolo marks on a single note. The -@code{\repeat tremolo} syntax can be used even here, in which case +@code{\repeat tremolo} syntax is also used here, in which case the note should not be surrounded by braces: @lilypond[quote,verbatim,ragged-right] @@ -426,16 +561,5 @@ into the MIDI output. @seealso -Notation Reference: @ref{Tremolo repeats}. - -Internals Reference: @internalsref{Beam}, -@internalsref{StemTremolo}. - -Snippets: @lsrdir{Repeats,Repeats} - -Elsewhere: @internalsref{StemTremolo}. - - - - +Snippets: @rlsr{Repeats}.