@end menu
-@anchor{Automatic part combining}
-@unnumberedsubsubsec Automatic part combining
-@cindex automatic part combining
-@cindex part combiner
-
-Automatic part combining is used to merge two parts of music onto a
-staff. It is aimed at typesetting orchestral scores. When the two
-parts are identical for a period of time, only one is shown. In
-places where the two parts differ, they are typeset as separate
-voices, and stem directions are set automatically. Also, solo and
-@emph{a due} parts are identified and can be marked.
-
-The syntax for part combining is
-
-@example
-\partcombine @var{musicexpr1} @var{musicexpr2}
-@end example
-
-
-The following example demonstrates the basic functionality of the part
-combiner: putting parts on one staff, and setting stem directions and
-polyphony
-
-@lilypond[quote,verbatim,ragged-right,fragment]
-\new Staff \partcombine
- \relative g' { g g a( b) c c r r }
- \relative g' { g g r4 r e e g g }
-@end lilypond
-
-The first @code{g} appears only once, although it was
-specified twice (once in each part). Stem, slur, and tie directions are
-set automatically, depending whether there is a solo or unisono. The
-first part (with context called @code{one}) always gets up stems, and
-@q{Solo}, while the second (called @code{two}) always gets down stems and
-@q{Solo II}.
-
-If you just want the merging parts, and not the textual markings, you
-may set the property @code{printPartCombineTexts} to false
-
-@lilypond[quote,verbatim,ragged-right,fragment,relative=2]
-\new Staff <<
- \set Staff.printPartCombineTexts = ##f
- \partcombine
- \relative g' { g a( b) r }
- \relative g' { g r4 r f }
->>
-@end lilypond
-
-To change the text that is printed for solos or merging, you may
-set the @code{soloText}, @code{soloIIText}, and @code{aDueText}
-properties.
-
-@lilypond[quote,verbatim,ragged-right,fragment,relative=2]
-\new Staff <<
- \set Score.soloText = #"ichi"
- \set Score.soloIIText = #"ni"
- \set Score.aDueText = #"tachi"
- \partcombine
- \relative g' { g4 g a( b) r }
- \relative g' { g4 g r r f }
->>
-@end lilypond
-
-Both arguments to @code{\partcombine} will be interpreted as
-@internalsref{Voice} contexts. If using relative octaves,
-@code{\relative} should be specified for both music expressions, i.e.,
-
-@example
-\partcombine
- \relative @dots{} @var{musicexpr1}
- \relative @dots{} @var{musicexpr2}
-@end example
-
-@noindent
-A @code{\relative} section that is outside of @code{\partcombine} has
-no effect on the pitches of @var{musicexpr1} and @var{musicexpr2}.
-
-@seealso
-
-Program reference: @internalsref{PartCombineMusic}.
-
-@refbugs
-
-When @code{printPartCombineTexts} is set, when the two voices play the
-same notes on and off, the part combiner may typeset @code{a2} more
-than once in a measure.
-
-@code{\partcombine} cannot be inside @code{\times}.
-
-@code{\partcombine} cannot be inside @code{\relative}.
-
-Internally, the @code{\partcombine} interprets both arguments as
-@code{Voice}s named @code{one} and @code{two}, and then decides when
-the parts can be combined. Consequently, if the arguments switch to
-differently named @internalsref{Voice} contexts, the events in those
-will be ignored.
-
-
@anchor{Hiding staves}
@unnumberedsubsubsec Hiding staves
-@anchor{Clusters}
-@unnumberedsubsubsec Clusters
-
-@cindex cluster
-
-A cluster indicates a continuous range of pitches to be played. They
-can be denoted as the envelope of a set of notes. They are entered by
-applying the function @code{makeClusters} to a sequence of
-chords, e.g.,
-@lilypond[quote,ragged-right,relative=2,fragment,verbatim]
-\makeClusters { <c e > <b f'> }
-@end lilypond
-
-Ordinary notes and clusters can be put together in the same staff,
-even simultaneously. In such a case no attempt is made to
-automatically avoid collisions between ordinary notes and clusters.
-
-@seealso
-
-Program reference: @internalsref{ClusterSpanner},
-@internalsref{ClusterSpannerBeacon},
-@internalsref{Cluster_spanner_engraver}.
-
-Examples: @lsr{contemporary,cluster@/.ly}.
-
-@refbugs
-
-Music expressions like @code{<< @{ g8 e8 @} a4 >>} are not printed
-accurately. Use @code{<g a>8 <e a>8} instead.
-
-
@anchor{Special noteheads}
@unnumberedsubsubsec Special noteheads
This chapter explains how to use basic notation features.
@menu
-* Polyphony::
* Staff notation::
* Connecting notes::
* Expressive marks old::
-* Repeats::
@end menu
-
-@node Polyphony
-@section Polyphony
-
-Polyphony in music refers to having more than one voice occurring in
-a piece of music. Polyphony in LilyPond refers to having more than
-one voice on the same staff.
-
-@menu
-* Chords::
-* Stems::
-* Basic polyphony::
-* Explicitly instantiating voices::
-* Collision Resolution::
-@end menu
-
-
-@anchor{Chords}
-@unnumberedsubsubsec Chords
-
-@cindex Chords
-
-A chord is formed by a enclosing a set of pitches between @code{<}
-and @code{>}. A chord may be followed by a duration, and a set of
-articulations, just like simple notes
-
-@lilypond[verbatim,ragged-right,fragment,quote,relative=1]
-<c e g>4 <c>8
-@end lilypond
-
-For more information about chords, see @ref{Chord names}.
-
-
-@c I don't like having this here, but I can't think of
-@c anywhere else to put it. :( -gp
-@anchor{Stems}
-@unnumberedsubsubsec Stems
-
-Whenever a note is found, a @internalsref{Stem} object is created
-automatically. For whole notes and rests, they are also created but
-made invisible.
-
-@refcommands
-
-@funindex \stemUp
-@code{\stemUp},
-@funindex \stemDown
-@code{\stemDown},
-@funindex \stemNeutral
-@code{\stemNeutral}.
-
-
-@commonprop
-
-To change the direction of stems in the middle of the staff, use
-
-@lilypond[quote,ragged-right,fragment,relative=2,verbatim]
-a4 b c b
-\override Stem #'neutral-direction = #up
-a4 b c b
-\override Stem #'neutral-direction = #down
-a4 b c b
-@end lilypond
-
-
-@anchor{Basic polyphony}
-@unnumberedsubsubsec Basic polyphony
-
-@cindex polyphony
-
-The easiest way to enter fragments with more than one voice on a staff
-is to enter each voice as a sequence (with @code{@{...@}}), and combine
-them simultaneously, separating the voices with @code{\\}
-
-@funindex \\
-
-@lilypond[quote,verbatim,fragment]
-\new Staff \relative c' {
- c16 d e f
- <<
- { g4 f e | d2 e2 } \\
- { r8 e4 d c8 ~ | c b16 a b8 g ~ g2 } \\
- { s2. | s4 b4 c2 }
- >>
-}
-@end lilypond
-
-The separator causes @internalsref{Voice} contexts@footnote{Polyphonic
-voices are sometimes called @q{layers} in other notation packages}
-@cindex layers
-to be instantiated. They bear the names @code{"1"}, @code{"2"}, etc. In
-each of these contexts, vertical direction of slurs, stems, etc., is set
-appropriately.
-
-These voices are all separate from the voice that contains the notes just
-outside the @code{<< \\ >>} construct. This should be noted when making
-changes at the voice level. This also means that slurs and ties cannot go
-into or out of a @code{<< \\ >>} construct. Conversely, parallel voices
-from separate @code{<< \\ >>} constructs on the same staff are the
-same voice. Here is the same example, with different noteheads and
-colors for each
-voice. Note that the change to the note-head style in the main voice does
-not affect
-the inside of the @code{<< \\ >>} constructs. Also, the change to the
-second
-voice in the first @code{<< \\ >>} construct is effective in the second
-@code{<< \\ >>}, and the voice is tied across the two constructs.
-
-@cindex note heads, styles
-
-@lilypond[quote,verbatim,fragment]
-\new Staff \relative c' {
- \override NoteHead #'style = #'cross
- \override NoteHead #'color = #red
- c16 d e f
- <<
- { g4 f e } \\
- { \override NoteHead #'style = #'triangle
- \override NoteHead #'color = #blue
- r8 e4 d c8 ~ }
- >> |
- <<
- { d2 e2 } \\
- { c8 b16 a b8 g ~ g2 } \\
- { \override NoteHead #'style = #'slash
- \override NoteHead #'color = #green
- s4 b4 c2 }
- >>
-}
-@end lilypond
-
-Polyphony does not change the relationship of notes within a
-@code{\relative @{ @}} block. Each note is calculated relative
-to the note immediately preceding it.
-
-@example
-\relative @{ noteA << noteB \\ noteC >> noteD @}
-@end example
-
-@code{noteC} is relative to @code{noteB}, not @code{noteA};
-@code{noteD} is relative to @code{noteC}, not @code{noteB} or
-@code{noteA}.
-
-
-@anchor{Explicitly instantiating voices}
-@unnumberedsubsubsec Explicitly instantiating voices
-
-@internalsref{Voice} contexts can also be instantiated manually
-inside a @code{<< >>} block to create polyphonic music, using
-@code{\voiceOne}, up to @code{\voiceFour} to assign stem directions
-and a horizontal shift for each part.
-
-Specifically,
-@example
-<< \upper \\ \lower >>
-@end example
-
-@noindent
-is equivalent to
-
-@example
-<<
- \new Voice = "1" @{ \voiceOne \upper @}
- \new Voice = "2" @{ \voiceTwo \lower @}
->>
-@end example
-
-The @code{\voiceXXX} commands set the direction of stems, slurs, ties,
-articulations, text annotations, augmentation dots of dotted
-notes, and fingerings. @code{\voiceOne} and @code{\voiceThree} make
-these objects point upwards, while @code{\voiceTwo} and @code{\voiceFour}
-make them point downwards.
-The command @code{\oneVoice} will revert back to the normal setting.
-
-An expression that appears directly inside a @code{<< >>} belongs to
-the main voice. This is useful when extra voices appear while the main
-voice is playing. Here is a more correct rendition of the example from
-the previous section. The crossed colored noteheads demonstrate that the main
-melody is now in a single voice context.
-
-@lilypond[quote,ragged-right,verbatim]
-\new Staff \relative c' {
- \override NoteHead #'style = #'cross
- \override NoteHead #'color = #red
- c16 d e f
- \voiceOne
- <<
- { g4 f e | d2 e2 }
- \new Voice="1" { \voiceTwo
- r8 e4 d c8 ~ | c8 b16 a b8 g ~ g2
- \oneVoice
- }
- \new Voice { \voiceThree
- s2. | s4 b4 c2
- \oneVoice
- }
- >>
- \oneVoice
-}
-@end lilypond
-
-The correct definition of the voices allows the melody to be slurred.
-@lilypond[quote,ragged-right,verbatim]
-\new Staff \relative c' {
- c16^( d e f
- \voiceOne
- <<
- { g4 f e | d2 e2) }
- \context Voice="1" { \voiceTwo
- r8 e4 d c8 ~ | c8 b16 a b8 g ~ g2
- \oneVoice
- }
- \new Voice { \voiceThree
- s2. s4 b4 c2
- \oneVoice
- }
- >>
- \oneVoice
-}
-@end lilypond
-
-Avoiding the @code{\\} separator also allows nesting polyphony
-constructs, which in some case might be a more natural way to typeset
-the music.
-
-@lilypond[quote,ragged-right,verbatim]
-\new Staff \relative c' {
- c16^( d e f
- \voiceOne
- <<
- { g4 f e | d2 e2) }
- \context Voice="1" { \voiceTwo
- r8 e4 d c8 ~ |
- <<
- {c8 b16 a b8 g ~ g2}
- \new Voice { \voiceThree
- s4 b4 c2
- \oneVoice
- }
- >>
- \oneVoice
- }
- >>
- \oneVoice
-}
-@end lilypond
-
-In some instances of complex polyphonic music, you may need additional
-voices to avoid collisions between notes. Additional voices are added
-by defining an identifier, as shown below:
-
-@lilypond[quote,verbatim,ragged-right,relative=2]
-voiceFive = #(context-spec-music (make-voice-props-set 4) 'Voice)
-
-\relative c''' <<
- { \voiceOne g4 ~ \stemDown g32[ f( es d c b a b64 )g] } \\
- { \voiceThree b4} \\
- { \voiceFive d,} \\
- { \voiceTwo g,}
->>
-@end lilypond
-
-
-@anchor{Collision Resolution}
-@unnumberedsubsubsec Collision Resolution
-
-Normally, note heads with a different number of dots are not merged, but
-when the object property @code{merge-differently-dotted} is set in
-the @internalsref{NoteCollision} object, they are merged:
-
-@lilypond[quote,verbatim,fragment,ragged-right,relative=2]
-\new Voice << {
- g8 g8
- \override Staff.NoteCollision
- #'merge-differently-dotted = ##t
- g8 g8
-} \\ { g8.[ f16] g8.[ f16] } >>
-@end lilypond
-
-Similarly, you can merge half note heads with eighth notes, by setting
-@code{merge-differently-headed}:
-
-@lilypond[quote,ragged-right,fragment,relative=2,verbatim]
-\new Voice << {
- c8 c4.
- \override Staff.NoteCollision
- #'merge-differently-headed = ##t
-c8 c4. } \\ { c2 c2 } >>
-@end lilypond
-
-@noindent
-@code{merge-differently-headed} and @code{merge-differently-dotted}
-only apply to opposing stem directions (ie. Voice 1 & 2).
-
-LilyPond also vertically shifts rests that are opposite of a stem,
-for example
-
-@lilypond[quote,ragged-right,fragment,verbatim]
-\new Voice << c''4 \\ r4 >>
-@end lilypond
-
-If three or more notes line up in the same column,
-@code{merge-differently-headed} cannot
-successfully complete the merge of the two notes that should be merged.
-To allow the merge to work properly, apply a @code{\shift} to the note that
-should not be merged. In the first measure of following example,
-@code{merge-differently-headed} does not work (the half-note head is
-solid). In the second measure, @code{\shiftOn} is applied to move the
-top @code{g} out of the column, and @code{merge-differently-headed}
-works properly.
-
-@lilypond[quote,ragged-right,fragment,verbatim,relative=2]
-\override Staff.NoteCollision #'merge-differently-headed = ##t
-<<
- { d=''2 g2 } \\
- { \oneVoice d=''8 c8 r4 e,8 c'8 r4 } \\
- { \voiceFour e,,2 e'2}
->>
-<<
- { d'=''2 \shiftOn g2 } \\
- { \oneVoice d=''8 c8 r4 e,8 c'8 r4 } \\
- { \voiceFour e,,2 e'2}
->>
-@end lilypond
-
-
-@refcommands
-
-@funindex \oneVoice
-@code{\oneVoice},
-@funindex \voiceOne
-@code{\voiceOne},
-@funindex \voiceTwo
-@code{\voiceTwo},
-@funindex \voiceThree
-@code{\voiceThree},
-@funindex \voiceFour
-@code{\voiceFour}.
-
-@funindex \shiftOn
-@code{\shiftOn},
-@funindex \shiftOnn
-@code{\shiftOnn},
-@funindex \shiftOnnn
-@code{\shiftOnnn},
-@funindex \shiftOff
-@code{\shiftOff}: these commands specify the
-degree to which chords of the current voice should be shifted.
-The outer voices (normally: voice one and
-two) have @code{\shiftOff}, while the inner voices (three and four)
-have @code{\shiftOn}. @code{\shiftOnn} and @code{\shiftOnnn} define
-further shift levels.
-
-When LilyPond cannot cope, the @code{force-hshift}
-property of the @internalsref{NoteColumn} object and pitched rests can
-be used to override typesetting decisions.
-
-@lilypond[quote,verbatim,ragged-right]
-\relative <<
-{
- <d g>
- <d g>
-} \\ {
- <b f'>
- \once \override NoteColumn #'force-hshift = #1.7
- <b f'>
-} >>
-@end lilypond
-
-
-@seealso
-
-Program reference: the objects responsible for resolving collisions are
-@internalsref{NoteCollision} and @internalsref{RestCollision}.
-
-
-@refbugs
-
-When using @code{merge-differently-headed} with an upstem eighth or a
-shorter note, and a downstem half note, the eighth note gets the wrong
-offset.
-
-There is no support for clusters where the same note occurs with
-different accidentals in the same chord. In this case, it is
-recommended to use enharmonic transcription, or to use special cluster
-notation (see @ref{Clusters}).
-
-
-
@node Staff notation
@section Staff notation
Examples: @lsrdir{staff}
-@anchor{Writing music in parallel}
-@unnumberedsubsubsec Writing music in parallel
-
-@cindex Writing music in parallel
-@cindex Interleaved music
-
-Music for multiple parts can be interleaved
-
-@lilypond[quote,fragment,verbatim]
-\parallelMusic #'(voiceA voiceB) {
- r8 g'16[ c''] e''[ g' c'' e''] r8 g'16[ c''] e''[ g' c'' e''] |
- c'2 c'2 |
- r8 a'16[ d''] f''[ a' d'' f''] r8 a'16[ d''] f''[ a' d'' f''] |
- c'2 c'2 |
-}
-\new StaffGroup <<
- \new Staff \new Voice \voiceA
- \new Staff \new Voice \voiceB
->>
-@end lilypond
-
-This works quite well for piano music
-
-@lilypond[quote,verbatim]
-music = {
- \key c \major
- \time 4/4
- \parallelMusic #'(voiceA voiceB voiceC voiceD) {
- % Bar 1
- r8 g'16[ c''] e''[ g' c'' e''] r8 g'16[ c''] e''[ g' c''
-e''] |
- c'2 c'2 |
- r8 a16[ d'] f'[ a d' f'] r8 a16[ d'] f'[ a d' f'] |
- c2 c2 |
-
- % Bar 2
- a'8 b' c'' d'' e'' f'' g'' a'' |
- d'4 d' d' d' |
- c16 d e f d e f g e f g a f g a b |
- a,4 a,4 a,4 a,4 |
-
- % Bar 3 ...
- }
-}
-
-\score {
- \new PianoStaff <<
- \music
- \new Staff <<
- \voiceA \\
- \voiceB
- >>
- \new Staff {
- \clef bass
- <<
- \voiceC \\
- \voiceD
- >>
- }
- >>
-}
-@end lilypond
-
-
@node Connecting notes
@section Connecting notes
-@node Repeats
-@section Repeats
-
-Repetition is a central concept in music, and multiple notations exist
-for repetitions.
-
-@menu
-* Repeat types::
-* Repeat syntax::
-* Repeats and MIDI::
-* Manual repeat commands::
-* Tremolo repeats::
-* Tremolo subdivisions::
-* Measure repeats::
-@end menu
-
-
-@anchor{Repeat types}
-@unnumberedsubsubsec Repeat types
-
-@cindex repeats
-
-The following types of repetition are supported
-
-@table @code
-@item unfold
-Repeated music is fully written (played) out. This is useful when
-entering repetitious music. This is the only kind of repeat that
-is included in MIDI output.
-
-@item volta
-Repeats are not written out, but alternative endings (volte) are
-printed, left to right with brackets. This is the standard notation
-for repeats with alternatives. These are not played in MIDI output by
-default.
-
-
-@item tremolo
-Make tremolo beams. These are not played in MIDI output by default.
-
-@item percent
-Make beat or measure repeats. These look like percent signs. These
-are not played in MIDI output by default. Percent repeats must be
-declared within a @code{Voice} context.
-
-@end table
-
-
-@anchor{Repeat syntax}
-@unnumberedsubsubsec Repeat syntax
-
-@cindex volta
-@cindex prima volta
-@cindex seconda volta
-@funindex \repeat
-
-LilyPond has one syntactic construct for specifying different types of
-repeats. The syntax is
-
-@example
-\repeat @var{variant} @var{repeatcount} @var{repeatbody}
-@end example
-
-If you have alternative endings, you may add
-@funindex \alternative
-@example
-\alternative @{
- @var{alternative1}
- @var{alternative2}
- @var{alternative3}
- @dots{}
-@}
-@end example
-
-@noindent
-where each @var{alternative} is a music expression. If you do not
-give enough alternatives for all of the repeats, the first alternative
-is assumed to be played more than once.
-
-Standard repeats are used like this
-
-@lilypond[quote,ragged-right,fragment,verbatim,relative=2]
-c1
-\repeat volta 2 { c4 d e f }
-\repeat volta 2 { f e d c }
-@end lilypond
-
-With alternative endings
-
-@lilypond[quote,ragged-right,fragment,verbatim,relative=2]
-c1
-\repeat volta 2 {c4 d e f}
-\alternative { {d2 d} {f f,} }
-@end lilypond
-
-Repeats with upbeats may be created.
-
-@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. } }
-}
-@end lilypond
-
-@noindent
-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. } }
-}
-@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} {f\repeatTie f,} }
-@end lilypond
-
-It is possible to shorten volta brackets
-by setting @code{voltaSpannerDuration}. In the next example, the
-bracket only lasts one measure, which is a duration of 3/4.
-
-@lilypond[verbatim,ragged-right,quote]
-\relative c''{
- \time 3/4
- c c c
- \set Score.voltaSpannerDuration = #(ly:make-moment 3 4)
- \repeat volta 5 { d d d }
- \alternative { { e e e f f f }
- { g g g } }
-}
-@end lilypond
-
-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
-@example
-@dots{} \bar "||:" \break
-\repeat volta 2 @{ @dots{}
-@end example
-see @ref{Bar lines} for more information.
-
-@seealso
-
-Program reference: @internalsref{VoltaBracket},
-@internalsref{RepeatedMusic},
-@internalsref{VoltaRepeatedMusic}, and
-@internalsref{UnfoldedRepeatedMusic}.
-
-Examples:
-
-Brackets for the repeat are normally only printed over the topmost
-staff. This can be adjusted by moving @code{Volta_engraver} to the
-Staff context where you want the brackets to appear;
-see @ref{Modifying context plug-ins} and
-
-@lsr{repeats,volta@/-multi@/-staff@/.ly}.
-
-
-@refbugs
-
-@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 or ties are also not repeated.
-
-
-@anchor{Repeats and MIDI}
-@unnumberedsubsubsec Repeats and MIDI
-
-@cindex expanding repeats
-@funindex \unfoldRepeats
-
-With a little bit of tweaking, all types of repeats can be present
-in the MIDI output. This is achieved by applying the
-@code{\unfoldRepeats} music function. This function changes all
-repeats to unfold repeats.
-
-@lilypond[quote,verbatim,fragment,line-width=8.0\cm]
-\unfoldRepeats {
- \repeat tremolo 8 {c'32 e' }
- \repeat percent 2 { c''8 d'' }
- \repeat volta 2 {c'4 d' e' f'}
- \alternative {
- { g' a' a' g' }
- {f' e' d' c' }
- }
-}
-\bar "|."
-@end lilypond
-
-When creating a score file using @code{\unfoldRepeats} for MIDI,
-it is necessary to make two @code{\score} blocks: one for MIDI (with
-unfolded repeats) and one for notation (with volta, tremolo, and
-percent repeats). For example,
-
-@example
-\score @{
- @var{..music..}
- \layout @{ .. @}
-@}
-\score @{
- \unfoldRepeats @var{..music..}
- \midi @{ .. @}
-@}
-@end example
-
-
-@anchor{Manual repeat commands}
-@unnumberedsubsubsec Manual repeat commands
-
-@funindex repeatCommands
-
-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}
-Print a @code{|:} bar line.
-
-@item @code{end-repeat}
-Print a @code{:|} bar line.
-
-@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{Text markup}. Do not
-forget to change the font, as the default number font does not contain
-alphabetic characters;
-
-@item @code{(volta #f)}
-Stop a running volta bracket.
-@end table
-
-@lilypond[quote,ragged-right,verbatim,fragment,relative=2]
-c4
- \set Score.repeatCommands = #'((volta "93") end-repeat)
-c4 c4
- \set Score.repeatCommands = #'((volta #f))
-c4 c4
-@end lilypond
-
-
-@seealso
-
-Program reference: @internalsref{VoltaBracket},
-@internalsref{RepeatedMusic},
-@internalsref{VoltaRepeatedMusic}, and
-@internalsref{UnfoldedRepeatedMusic}.
-
-
-@anchor{Tremolo repeats}
-@unnumberedsubsubsec Tremolo repeats
-
-@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 }
-}
-@end lilypond
-
-Tremolo marks can also be put on a single note. In this case, the
-note should not be surrounded by braces.
-@lilypond[quote,verbatim,ragged-right]
-\repeat tremolo 4 c'16
-@end lilypond
-
-Similar output is obtained using the tremolo subdivision, described in
-@ref{Tremolo subdivisions}.
-
-
-@seealso
-
-In this manual: @ref{Tremolo subdivisions}, @ref{Repeats}.
-
-Program reference: @internalsref{Beam}, @internalsref{StemTremolo}.
-
-
-@anchor{Tremolo subdivisions}
-@unnumberedsubsubsec Tremolo subdivisions
-
-@cindex tremolo marks
-@funindex tremoloFlags
-
-Tremolo marks can be printed on a single note 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{length} 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
-
-
-@refbugs
-
-Tremolos entered in this way do not carry over into the MIDI output.
-
-
-@seealso
-
-In this manual: @ref{Tremolo repeats}.
-
-Elsewhere: @internalsref{StemTremolo}.
-
-
-@anchor{Measure repeats}
-@unnumberedsubsubsec Measure repeats
-
-@cindex percent repeats
-@cindex measure repeats
-
-In the @code{percent} style, a note pattern can be repeated. It is
-printed once, and then 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.
-
-@lilypond[quote,verbatim,ragged-right]
-\new Voice \relative c' {
- \repeat percent 4 { c4 }
- \repeat percent 2 { c2 es2 f4 fis4 g4 c4 }
-}
-@end lilypond
-
-Measure repeats of more than 2 measures get a counter, if you switch
-on the @code{countPercentRepeats} property,
-
-@lilypond[relative=2,fragment,quote,verbatim,ragged-right]
-\new Voice {
-\set countPercentRepeats = ##t
- \repeat percent 4 { c1 }
-}
-@end lilypond
-
-
-
-Isolated percents can also be printed. This is done by putting a
-multi-measure rest with a different print function,
-
-@lilypond[fragment,verbatim,quote]
-\override MultiMeasureRest #'stencil
- = #ly:multi-measure-rest::percent
-R1
-@end lilypond
-
-
-
-
-@seealso
-
-Program reference: @internalsref{RepeatSlash},
-@internalsref{PercentRepeat}, @internalsref{DoublePercentRepeat},
-@internalsref{DoublePercentRepeatCounter},
-@internalsref{PercentRepeatCounter},
-@internalsref{PercentRepeatedMusic}.
-
-
--- /dev/null
+@c -*- coding: utf-8; mode: texinfo; -*-
+
+@node Simultaneous notes
+@section Simultaneous notes
+
+Polyphony in music refers to having more than one voice occurring in
+a piece of music. Polyphony in LilyPond refers to having more than
+one voice on the same staff.
+
+@menu
+* Single voice::
+* Multiple voices::
+@end menu
+
+
+@node Single voice
+@subsection Single voice
+
+@anchor{Chords}
+@unnumberedsubsubsec Chords
+
+@cindex Chords
+
+A chord is formed by a enclosing a set of pitches between @code{<}
+and @code{>}. A chord may be followed by a duration, and a set of
+articulations, just like simple notes
+
+@lilypond[verbatim,ragged-right,fragment,quote,relative=1]
+<c e g>4 <c>8
+@end lilypond
+
+For more information about chords, see @ref{Chord names}.
+
+
+@c I don't like having this here, but I can't think of
+@c anywhere else to put it. :( -gp
+@anchor{Stems}
+@unnumberedsubsubsec Stems
+
+Whenever a note is found, a @internalsref{Stem} object is created
+automatically. For whole notes and rests, they are also created but
+made invisible.
+
+@refcommands
+
+@funindex \stemUp
+@code{\stemUp},
+@funindex \stemDown
+@code{\stemDown},
+@funindex \stemNeutral
+@code{\stemNeutral}.
+
+
+@commonprop
+
+To change the direction of stems in the middle of the staff, use
+
+@lilypond[quote,ragged-right,fragment,relative=2,verbatim]
+a4 b c b
+\override Stem #'neutral-direction = #up
+a4 b c b
+\override Stem #'neutral-direction = #down
+a4 b c b
+@end lilypond
+
+
+@anchor{Clusters}
+@unnumberedsubsubsec Clusters
+
+@cindex cluster
+
+A cluster indicates a continuous range of pitches to be played. They
+can be denoted as the envelope of a set of notes. They are entered by
+applying the function @code{makeClusters} to a sequence of
+chords, e.g.,
+@lilypond[quote,ragged-right,relative=2,fragment,verbatim]
+\makeClusters { <c e > <b f'> }
+@end lilypond
+
+Ordinary notes and clusters can be put together in the same staff,
+even simultaneously. In such a case no attempt is made to
+automatically avoid collisions between ordinary notes and clusters.
+
+@seealso
+
+Program reference: @internalsref{ClusterSpanner},
+@internalsref{ClusterSpannerBeacon},
+@internalsref{Cluster_spanner_engraver}.
+
+Examples: @lsr{contemporary,cluster@/.ly}.
+
+@refbugs
+
+Music expressions like @code{<< @{ g8 e8 @} a4 >>} are not printed
+accurately. Use @code{<g a>8 <e a>8} instead.
+
+
+
+@node Multiple voices
+@subsection Multiple voices
+
+@anchor{Basic polyphony}
+@unnumberedsubsubsec Basic polyphony
+
+@cindex polyphony
+
+The easiest way to enter fragments with more than one voice on a staff
+is to enter each voice as a sequence (with @code{@{...@}}), and combine
+them simultaneously, separating the voices with @code{\\}
+
+@funindex \\
+
+@lilypond[quote,verbatim,fragment]
+\new Staff \relative c' {
+ c16 d e f
+ <<
+ { g4 f e | d2 e2 } \\
+ { r8 e4 d c8 ~ | c b16 a b8 g ~ g2 } \\
+ { s2. | s4 b4 c2 }
+ >>
+}
+@end lilypond
+
+The separator causes @internalsref{Voice} contexts@footnote{Polyphonic
+voices are sometimes called @q{layers} in other notation packages}
+@cindex layers
+to be instantiated. They bear the names @code{"1"}, @code{"2"}, etc. In
+each of these contexts, vertical direction of slurs, stems, etc., is set
+appropriately.
+
+These voices are all separate from the voice that contains the notes just
+outside the @code{<< \\ >>} construct. This should be noted when making
+changes at the voice level. This also means that slurs and ties cannot go
+into or out of a @code{<< \\ >>} construct. Conversely, parallel voices
+from separate @code{<< \\ >>} constructs on the same staff are the
+same voice. Here is the same example, with different noteheads and
+colors for each
+voice. Note that the change to the note-head style in the main voice does
+not affect
+the inside of the @code{<< \\ >>} constructs. Also, the change to the
+second
+voice in the first @code{<< \\ >>} construct is effective in the second
+@code{<< \\ >>}, and the voice is tied across the two constructs.
+
+@cindex note heads, styles
+
+@lilypond[quote,verbatim,fragment]
+\new Staff \relative c' {
+ \override NoteHead #'style = #'cross
+ \override NoteHead #'color = #red
+ c16 d e f
+ <<
+ { g4 f e } \\
+ { \override NoteHead #'style = #'triangle
+ \override NoteHead #'color = #blue
+ r8 e4 d c8 ~ }
+ >> |
+ <<
+ { d2 e2 } \\
+ { c8 b16 a b8 g ~ g2 } \\
+ { \override NoteHead #'style = #'slash
+ \override NoteHead #'color = #green
+ s4 b4 c2 }
+ >>
+}
+@end lilypond
+
+Polyphony does not change the relationship of notes within a
+@code{\relative @{ @}} block. Each note is calculated relative
+to the note immediately preceding it.
+
+@example
+\relative @{ noteA << noteB \\ noteC >> noteD @}
+@end example
+
+@code{noteC} is relative to @code{noteB}, not @code{noteA};
+@code{noteD} is relative to @code{noteC}, not @code{noteB} or
+@code{noteA}.
+
+
+@anchor{Explicitly instantiating voices}
+@unnumberedsubsubsec Explicitly instantiating voices
+
+@internalsref{Voice} contexts can also be instantiated manually
+inside a @code{<< >>} block to create polyphonic music, using
+@code{\voiceOne}, up to @code{\voiceFour} to assign stem directions
+and a horizontal shift for each part.
+
+Specifically,
+@example
+<< \upper \\ \lower >>
+@end example
+
+@noindent
+is equivalent to
+
+@example
+<<
+ \new Voice = "1" @{ \voiceOne \upper @}
+ \new Voice = "2" @{ \voiceTwo \lower @}
+>>
+@end example
+
+The @code{\voiceXXX} commands set the direction of stems, slurs, ties,
+articulations, text annotations, augmentation dots of dotted
+notes, and fingerings. @code{\voiceOne} and @code{\voiceThree} make
+these objects point upwards, while @code{\voiceTwo} and @code{\voiceFour}
+make them point downwards.
+The command @code{\oneVoice} will revert back to the normal setting.
+
+An expression that appears directly inside a @code{<< >>} belongs to
+the main voice. This is useful when extra voices appear while the main
+voice is playing. Here is a more correct rendition of the example from
+the previous section. The crossed colored noteheads demonstrate that the main
+melody is now in a single voice context.
+
+@lilypond[quote,ragged-right,verbatim]
+\new Staff \relative c' {
+ \override NoteHead #'style = #'cross
+ \override NoteHead #'color = #red
+ c16 d e f
+ \voiceOne
+ <<
+ { g4 f e | d2 e2 }
+ \new Voice="1" { \voiceTwo
+ r8 e4 d c8 ~ | c8 b16 a b8 g ~ g2
+ \oneVoice
+ }
+ \new Voice { \voiceThree
+ s2. | s4 b4 c2
+ \oneVoice
+ }
+ >>
+ \oneVoice
+}
+@end lilypond
+
+The correct definition of the voices allows the melody to be slurred.
+@lilypond[quote,ragged-right,verbatim]
+\new Staff \relative c' {
+ c16^( d e f
+ \voiceOne
+ <<
+ { g4 f e | d2 e2) }
+ \context Voice="1" { \voiceTwo
+ r8 e4 d c8 ~ | c8 b16 a b8 g ~ g2
+ \oneVoice
+ }
+ \new Voice { \voiceThree
+ s2. s4 b4 c2
+ \oneVoice
+ }
+ >>
+ \oneVoice
+}
+@end lilypond
+
+Avoiding the @code{\\} separator also allows nesting polyphony
+constructs, which in some case might be a more natural way to typeset
+the music.
+
+@lilypond[quote,ragged-right,verbatim]
+\new Staff \relative c' {
+ c16^( d e f
+ \voiceOne
+ <<
+ { g4 f e | d2 e2) }
+ \context Voice="1" { \voiceTwo
+ r8 e4 d c8 ~ |
+ <<
+ {c8 b16 a b8 g ~ g2}
+ \new Voice { \voiceThree
+ s4 b4 c2
+ \oneVoice
+ }
+ >>
+ \oneVoice
+ }
+ >>
+ \oneVoice
+}
+@end lilypond
+
+In some instances of complex polyphonic music, you may need additional
+voices to avoid collisions between notes. Additional voices are added
+by defining an identifier, as shown below:
+
+@lilypond[quote,verbatim,ragged-right,relative=2]
+voiceFive = #(context-spec-music (make-voice-props-set 4) 'Voice)
+
+\relative c''' <<
+ { \voiceOne g4 ~ \stemDown g32[ f( es d c b a b64 )g] } \\
+ { \voiceThree b4} \\
+ { \voiceFive d,} \\
+ { \voiceTwo g,}
+>>
+@end lilypond
+
+
+@anchor{Collision Resolution}
+@unnumberedsubsubsec Collision Resolution
+
+Normally, note heads with a different number of dots are not merged, but
+when the object property @code{merge-differently-dotted} is set in
+the @internalsref{NoteCollision} object, they are merged:
+
+@lilypond[quote,verbatim,fragment,ragged-right,relative=2]
+\new Voice << {
+ g8 g8
+ \override Staff.NoteCollision
+ #'merge-differently-dotted = ##t
+ g8 g8
+} \\ { g8.[ f16] g8.[ f16] } >>
+@end lilypond
+
+Similarly, you can merge half note heads with eighth notes, by setting
+@code{merge-differently-headed}:
+
+@lilypond[quote,ragged-right,fragment,relative=2,verbatim]
+\new Voice << {
+ c8 c4.
+ \override Staff.NoteCollision
+ #'merge-differently-headed = ##t
+c8 c4. } \\ { c2 c2 } >>
+@end lilypond
+
+@noindent
+@code{merge-differently-headed} and @code{merge-differently-dotted}
+only apply to opposing stem directions (ie. Voice 1 & 2).
+
+LilyPond also vertically shifts rests that are opposite of a stem,
+for example
+
+@lilypond[quote,ragged-right,fragment,verbatim]
+\new Voice << c''4 \\ r4 >>
+@end lilypond
+
+If three or more notes line up in the same column,
+@code{merge-differently-headed} cannot
+successfully complete the merge of the two notes that should be merged.
+To allow the merge to work properly, apply a @code{\shift} to the note that
+should not be merged. In the first measure of following example,
+@code{merge-differently-headed} does not work (the half-note head is
+solid). In the second measure, @code{\shiftOn} is applied to move the
+top @code{g} out of the column, and @code{merge-differently-headed}
+works properly.
+
+@lilypond[quote,ragged-right,fragment,verbatim,relative=2]
+\override Staff.NoteCollision #'merge-differently-headed = ##t
+<<
+ { d=''2 g2 } \\
+ { \oneVoice d=''8 c8 r4 e,8 c'8 r4 } \\
+ { \voiceFour e,,2 e'2}
+>>
+<<
+ { d'=''2 \shiftOn g2 } \\
+ { \oneVoice d=''8 c8 r4 e,8 c'8 r4 } \\
+ { \voiceFour e,,2 e'2}
+>>
+@end lilypond
+
+
+@refcommands
+
+@funindex \oneVoice
+@code{\oneVoice},
+@funindex \voiceOne
+@code{\voiceOne},
+@funindex \voiceTwo
+@code{\voiceTwo},
+@funindex \voiceThree
+@code{\voiceThree},
+@funindex \voiceFour
+@code{\voiceFour}.
+
+@funindex \shiftOn
+@code{\shiftOn},
+@funindex \shiftOnn
+@code{\shiftOnn},
+@funindex \shiftOnnn
+@code{\shiftOnnn},
+@funindex \shiftOff
+@code{\shiftOff}: these commands specify the
+degree to which chords of the current voice should be shifted.
+The outer voices (normally: voice one and
+two) have @code{\shiftOff}, while the inner voices (three and four)
+have @code{\shiftOn}. @code{\shiftOnn} and @code{\shiftOnnn} define
+further shift levels.
+
+When LilyPond cannot cope, the @code{force-hshift}
+property of the @internalsref{NoteColumn} object and pitched rests can
+be used to override typesetting decisions.
+
+@lilypond[quote,verbatim,ragged-right]
+\relative <<
+{
+ <d g>
+ <d g>
+} \\ {
+ <b f'>
+ \once \override NoteColumn #'force-hshift = #1.7
+ <b f'>
+} >>
+@end lilypond
+
+
+@seealso
+
+Program reference: the objects responsible for resolving collisions are
+@internalsref{NoteCollision} and @internalsref{RestCollision}.
+
+
+@refbugs
+
+When using @code{merge-differently-headed} with an upstem eighth or a
+shorter note, and a downstem half note, the eighth note gets the wrong
+offset.
+
+There is no support for clusters where the same note occurs with
+different accidentals in the same chord. In this case, it is
+recommended to use enharmonic transcription, or to use special cluster
+notation (see @ref{Clusters}).
+
+
+@anchor{Automatic part combining}
+@unnumberedsubsubsec Automatic part combining
+@cindex automatic part combining
+@cindex part combiner
+
+Automatic part combining is used to merge two parts of music onto a
+staff. It is aimed at typesetting orchestral scores. When the two
+parts are identical for a period of time, only one is shown. In
+places where the two parts differ, they are typeset as separate
+voices, and stem directions are set automatically. Also, solo and
+@emph{a due} parts are identified and can be marked.
+
+The syntax for part combining is
+
+@example
+\partcombine @var{musicexpr1} @var{musicexpr2}
+@end example
+
+
+The following example demonstrates the basic functionality of the part
+combiner: putting parts on one staff, and setting stem directions and
+polyphony
+
+@lilypond[quote,verbatim,ragged-right,fragment]
+\new Staff \partcombine
+ \relative g' { g g a( b) c c r r }
+ \relative g' { g g r4 r e e g g }
+@end lilypond
+
+The first @code{g} appears only once, although it was
+specified twice (once in each part). Stem, slur, and tie directions are
+set automatically, depending whether there is a solo or unisono. The
+first part (with context called @code{one}) always gets up stems, and
+@q{Solo}, while the second (called @code{two}) always gets down stems and
+@q{Solo II}.
+
+If you just want the merging parts, and not the textual markings, you
+may set the property @code{printPartCombineTexts} to false
+
+@lilypond[quote,verbatim,ragged-right,fragment,relative=2]
+\new Staff <<
+ \set Staff.printPartCombineTexts = ##f
+ \partcombine
+ \relative g' { g a( b) r }
+ \relative g' { g r4 r f }
+>>
+@end lilypond
+
+To change the text that is printed for solos or merging, you may
+set the @code{soloText}, @code{soloIIText}, and @code{aDueText}
+properties.
+
+@lilypond[quote,verbatim,ragged-right,fragment,relative=2]
+\new Staff <<
+ \set Score.soloText = #"ichi"
+ \set Score.soloIIText = #"ni"
+ \set Score.aDueText = #"tachi"
+ \partcombine
+ \relative g' { g4 g a( b) r }
+ \relative g' { g4 g r r f }
+>>
+@end lilypond
+
+Both arguments to @code{\partcombine} will be interpreted as
+@internalsref{Voice} contexts. If using relative octaves,
+@code{\relative} should be specified for both music expressions, i.e.,
+
+@example
+\partcombine
+ \relative @dots{} @var{musicexpr1}
+ \relative @dots{} @var{musicexpr2}
+@end example
+
+@noindent
+A @code{\relative} section that is outside of @code{\partcombine} has
+no effect on the pitches of @var{musicexpr1} and @var{musicexpr2}.
+
+@seealso
+
+Program reference: @internalsref{PartCombineMusic}.
+
+@refbugs
+
+When @code{printPartCombineTexts} is set, when the two voices play the
+same notes on and off, the part combiner may typeset @code{a2} more
+than once in a measure.
+
+@code{\partcombine} cannot be inside @code{\times}.
+
+@code{\partcombine} cannot be inside @code{\relative}.
+
+Internally, the @code{\partcombine} interprets both arguments as
+@code{Voice}s named @code{one} and @code{two}, and then decides when
+the parts can be combined. Consequently, if the arguments switch to
+differently named @internalsref{Voice} contexts, the events in those
+will be ignored.
+
+
+@anchor{Writing music in parallel}
+@unnumberedsubsubsec Writing music in parallel
+
+@cindex Writing music in parallel
+@cindex Interleaved music
+
+Music for multiple parts can be interleaved
+
+@lilypond[quote,fragment,verbatim]
+\parallelMusic #'(voiceA voiceB) {
+ r8 g'16[ c''] e''[ g' c'' e''] r8 g'16[ c''] e''[ g' c'' e''] |
+ c'2 c'2 |
+ r8 a'16[ d''] f''[ a' d'' f''] r8 a'16[ d''] f''[ a' d'' f''] |
+ c'2 c'2 |
+}
+\new StaffGroup <<
+ \new Staff \new Voice \voiceA
+ \new Staff \new Voice \voiceB
+>>
+@end lilypond
+
+This works quite well for piano music
+
+@lilypond[quote,verbatim]
+music = {
+ \key c \major
+ \time 4/4
+ \parallelMusic #'(voiceA voiceB voiceC voiceD) {
+ % Bar 1
+ r8 g'16[ c''] e''[ g' c'' e''] r8 g'16[ c''] e''[ g' c''
+e''] |
+ c'2 c'2 |
+ r8 a16[ d'] f'[ a d' f'] r8 a16[ d'] f'[ a d' f'] |
+ c2 c2 |
+
+ % Bar 2
+ a'8 b' c'' d'' e'' f'' g'' a'' |
+ d'4 d' d' d' |
+ c16 d e f d e f g e f g a f g a b |
+ a,4 a,4 a,4 a,4 |
+
+ % Bar 3 ...
+ }
+}
+
+\score {
+ \new PianoStaff <<
+ \music
+ \new Staff <<
+ \voiceA \\
+ \voiceB
+ >>
+ \new Staff {
+ \clef bass
+ <<
+ \voiceC \\
+ \voiceD
+ >>
+ }
+ >>
+}
+@end lilypond
+
+
+