]> git.donarmstrong.com Git - lilypond.git/blobdiff - Documentation/user/simultaneous.itely
Merge branch 'lilypond/translation' of ssh://jomand@git.sv.gnu.org/srv/git/lilypond...
[lilypond.git] / Documentation / user / simultaneous.itely
index 7e6ec60bad9b31fded80db70d37613bcce2797ee..71b3a166ea86a5cd2a1ddbdbd679960078bc3828 100644 (file)
@@ -9,6 +9,8 @@
 @node Simultaneous notes
 @section Simultaneous notes
 
+@lilypondfile[quote]{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
 than one voice on the same staff.
@@ -23,18 +25,18 @@ than one voice on the same staff.
 @subsection Single voice
 
 @menu
-* Chords::                      
+* Chorded notes::                      
 * Clusters::                    
 @end menu
 
-@node Chords
-@unnumberedsubsubsec Chords
+@node Chorded notes
+@subsubsection Chorded notes
 
 @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
+articulations, just like simple notes:
 
 @lilypond[verbatim,ragged-right,fragment,quote,relative=1]
 <c e g>4 <c>8
@@ -43,9 +45,23 @@ articulations, just like simple notes
 For more information about chords, see @ref{Introducing chord
 names}.
 
+@seealso
+
+Music Glossary: @rglos{chord}.
+
+Notation Reference: @ref{Introducing chord names}.
+
+Snippets: @lsrdir{Simultaneous,Simultaneous-notes}.
+
+@knownissues
+
+Music expressions like @code{<< @{ g8 e8 @} a4 >>} are not printed
+accurately.  Use @code{<g a>8 <e a>8} instead.
+
+
 
 @node Clusters
-@unnumberedsubsubsec Clusters
+@subsubsection Clusters
 
 @cindex cluster
 
@@ -65,16 +81,13 @@ clusters.
 
 @seealso
 
-Program reference: @internalsref{ClusterSpanner},
+Snippets: @lsrdir{Simultaneous,Simultaneous-notes}.
+
+Internals 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.
+Examples: @c @lsr{contemporary,cluster@/.ly}.
 
 
 
@@ -82,218 +95,16 @@ accurately.  Use @code{<g a>8 <e a>8} instead.
 @subsection Multiple voices
 
 @menu
-* Basic polyphony::             
-* Explicitly instantiating voices::  
-* Collision Resolution::        
+* Collision resolution::        
 * Automatic part combining::    
 * Writing music in parallel::   
 @end menu
 
-@node 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
-
-@cindex layers
-
-The separator causes @internalsref{Voice}
-contexts@footnote{Polyphonic voices are sometimes
-called @q{layers} in other notation packages} 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}.
-
-
-@node 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
+@node Collision resolution
+@subsubsection Collision resolution
 
-@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
-
-
-@node Collision Resolution
-@unnumberedsubsubsec Collision Resolution
+@cindex merging notes
+@cindex note collisions
 
 Normally, note heads with a different number of dots are not
 merged, but when the object property
@@ -323,7 +134,7 @@ c8 c4. } \\ { c2 c2 } >>
 @noindent
 @code{merge-differently-headed} and
 @code{merge-differently-dotted} only apply to opposing stem
-directions (ie. Voice 1 & 2).
+directions (i.e. Voice 1 & 2).
 
 LilyPond also vertically shifts rests that are opposite of a stem,
 for example
@@ -332,6 +143,8 @@ for example
 \new Voice << c''4 \\ r4 >>
 @end lilypond
 
+@cindex shift note
+
 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
@@ -356,8 +169,28 @@ move the top @code{g} out of the column, and
 >>
 @end lilypond
 
+@cindex multiple voices
+@cindex polyphonic music
+@cindex shifting voices
 
-@refcommands
+In some instances of complex polyphonic music, you may need
+additional voices to avoid collisions between notes.  Additional
+voices are added by defining an variable, 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
+
+
+
+@predefined
 
 @funindex \oneVoice
 @code{\oneVoice},
@@ -370,6 +203,19 @@ move the top @code{g} out of the column, and
 @funindex \voiceFour
 @code{\voiceFour}.
 
+@funindex \voiceNeutralStyle
+@funindex \voiceOneStyle
+@funindex \voiceTwoStyle
+@funindex \voiceThreeStyle
+@funindex \voiceFourStyle
+@example
+\voiceNeutralStyle
+\voiceOneStyle
+\voiceTwoStyle
+\voiceThreeStyle
+\voiceFourStyle
+@end example
+
 @funindex \shiftOn
 @code{\shiftOn},
 @funindex \shiftOnn
@@ -403,12 +249,14 @@ override typesetting decisions.
 
 @seealso
 
-Program reference: the objects responsible for resolving
+Snippets: @lsrdir{Simultaneous,Simultaneous-notes}.
+
+Internals Reference: the objects responsible for resolving
 collisions are @internalsref{NoteCollision} and
 @internalsref{RestCollision}.
 
 
-@refbugs
+@knownissues
 
 When using @code{merge-differently-headed} with an upstem eighth
 or a shorter note, and a downstem half note, the eighth note gets
@@ -421,9 +269,10 @@ cluster notation (see @ref{Clusters}).
 
 
 @node Automatic part combining
-@unnumberedsubsubsec Automatic part combining
+@subsubsection Automatic part combining
 @cindex automatic part combining
 @cindex part combiner
+@cindex combining parts
 
 Automatic part combining is used to merge two parts of music onto
 a staff.  It is aimed at typesetting orchestral scores.  When the
@@ -441,7 +290,7 @@ The syntax for part combining is
 
 The following example demonstrates the basic functionality of the
 part combiner: putting parts on one staff, and setting stem
-directions and polyphony
+directions and polyphony.
 
 @lilypond[quote,verbatim,ragged-right,fragment]
 \new Staff \partcombine
@@ -457,7 +306,7 @@ 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
+you may set the property @code{printPartCombineTexts} to false.
 
 @lilypond[quote,verbatim,ragged-right,fragment,relative=2]
 \new Staff <<
@@ -501,11 +350,15 @@ has no effect on the pitches of @var{musicexpr1} and
 
 @seealso
 
-Program reference: @internalsref{PartCombineMusic}.
+Music Glossary: @rglos{a due}.
 
-@refbugs
+Snippets: @lsrdir{Simultaneous,Simultaneous-notes}.
 
-When @code{printPartCombineTexts} is set, when the two voices play
+Internals Reference: @internalsref{PartCombineMusic}, @internalsref{Voice}.
+
+@knownissues
+
+When @code{printPartCombineTexts} is set, if the two voices play
 the same notes on and off, the part combiner may typeset @code{a2}
 more than once in a measure.
 
@@ -521,19 +374,19 @@ events in those will be ignored.
 
 
 @node Writing music in parallel
-@unnumberedsubsubsec Writing music in parallel
+@subsubsection Writing music in parallel
 
 @cindex Writing music in parallel
 @cindex Interleaved music
 
-Music for multiple parts can be interleaved
+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                                |
+  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
@@ -541,19 +394,24 @@ Music for multiple parts can be interleaved
 >>
 @end lilypond
 
-This works quite well for piano music
+This works quite well for piano music.
 
+@c  It would be nice if the first bar fit onto one 66-char line.
+@c  Maybe simplify the example?  -gp
 @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 |
+    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'' |
@@ -583,5 +441,7 @@ e''] |
 }
 @end lilypond
 
+@seealso
 
+Snippets: @lsrdir{Simultaneous,Simultaneous-notes}