@c -*- coding: utf-8; mode: texinfo; -*-
@ignore
    Translation of GIT committish: FILL-IN-HEAD-COMMITTISH

    When revising a translation, copy the HEAD committish of the
    version that you are working on.  See TRANSLATION for details.
@end ignore

@c \version "2.11.51"

@node Repeats
@section Repeats

@lilypondfile[ragged-right,line-width=16\cm,staffsize=16,quote]
{repeats-headword.ly}

Repetition is a central concept in music, and multiple notations
exist for repetitions. LilyPond supports the following kinds of repeats:


@table @code
@item volta
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.

@item unfold
The repeated music is fully written out, as many times as
specified by @var{repeatcount}.  This is useful when
entering repetitious music. 

@item percent
These are beat or measure repeats.  They look like single slashes or
percent signs.

@item tremolo
This is used to write tremolo beams.

@end table


@menu
* Long repeats::                
* Short repeats::               
@end menu

@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::  
@end menu

@cindex volta
@cindex prima volta
@cindex seconda volta
@cindex volta, prima
@cindex volta, seconda
@funindex \repeat

@node Normal repeats
@subsubsection Normal repeats

The syntax for a normal repeat is

@example
\repeat volta @var{repeatcount} @var{musicexpr}
@end example

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:

@lilypond[quote,ragged-right,fragment,verbatim,relative=2]
\repeat volta 2 { c4 d e f }
c2 d
\repeat volta 2 { d4 e f g }
@end lilypond

Normal repeats with alternate endings:

@lilypond[quote,ragged-right,fragment,verbatim,relative=2]
\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 can be entered in two ways:

@lilypond[quote,ragged-right,fragment,verbatim,relative=2]
\new Staff {
  \partial 4
  e |
  \repeat volta 4 { c2 d | e2 f | }
  \alternative {
    { g4 g g e }
    { a4 a a a | b2. }
  }
}
@end lilypond

@noindent
or

@lilypond[quote,ragged-right,fragment,verbatim,relative=2]
\new Staff {
  \partial 4 
  \repeat volta 4 { e4 | c2 d | e2 f | }
  \alternative {
    { \partial 4*3 g4 g g }
    { a4 a a a | b2. }
  }
}
@end lilypond


@funindex \repeatTie

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}
  {f2\repeatTie f,}
}
@end lilypond

@snippets

@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
{shortening-volta-brackets.ly}

@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}.

@lilypond[quote,ragged-right,fragment,verbatim,relative=2]
c4 c c c
\bar "||:" \break 
\repeat volta 2 { c4 d e f }   
@end lilypond


@seealso

Music Glossary: @rglos{repeat}, @rglos{volta}.

Notation Reference: @ref{Bar lines}, @ref{Modifying context plug-ins}.

Snippets: @rlsr{Repeats}.

Internals Reference: @rinternals{VoltaBracket},
@rinternals{RepeatedMusic}, @rinternals{VoltaRepeatedMusic},
@rinternals{UnfoldedRepeatedMusic}.

@knownissues

@cindex repeat, ambiguous

A nested repeat like

@example
\repeat @dots{}
\repeat @dots{}
\alternative
@end example

@noindent
is ambiguous, since it is is not clear to which @code{\repeat} the
@code{\alternative} belongs.  This ambiguity is resolved by always
having the @code{\alternative} belong to the inner @code{\repeat}.
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 are also not repeated.



@node Manual repeat marks
@subsubsection Manual repeat marks

@funindex repeatCommands

@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 @code
@item start-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

As per standard engraving practice, repeat signs are not printed
at the beginning of a piece.

@item end-repeat
Print a @code{:|} bar line:

@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]
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))
}
@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


@seealso

Notation Reference:
@ref{Bar lines},
@ref{Formatting text}.

Snippets:
@rlsr{Repeats}.

Internals Reference:
@rinternals{VoltaBracket},
@rinternals{RepeatedMusic},
@rinternals{VoltaRepeatedMusic}.


@node Written-out repeats
@subsubsection Written-out repeats

@cindex written-out repeats
@cindex repetitious music
@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

@example
\repeat unfold @var{repeatcount} @var{musicexpr}
@end example

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
\repeat unfold 2 { c4 d e f }
c1
@end lilypond

Unfold repeats with alternate endings:

@lilypond[quote,ragged-right,verbatim,fragment,relative=2]
c1
\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: @rlsr{Repeats}.

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::             
@end menu

@node Percent repeats
@subsubsection Percent repeats

@cindex percent repeats
@cindex measure repeats

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]
\relative c' {
  \repeat percent 4 { 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 repeats get a counter if you switch
on the @code{countPercentRepeats} property:

@lilypond[relative=2,fragment,quote,verbatim,ragged-right]
\relative c' {
  \set countPercentRepeats = ##t
  \repeat percent 4 { c1 }
}
@end lilypond


Isolated percents can also be printed.  This is done by entering a
multi-measure rest with a different print function:

@lilypond[fragment,verbatim,quote]
\override MultiMeasureRest #'stencil
  = #ly:multi-measure-rest::percent
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

Music Glossary: @rglos{percent repeat}, @rglos{simile}.

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]
\relative c' {
  \repeat tremolo 8 { c16 d }
  \repeat tremolo 4 { c16 d }
  \repeat tremolo 2 { c16 d }
}
@end lilypond

The @code{\repeat tremolo} syntax expects exactly two notes within
the braces, and the number of repetitions must correspond to a
note value that can be expressed with plain or dotted notes.  Thus,
@code{\repeat tremolo 7} is valid and produces a double dotted
note, but @code{\repeat tremolo 9} is not.

The duration of the tremolo equals the duration of the
braced expression multiplied by the number of repeats:
@code{\repeat tremolo 8 @{ c16 d16 @}} gives a whole note tremolo,
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 is also used here, in which case
the note should not be surrounded by braces:

@lilypond[quote,verbatim,ragged-right]
\repeat tremolo 4 c'16
@end lilypond

@cindex tremolo marks
@funindex tremoloFlags

The same output can be obtained by adding
@q{@code{:}[@var{number}]} after the note.  The number indicates
the duration of the subdivision, and it must be at least 8.  A
@var{number} value of 8 gives one line across the note stem.  If
the length is omitted, the last value (stored in
@code{tremoloFlags}) is used

@lilypond[quote,ragged-right,verbatim,fragment]
c'2:8 c':32 | c': c': |
@end lilypond


@knownissues


Tremolos entered with @q{@code{:}[@var{number}]} do not carry over
into the MIDI output.


@seealso

Snippets: @rlsr{Repeats}.

