Guide, node Updating translation committishes..
@end ignore
-@c \version "2.14.0"
+@c \version "2.19.21"
@node Simultaneous notes
@section Simultaneous notes
-@lilypondfile[quote]{simultaneous-headword.ly}
+@lilypondfile[quote,ragged-right,line-width=16\cm]{simultaneous-headword.ly}
Polyphony in music refers to having more than one voice occurring
in a piece of music. Polyphony in LilyPond refers to having more
notes.
@lilypond[verbatim,quote,relative=2]
-<a c e>1\fermata <a c e>2-> <f a c e>4\prall <a c>8.^| <g c e>16-.
+<a c e>1\fermata <a c e>2-> <f a c e>4\prall <a c>8.^! <g c e>16-.
@end lilypond
The notes within the chord themselves can also be followed by articulation
and ornamentation.
@lilypond[verbatim,quote,relative=2]
-<a c\prall e>1 <a-> c-^ e>2 <f-. a c-. e-.>4 <a-+ c-->8. <g\fermata c e\turn>16
+<a c\prall e>1 <a-> c-^ e>2 <f-. a c-. e-.>4
+<a-+ c-->8. <g\fermata c e\turn>16
@end lilypond
However some notation, such as dynamics, hairpins and slurs must be
they will not print.
@lilypond[verbatim,quote,relative=2]
-<a\f c( e>1 <a c) e>\f <a\< c e>( <a\! c e>) <a c e>\< <a c e> <a c e>\!
+<a\f c( e>1 <a c) e>\f <a\< c e>( <a\! c e>)
+<a c e>\< <a c e> <a c e>\!
+@end lilypond
+
+@cindex chords, empty
+@cindex placeholder events
+
+A chord acts merely as a container for its notes, its articulations and
+other attached elements. Consequently, a chord without notes inside
+does not actually have a duration. Any attached articulations will
+happen at the same musical time as the next following note or chord and
+be combined with them (for more complex possibilities of combining such
+elements, see @ref{Simultaneous expressions}):
+
+@lilypond[verbatim,quote,relative=2]
+\grace { g8( a b }
+<> ) \p \< -. -\markup \italic "sempre staccato"
+\repeat unfold 4 { c4 e } c1\f
@end lilypond
@cindex relative pitch, chords
@end itemize
+
@node Chord repetition
@unnumberedsubsubsec Chord repetition
-@cindex Chord, repetition
+@cindex chord, repetition
@cindex repetition, using @code{q}
+@cindex @code{q}, chord repetition
In order to save typing, a shortcut can be used to repeat the preceding
chord. The chord repetition symbol is @code{q}:
pitches of the previous chord are duplicated.
@lilypond[verbatim,quote,relative=2]
-<a c e>1\p^"text" q2\<( q8)[-| q8.]\! q16-1-2-3 q8\prall
+<a c e>1\p^"text" q2\<( q8)[-! q8.]\! q16-1-2-3 q8\prall
@end lilypond
The chord repetition symbol always remembers the last instance of
other non-chorded notes or rests have been added since.
@lilypond[verbatim,quote,relative=2]
-<a c e>1 c4 q2 r8 q8
+<a c e>1 c'4 q2 r8 q8 |
+q2 c, |
@end lilypond
However, the chord repetition symbol does not retain any dynamics,
-articulation or ornamentation within, or attached to the previous chord.
+articulation or ornamentation within, or attached to, the previous
+chord.
@lilypond[verbatim,quote,relative=2]
-<a-. c\prall e>1\sfz c4 q2 r8 q8
+<a-. c\prall e>1\sfz c'4 q2 r8 q8 |
+q2 c, |
+@end lilypond
+
+To have some of them retained, the @code{\chordRepeats} function can be
+be called explicitly with an extra argument specifying a list of
+@var{event types} to keep unless events of that type are already
+present on the @code{q} chord itself.
+
+@lilypond[verbatim,quote]
+\relative {
+ \chordRepeats #'(articulation-event)
+ { <a'-. c\prall e>1\sfz c'4 q2 r8 q8-. } |
+ q2 c, |
+}
+@end lilypond
+
+Here using @code{\chordRepeats} inside of a @code{\relative} construction
+produces unexpected results: once chord events have been expanded, they
+are indistinguishable from having been entered as regular chords, making
+@code{\relative} assign an octave based on their current context.
+
+Since nested instances of @code{\relative} don't affect one another,
+another @code{\relative} inside of @code{\chordRepeats} can be used for
+establishing the octave relations before expanding the repeat chords.
+In that case, the whole content of the inner @code{\relative} does not
+affect the outer one; hence the different octave entry of the final note
+in this example.
+
+@c Without \new Voice, implicit voice creation does the dumbest thing.
+@lilypond[verbatim,quote]
+\new Voice
+\relative c'' {
+ \chordRepeats #'(articulation-event)
+ \relative
+ { <a'-. c\prall e>1\sfz c'4 q2 r8 q8-. } |
+ q2 c |
+}
@end lilypond
+Interactions with @code{\relative} occur only with explicit calls of
+@code{\chordRepeats}: the implicit expansion at the start of typesetting
+is done at a time where all instances of @code{\relative} have already
+been processed.
+
@seealso
Notation Reference:
@ref{Chord notation},
@end lilypond
This can be useful if the simultaneous sections have identical
-rhythms, but attempts to attach notes with different durations
-to the same stem will cause errors.
+rhythms, but attempts to attach notes with different durations to
+the same stem will cause errors. Notes, articulations, and property
+changes in a @emph{single} @samp{Voice} are collected and engraved in
+musical order:
+
+@lilypond[quote,verbatim,relative=2]
+<a c>4-. <>-. << c a >> << { c-. <c a> } { a s-. } >>
+@end lilypond
+
+Multiple stems or beams or different note durations or properties at
+the same musical time require the use of multiple voices.
The following example shows how simultaneous expressions can
generate multiple staves implicitly:
<< { a4 b g2 } { d4 g2 c,4 } >>
@end lilypond
-Here different rhythms cause no problems.
+Here different rhythms cause no problems because they are
+interpreted in different voices.
-@cindex collisions, clashing note columns
@cindex collisions, ignoring
@knownissues
-If notes from two or more voices, with stems in the same direction, are
-placed at the same position on the staff and have no shift (or have the
-same shift specified), the message:
+If notes from two or more voices, with no shifts specified,
+have stems in the same direction, the message
@example
-warning: ignoring too many clashing note columns
+warning: This voice needs a \voiceXx or \shiftXx setting
@end example
will appear during compilation. This message can be suppressed by:
@example
-\override NoteColumn #'ignore-collision = ##t
+\override NoteColumn.ignore-collision = ##t
@end example
However, this not only suppresses the warning but will prevent any
even simultaneously. In such a case no attempt is made to
automatically avoid collisions between ordinary notes and clusters.
-
@seealso
Music Glossary:
@rglos{cluster}.
@rinternals{ClusterSpannerBeacon},
@rinternals{Cluster_spanner_engraver}.
-
@knownissues
-
Clusters look good only if they span at least two chords; otherwise
they appear too narrow.
Clusters do not produce MIDI output.
+
@node Multiple voices
@subsection Multiple voices
@funindex \oneVoice
@funindex oneVoice
-@strong{@i{Explicitly instantiating voices}}
+@subsubsubheading Explicitly instantiating voices
The basic structure needed to achieve multiple independent
voices in a single staff is illustrated in the following example:
\new Voice = "first"
{ \voiceOne r8 r16 g e8. f16 g8[ c,] f e16 d }
\new Voice= "second"
- { \voiceTwo d16 c d8~ d16 b c8~ c16 b c8~ c16 b8. }
+ { \voiceTwo d16 c d8~ 16 b c8~ 16 b c8~ 16 b8. }
>>
@end lilypond
command returns all the voice settings to the neutral default
directions.
-@strong{@i{Temporary polyphonic passages}}
+@subsubsubheading Temporary polyphonic passages
A temporary polyphonic passage can be created with the following
construct:
@example
-<< @{ \voiceOne ... @}
- \new Voice @{ \voiceTwo ... @}
+<< @{ \voiceOne @dots{} @}
+ \new Voice @{ \voiceTwo @dots{} @}
>> \oneVoice
@end example
Here, the @code{\voiceOne} and @code{\voiceTwo} commands are
required to define the settings of each voice.
-@strong{@i{The double backslash construct}}
+@subsubsubheading The double backslash construct
-The @code{<< @{...@} \\ @{...@} >>} construct, where the two (or
+The @code{<< @{@dots{}@} \\ @{@dots{}@} >>} construct, where the two (or
more) expressions are separated by double backslashes, behaves
differently to the similar construct without the double backslashes:
@emph{all} the expressions within this construct are assigned
<<
{ r8 r16 g e8. f16 g8[ c,] f e16 d }
\\
- { d16 c d8~ d16 b c8~ c16 b c8~ c16 b8. }
+ { d16 c d8~ 16 b c8~ 16 b c8~ 16 b8. }
>>
@end lilypond
@code{Voice} contexts as explained in @rlearning{Contexts and engravers} and
@rlearning{Explicitly instantiating voices}.
-@strong{@i{Voice order}}
+@subsubsubheading Voice order
When entering multiple voices in the input file, use the following
order:
>>
@end lilypond
-@strong{@i{Identical rhythms}}
+@warning{Lyrics, spanners (such as slurs, ties, hairpins etc.) cannot be
+created @q{across} voices.}
+
+@subsubsubheading Identical rhythms
In the special case that we want to typeset parallel pieces of music
that have the same rhythm, we can combine them into a single
@code{\oneVoice}.
@endpredefined
-
@seealso
Learning Manual:
@rlearning{Voices contain music},
@code{\voiceNeutralStyle}.
@endpredefined
-
@seealso
Learning Manual:
@rlearning{I'm hearing Voices},
>>
@end lilypond
-Notes with different note heads may be merged, with the
-exception of half-note heads and quarter-note heads, as shown
-below. Here the note heads on beat 1 of bar 1 are now merged:
+Notes with different note heads may be merged as shown
+below. In this example the note heads on beat 1 of bar 1 are now merged:
@lilypond[quote,verbatim,relative=2]
<<
>>
@end lilypond
+Quarter and half notes are not merged in this way, since it would be difficult
+to tell them apart.
+
Note heads with different dots as shown in beat 3 of bar 1 may be
also be merged:
vertical order of voices on the staff!}
@lilypond[quote,verbatim]
-\new Staff \relative c'' {
+\new Staff \relative {
%% abbreviated entry
<<
- { f2 } % 1: highest
+ { f''2 } % 1: highest
\\
{ g,2 } % 2: lowest
\\
@cindex collisions, ignoring
@knownissues
-Using @code{\override NoteColumn #'ignore-collision = ##t} will cause
+Using @code{\override NoteColumn.ignore-collision = ##t} will cause
differently headed notes in different voices to merge incorrectly.
@lilypond[quote,relative=1,verbatim]
\mergeDifferentlyHeadedOn
<< { c16 a' b a } \\ { c,2 } >>
-\override NoteColumn #'ignore-collision = ##t
+\override NoteColumn.ignore-collision = ##t
<< { c16 a' b a } \\ { c,2 } >>
@end lilypond
are at the same time differently dotted are not clear.
@end ignore
+
@node Automatic part combining
@unnumberedsubsubsec Automatic part combining
the combined staff.
@lilypond[quote,verbatim]
-instrumentOne = \relative c' {
- c4 d e f |
+instrumentOne = \relative {
+ c'4 d e f |
R1 |
d'4 c b a |
b4 g2 f4 |
e1 |
}
-instrumentTwo = \relative g' {
+instrumentTwo = \relative {
R1 |
- g4 a b c |
+ g'4 a b c |
d4 c b a |
g4 f( e) d |
e1 |
respectively. The unison (@notation{a due}) parts are marked with the
text @qq{a2}.
+By default, the partcombiner merges two notes of the same pitch as an
+@notation{a due} note, combines notes with the same
+rhythm less than a ninth apart as chords and separates notes more than
+a ninth apart (or when the voices cross) into
+separate voices. This can be overridden with an optional argument of a pair
+of numbers after the @code{\partcombine} command: the first specifies
+the interval where notes start to be combined (the default is zero) and the
+second where the notes are split into separate voices. Setting the second
+argument to zero means that the partcombiner splits notes with an interval of
+a second or more, setting it to one splits notes of a third or more, and so on.
+
+@lilypond[quote,verbatim]
+instrumentOne = \relative {
+ a4 b c d |
+ e f g a |
+ b c d e |
+}
+
+instrumentTwo = \relative {
+ c'4 c c c |
+ c c c c |
+ c c c c |
+}
+
+<<
+ \new Staff \partcombine \instrumentOne \instrumentTwo
+ \new Staff \partcombine #'(2 . 3) \instrumentOne \instrumentTwo
+>>
+@end lilypond
+
+
Both arguments to @code{\partcombine} will be interpreted as separate
@code{Voice} contexts, so if the music is being specified in relative
mode then @emph{both} parts must contain a @code{\relative} function,
case the @code{\partcombine} function can be overriden with the
following commands:
-Commands ending in @code{...Once} apply only to the next note in the
+Commands ending in @code{@dots{}Once} apply only to the next note in the
music expression.
@itemize
\partcombineApart c2^"apart" \partcombineChordsOnce e^"chord once" |
c2 c |
}
-instrumentTwo = \relative c' {
- c2 c |
+instrumentTwo = \relative {
+ c'2 c |
e2 e |
a,2 c |
c2 c' |
@end lilypond
+@subsubsubheading Using \partcombine with lyrics
+
+@cindex \partcombine and lyrics
+
+The @code{\partcombine} command is not designed to work with
+lyrics; if one of the voices is explicitly named in order to
+attach lyrics to it, the partcombiner will stop working. However,
+this effect can be achieved using a @code{NullVoice} context. See
+@ref{Polyphony with shared lyrics}.
+
+
@snippets
@lilypondfile[verbatim,quote,texidoc,doctitle]
@lilypondfile[verbatim,quote,texidoc,doctitle]
{changing-partcombine-texts.ly}
-
@seealso
Music Glossary:
@rglos{a due},
@rinternals{Voice}.
@knownissues
+All @code{\partcombine@dots{}} functions can only accept two voices.
-All @code{\partcombine...} functions can only accept two voices and are
-not designed to work with lyrics; such that when one of the voices is
-explicitly named in order to attach lyrics to it, the partcombiner will
-stop working.
-
-@code{\partcombine...} functions cannot be placed inside a @code{\times}
+@code{\partcombine@dots{}} functions cannot be placed inside a @code{\tuplet}
or @code{\relative} block.
If @code{printPartCombineTexts} is set and the two voices play the same
\parallelMusic #'(voiceA voiceB voiceC) {
% Bar 1
r8 g'16 c'' e'' g' c'' e'' r8 g'16 c'' e'' g' c'' e'' |
- r16 e'8.~ e'4 r16 e'8.~ e'4 |
+ r16 e'8.~ 4 r16 e'8.~ 4 |
c'2 c'2 |
% Bar 2
r8 a'16 d'' f'' a' d'' f'' r8 a'16 d'' f'' a' d'' f'' |
- r16 d'8.~ d'4 r16 d'8.~ d'4 |
+ r16 d'8.~ 4 r16 d'8.~ 4 |
c'2 c'2 |
}
\parallelMusic #'(voiceA voiceB voiceC) {
% Bar 1
r8 g16 c e g, c e r8 g,16 c e g, c e |
- r16 e8.~ e4 r16 e8.~ e4 |
+ r16 e8.~ 4 r16 e8.~ 4 |
c2 c |
% Bar 2
r8 a,16 d f a, d f r8 a,16 d f a, d f |
- r16 d8.~ d4 r16 d8.~ d4 |
+ r16 d8.~ 4 r16 d8.~ 4 |
c2 c |
}
}
@end lilypond
-
@seealso
Learning Manual:
@rlearning{Organizing pieces with variables}.