]> git.donarmstrong.com Git - lilypond.git/blobdiff - Documentation/notation/simultaneous.itely
Run scripts/auxiliar/update-with-convert-ly.sh -f 2.19.20
[lilypond.git] / Documentation / notation / simultaneous.itely
index e73eab867ffe7c7d18c32bd7bef05b572e2c7129..3d5cb96b873dfb1416a4999aecba08029e97516d 100644 (file)
@@ -7,13 +7,13 @@
     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
@@ -60,14 +60,15 @@ Chords may also be followed by articulations, again just like simple
 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
@@ -75,7 +76,24 @@ attached to the chord, rather than notes within the chord, otherwise
 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
@@ -130,11 +148,13 @@ enharmonic transcription of one or more pitches,
 
 @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}:
@@ -148,7 +168,7 @@ durations, articulations, markups, slurs, beams, etc. as only the
 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
@@ -156,16 +176,60 @@ a chord so it is possible to repeat the most recent chord even if
 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},
@@ -199,8 +263,17 @@ a << { a4 b g } { d4 g c, } >>
 @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:
@@ -210,24 +283,23 @@ 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
@@ -257,7 +329,6 @@ 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
 Music Glossary:
 @rglos{cluster}.
@@ -270,9 +341,7 @@ Internals Reference:
 @rinternals{ClusterSpannerBeacon},
 @rinternals{Cluster_spanner_engraver}.
 
-
 @knownissues
-
 Clusters look good only if they span at least two chords; otherwise
 they appear too narrow.
 
@@ -283,6 +352,7 @@ separating rest between them.
 
 Clusters do not produce MIDI output.
 
+
 @node Multiple voices
 @subsection Multiple voices
 
@@ -313,7 +383,7 @@ multiple staves.
 @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:
@@ -323,7 +393,7 @@ 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
 
@@ -337,14 +407,14 @@ automatically moved to avoid collisions.  The @code{\oneVoice}
 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
 
@@ -384,9 +454,9 @@ during and after a polyphonic section:
 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
@@ -400,7 +470,7 @@ The first example could be typeset as follows:
 <<
   { 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
 
@@ -429,7 +499,7 @@ In all but the simplest works it is advisable to create explicit
 @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:
@@ -465,7 +535,10 @@ upstems, and the even-numbered voices are given downstems:
 >>
 @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
@@ -491,7 +564,6 @@ music do not have the same rhythm.
 @code{\oneVoice}.
 @endpredefined
 
-
 @seealso
 Learning Manual:
 @rlearning{Voices contain music},
@@ -545,7 +617,6 @@ standard presentation.
 @code{\voiceNeutralStyle}.
 @endpredefined
 
-
 @seealso
 Learning Manual:
 @rlearning{I'm hearing Voices},
@@ -609,9 +680,8 @@ in bar 2, where the automatic merging fails.
 >>
 @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]
 <<
@@ -630,6 +700,9 @@ below.  Here the note heads on beat 1 of bar 1 are now merged:
 >>
 @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:
 
@@ -703,10 +776,10 @@ of voices in your input file should not be the same as the
 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
     \\
@@ -772,13 +845,13 @@ Internals Reference:
 @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
 
@@ -789,6 +862,7 @@ The requirements for successfully merging different note heads that
 are at the same time differently dotted are not clear.
 @end ignore
 
+
 @node Automatic part combining
 @unnumberedsubsubsec Automatic part combining
 
@@ -820,17 +894,17 @@ accordingly.  The same variables are used for the independent parts and
 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 |
@@ -853,6 +927,37 @@ and second parts get marked with @qq{Solo} and @qq{Solo II},
 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,
@@ -890,7 +995,7 @@ the @code{\partcombine} function considers each note separately. In this
 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
@@ -930,8 +1035,8 @@ instrumentOne = \relative c' {
   \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' |
@@ -947,6 +1052,17 @@ instrumentTwo = \relative 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]
@@ -955,7 +1071,6 @@ instrumentTwo = \relative c' {
 @lilypondfile[verbatim,quote,texidoc,doctitle]
 {changing-partcombine-texts.ly}
 
-
 @seealso
 Music Glossary:
 @rglos{a due},
@@ -972,13 +1087,9 @@ Internals Reference:
 @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
@@ -1030,12 +1141,12 @@ be of the same length.}
 \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                        |
 
 }
@@ -1055,12 +1166,12 @@ note in the input -- in other words, relative notes for
 \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                  |
 
  }
@@ -1117,7 +1228,6 @@ global = {
 }
 @end lilypond
 
-
 @seealso
 Learning Manual:
 @rlearning{Organizing pieces with variables}.