X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Documentation%2Fuser%2Fsimultaneous.itely;h=707655a48ba98d5bbcf0318827a8485461339a45;hb=682bdaa47443198aaee0df5c0f841469d71496c9;hp=406c4bae4eac66c47b7f9ab21eb5084de15c215d;hpb=18ce6a12408c603c2433456df97c213f325970ea;p=lilypond.git diff --git a/Documentation/user/simultaneous.itely b/Documentation/user/simultaneous.itely index 406c4bae4e..707655a48b 100644 --- a/Documentation/user/simultaneous.itely +++ b/Documentation/user/simultaneous.itely @@ -9,9 +9,12 @@ @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. +@lilypondfile[quote,ragged-right,line-width=16\cm,staffsize=16] +{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. @menu * Single voice:: @@ -23,24 +26,39 @@ one voice on the same staff. @subsection Single voice @menu -* Chords:: +* Chorded notes:: * Clusters:: @end menu -@node Chords -@unnumberedsubsubsec Chords +@node Chorded notes +@unnumberedsubsubsec 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] 4 8 @end lilypond -For more information about chords, see @ref{Introducing chord names}. +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}. + +@refbugs + +Music expressions like @code{<< @{ g8 e8 @} a4 >>} are not printed +accurately. Use @code{8 8} instead. + @node Clusters @@ -48,30 +66,29 @@ For more information about chords, see @ref{Introducing chord names}. @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., +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 { } @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. +automatically avoid collisions between ordinary notes and +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{8 8} instead. +Examples: @c @lsr{contemporary,cluster@/.ly}. @@ -79,217 +96,21 @@ accurately. Use @code{8 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 - -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}. - - -@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 - -@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: +@node Collision resolution +@unnumberedsubsubsec Collision resolution -@lilypond[quote,verbatim,ragged-right,relative=2] -voiceFive = #(context-spec-music (make-voice-props-set 4) 'Voice) +@cindex merging notes +@cindex note collisions -\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 - -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: +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 << { @@ -300,8 +121,8 @@ the @internalsref{NoteCollision} object, they are merged: } \\ { g8.[ f16] g8.[ f16] } >> @end lilypond -Similarly, you can merge half note heads with eighth notes, by setting -@code{merge-differently-headed}: +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 << { @@ -312,8 +133,9 @@ 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). +@code{merge-differently-headed} and +@code{merge-differently-dotted} only apply to opposing stem +directions (i.e. Voice 1 & 2). LilyPond also vertically shifts rests that are opposite of a stem, for example @@ -322,15 +144,17 @@ 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 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. +@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 @@ -346,6 +170,26 @@ works properly. >> @end lilypond +@cindex multiple voices +@cindex polyphonic music +@cindex shifting voices + +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 + + @refcommands @@ -360,6 +204,19 @@ works properly. @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 @@ -367,16 +224,16 @@ works properly. @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. +@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. +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 << @@ -393,31 +250,35 @@ be used to override typesetting decisions. @seealso -Program reference: the objects responsible for resolving collisions are -@internalsref{NoteCollision} and @internalsref{RestCollision}. +Snippets: @lsrdir{Simultaneous,Simultaneous-notes}. + +Internals 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. +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}). +recommended to use enharmonic transcription, or to use special +cluster notation (see @ref{Clusters}). @node Automatic part combining @unnumberedsubsubsec 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 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 +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. @@ -428,9 +289,9 @@ The syntax for part combining is @end example -The following example demonstrates the basic functionality of the part -combiner: putting parts on one staff, and setting stem directions and -polyphony +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 @@ -438,15 +299,15 @@ polyphony \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}. +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 +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 << @@ -474,7 +335,8 @@ properties. 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., +@code{\relative} should be specified for both music expressions, +i.e., @example \partcombine @@ -483,28 +345,33 @@ Both arguments to @code{\partcombine} will be interpreted as @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}. +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}. +Music Glossary: @rglos{a due}. + +Snippets: @lsrdir{Simultaneous,Simultaneous-notes}. + +Internals Reference: @internalsref{PartCombineMusic}, @internalsref{Voice}. @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. +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. @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. +@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. @node Writing music in parallel @@ -513,14 +380,14 @@ will be ignored. @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 @@ -528,19 +395,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'' | @@ -570,5 +442,7 @@ e''] | } @end lilypond +@seealso +Snippets: @lsrdir{Simultaneous,Simultaneous-notes}