X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Documentation%2Fuser%2Fsimultaneous.itely;h=01e2c8d07dc0c4ab0289d60471170951d823fc5c;hb=646ef7938ab587c23bf120b9f00c68cef744b365;hp=f0cf731f6ee939cb496fddc31da05235fd1a94d8;hpb=02fb661e8d6d7c6917004a9c637c91a3bf2ceee6;p=lilypond.git diff --git a/Documentation/user/simultaneous.itely b/Documentation/user/simultaneous.itely index f0cf731f6e..01e2c8d07d 100644 --- a/Documentation/user/simultaneous.itely +++ b/Documentation/user/simultaneous.itely @@ -6,7 +6,7 @@ version that you are working on. See TRANSLATION for details. @end ignore -@c \version "2.11.51" +@c \version "2.12.0" @node Simultaneous notes @@ -31,6 +31,7 @@ This section discusses simultaneous notes inside the same voice. @menu * Chorded notes:: +* Simultaneous expressions:: * Clusters:: @end menu @@ -40,22 +41,30 @@ This section discusses simultaneous notes inside the same voice. @cindex chords @cindex brackets, angle +@cindex angle brackets +@cindex relative pitch in chords + @funindex < @funindex > @funindex <...> -A chord is formed by a enclosing a set of pitches between @code{<} and -@code{>}. A chord may be followed by a duration and/or a set of -articulations, just like simple notes: +A chord is formed by enclosing a set of pitches between @code{<} +and @code{>}. A chord may be followed by a duration and/or a set +of articulations, just like simple notes: @lilypond[verbatim,quote,relative=1] 2 4-> -. @end lilypond +Relative mode can be used for pitches in chords. The octave of each +pitch is chosen using the preceding pitch as a reference except in +the case of the first pitch in a chord: the reference for the first +pitch is the @emph{first} pitch of the preceding chord. + For more information about chords, see @ref{Chord notation}. -@seealso +@seealso Music Glossary: @rglos{chord}. @@ -68,26 +77,58 @@ Notation Reference: Snippets: @rlsr{Simultaneous notes}. -@ignore -@knownissues -For some reason, music expressions like @code{<< @{ g8 e8 @} a4 >>} -that should automatically turn into chords, appear split in two -staves. To avoid this, use explicit chords instead as in -@code{8 8}. -@end ignore +@node Simultaneous expressions +@unnumberedsubsubsec Simultaneous expressions + +One or more music expressions enclosed in double angle brackets are +taken to be simultaneous. If the first expression begins with a +single note or if the whole simultaneous expression appears +explicitly within a single voice, the whole expression is placed on +a single staff; otherwise the elements of the simultaneous +expression are placed on separate staves. + +The following examples show simultaneous expressions on one staff: + +@lilypond[quote,verbatim,relative=2] +\new Voice { % explicit single voice + << {a4 b g2} {d4 g c,2} >> +} +@end lilypond + +@lilypond[quote,verbatim,relative=2] +% single first note +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. + +The following example shows how simultaneous expressions can +generate multiple staves implicitly: + +@lilypond[quote,verbatim,relative=2] +% no single first note +<< {a4 b g2} {d4 g2 c,4} >> +@end lilypond + +Here different rhythms cause no problems. @node Clusters @unnumberedsubsubsec Clusters @cindex cluster +@cindex note cluster + @funindex \makeClusters +@funindex makeClusters -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,relative=2,verbatim] \makeClusters { 2 } @@ -97,8 +138,8 @@ 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 +@seealso Music Glossary: @rglos{cluster}. @@ -110,15 +151,18 @@ 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. Clusters do not have a stem and cannot indicate durations by -themselves. Separate clusters would need a separating rest between -them. +themselves, but the length of the printed cluster is determined by +the durations of the defining chords. Separate clusters need a +separating rest between them. +Clusters do not produce MIDI output. @node Multiple voices @subsection Multiple voices @@ -138,72 +182,59 @@ multiple staves. @node Single-staff polyphony @unnumberedsubsubsec Single-staff polyphony -To typeset parallel pieces of music that have the same rhythm, they -can be combined into a single @code{Voice} context, thus forming -chords. To achieve this, enclose them in a simultaneous music -construction: +@cindex single-staff polyphony +@cindex polyphony, single-staff +@cindex voice +@cindex lyrics assigned to one voice -@lilypond[quote,relative=2,verbatim] -\new Voice << - { e4 f8 d e16 f g8 d4 } - { c4 d8 b c16 d e8 b4 } ->> -@end lilypond - -This method leads to strange beamings and warnings if the pieces of -music do not have the same rhythm. To typeset multiple, truly -independent voices in a single staff, the @code{<<@{...@} \\ -@{...@}>>} construction can be used as a simplified method, where the -two (or more) voices are separated by double backslashes. +@funindex \voiceOne +@funindex voiceOne +@funindex \voiceOne ... \voiceFour +@funindex Voice +@funindex \oneVoice +@funindex oneVoice -@lilypond[quote,relative=3,verbatim] -<< - { r8 r16 g e8. f16 g8[ c,] f e16 d } - \\ - { d16 c d8~ d16 b c8~ c16 b c8~ c16 b8. } ->> -@end lilypond +@strong{@i{Explicitly instantiating voices}} -First and third voices get stems up, second and fourth voices get -stems down, third and fourth voice note heads are horizontally shifted, -and rests move to avoid collisions. In the following example, the -intermediate voice has stems up, therefore we enter it in the third -place, so it becomes voice three which has the stems up as desired. +The basic structure needed to achieve multiple independent +voices in a single staff is illustrated in the following example: @lilypond[quote,relative=3,verbatim] -<< - { r8 g g g g f16 es f8 d } - \\ - { es,8 r es r d r d r } - \\ - { d'8 s c s bes s a s } +\new Staff << + \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. } >> @end lilypond -Spacing rests are often used to avoid too many rests, as seen in the -example above. +Here, voices are instantiated explicitly and are given names. The +@code{\voiceOne} ... @code{\voiceFour} commands set up the voices +so that first and third voices get stems up, second and fourth +voices get stems down, third and fourth voice note heads are +horizontally shifted, and rests in the respective voices are +automatically moved to avoid collisions. The @code{\oneVoice} +command returns all the voice settings to the neutral default +directions. -Voices created by this simplified method are implicit @code{Voice} -contexts; in all but simplest works it is advised to create explicit -@code{Voice} contexts using the @code{\new} and @code{\context} -commands as it is explained in @rlearning{Contexts and engravers} and -@rlearning{Explicitly instantiating voices}. +@strong{@i{Temporary polyphonic passages}} -This applies to a common case: each music expression in the -@code{<<@{...@} \\ @{...@}>>} construct is placed in a new voice, -distinct from the voice for single-voice music; to temporarily add -only one additional voice to an existing one, it is necessary to -instantiate that voice explicitly. When doing this, to force the -settings that would be implicitly made by the simplified method, the -@code{\voiceOne} ... @code{\voiceFour}, and @code{\oneVoice} commands -can be used: +A temporary polyphonic passage can be created with the following +construct: @example -<< @{ \voiceOne ... @} \new Voice @{ \voiceTwo ... @} >> \oneVoice +<< @{ \voiceOne ... @} + \new Voice @{ \voiceTwo ... @} +>> \oneVoice @end example -This construct keeps a voice alive throughout the polyphonic section. -For example, this allows lyrics to be assigned to one consistent voice. +Here, the first expression within a temporary polyphonic passage is +placed into the @code{Voice} context which was in use immediately +before the polyphonic passage, and that same @code{Voice} context +continues after the temporary section. Other expressions within +the angle brackets are assigned to distinct temporary voices. +This allows lyrics to be assigned to one continuing voice before, +during and after a polyphonic section: @lilypond[quote, verbatim, relative=2] << @@ -216,11 +247,11 @@ For example, this allows lyrics to be assigned to one consistent voice. } \new Voice { \voiceTwo - e d + d2 } >> \oneVoice - e + e4 } \new Lyrics \lyricsto "melody" { This is my song. @@ -228,27 +259,90 @@ For example, this allows lyrics to be assigned to one consistent voice. >> @end lilypond -@predefined +Here, the @code{\voiceOne} and @code{\voiceTwo} commands are +required to define the settings of each voice. -@funindex \voiceOne +@strong{@i{The double backslash construct}} + +The @code{<< @{...@} \\ @{...@} >>} 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 contruct are assigned +to new @code{Voice} contexts. These new @code{Voice} contexts +are created implicitly and are given the fixed names @code{"1"}, +@code{"2"}, etc. + +The first example could be typeset as follows: + +@lilypond[quote,relative=3,verbatim] +<< + { r8 r16 g e8. f16 g8[ c,] f e16 d } + \\ + { d16 c d8~ d16 b c8~ c16 b c8~ c16 b8. } +>> +@end lilypond + +This syntax can be used where it does not matter that temporary +voices are created and then discarded. These implicitly created +voices are given the settings equivalent to the effect of the +@code{\voiceOne} ... @code{\voiceFour} commands, in the order in +which they appear in the code. + +In the following example, the intermediate voice has stems up, +therefore we enter it in the third place, so it becomes voice +three, which has the stems up as desired. Spacer rests are +used to avoid printing doubled rests. + +@lilypond[quote,relative=3,verbatim] +<< + { r8 g g g g f16 ees f8 d } + \\ + { ees,8 r ees r d r d r } + \\ + { d'8 s c s bes s a s } +>> +@end lilypond + +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{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{Voice} context, thus forming chords. To achieve this, enclose +them in a simple simultaneous music construct within an explicit voice: + +@lilypond[quote,relative=2,verbatim] +\new Voice << + { e4 f8 d e16 f g8 d4 } + { c4 d8 b c16 d e8 b4 } +>> +@end lilypond + +This method leads to strange beamings and warnings if the pieces of +music do not have the same rhythm. + + +@predefined @code{\voiceOne}, -@funindex \voiceTwo @code{\voiceTwo}, -@funindex \voiceThree @code{\voiceThree}, -@funindex \voiceFour @code{\voiceFour}, -@funindex \oneVoice @code{\oneVoice}. +@endpredefined -@seealso +@seealso Learning Manual: @rlearning{Voices contain music}, @rlearning{Explicitly instantiating voices}. Notation Reference: -@ref{Percussion staves}. +@ref{Percussion staves}, +@ref{Invisible rests}, +@ref{Stems}. Snippets: @rlsr{Simultaneous notes}. @@ -260,6 +354,11 @@ Snippets: @cindex voice styles @cindex styles, voice @cindex coloring voices +@funindex \voiceOneStyle +@funindex \voiceTwoStyle +@funindex \voiceThreeStyle +@funindex \voiceFourStyle +@funindex \voiceNeutralStyle Voices may be given distinct colors and shapes, allowing them to be easily identified: @@ -276,24 +375,20 @@ easily identified: >> @end lilypond -To revert the standard presentation, the @code{\voiceNeutralstyle} -command is used. +The @code{\voiceNeutralstyle} command is used to revert to the +standard presentation. -@predefined -@funindex \voiceOneStyle +@predefined @code{\voiceOneStyle}, -@funindex \voiceTwoStyle @code{\voiceTwoStyle}, -@funindex \voiceThreeStyle @code{\voiceThreeStyle}, -@funindex \voiceFourStyle @code{\voiceFourStyle}, -@funindex \voiceNeutralStyle @code{\voiceNeutralStyle}. +@endpredefined -@seealso +@seealso Learning Manual: @rlearning{I'm hearing Voices}, @rlearning{Other sources of information}. @@ -308,15 +403,35 @@ Snippets: @cindex merging notes @cindex note collisions @cindex collisions +@cindex shift note +@cindex multiple voices +@cindex voices, multiple +@cindex polyphonic music +@cindex shifting voices +@cindex voices, multiple +@cindex shift rest, automatic @funindex \shiftOn +@funindex shiftOn @funindex \shiftOnn +@funindex shiftOnn @funindex \shiftOnnn +@funindex shiftOnnn @funindex \shiftOff -@cindex shift rest, automatic +@funindex shiftOff +@funindex \mergeDifferentlyDottedOn +@funindex mergeDifferentlyDottedOn +@funindex \mergeDifferentlyDottedOff +@funindex mergeDifferentlyDottedOff +@funindex \mergeDifferentlyHeadedOn +@funindex mergeDifferentlyHeadedOn +@funindex \mergeDifferentlyHeadedOff +@funindex mergeDifferentlyHeadedOff -Note heads with equal durations are automatically merged, while -note heads with unequal durations are not merged. Rests opposite -a stem are shifted vertically. +The note heads of notes in different voices with the same pitch, +same note head and opposite stem direction are automatically +merged, but notes with different note heads or the same stem +direction are not. Rests opposite a stem in a different voice +are shifted vertically. @lilypond[quote,verbatim,relative=2] << @@ -334,7 +449,7 @@ a stem are shifted vertically. >> @end lilypond -Note heads with different note heads may be merged, with the +Notes with different note heads may be merged, with the exception of half-note heads and quarter-note heads: @lilypond[quote,verbatim,relative=2] @@ -374,16 +489,15 @@ Note heads with different dots may be merged: >> @end lilypond -@cindex shift note -The collision on the second measure happens because -@code{merge-differently-headed} cannot successfully complete the -merge when three or more notes line up in the same column -- in -fact, you will obtain a warning for this reason. To allow the -merge to work properly, apply a @code{\shift} to the note that -should not be merged. Here, @code{\shiftOn} is applied to move -the top @code{g} out of the column, and -@code{merge-differently-headed} works properly. +The half note and eighth note at the start of the second measure +are incorrectly merged because @code{\mergeDifferentlyHeadedOn} +cannot successfully complete the merge when three or more notes +line up in the same column, and in this case a warning is given. +To allow the merge to work properly a @code{\shift} must be applied +to the note that should not be merged. Here, @code{\shiftOn} is +applied to move the top @notation{g} out of the column, and +@code{\mergeDifferentlyHeadedOn} then works properly. @lilypond[quote,relative=2,verbatim] << @@ -412,32 +526,22 @@ two) have @code{\shiftOff}, while the inner voices (three and four) have @code{\shiftOn}. @code{\shiftOnn} and @code{\shiftOnnn} define further shift levels. -Notes are only merged if they have opposing stem directions (i.e., in +Notes are only merged if they have opposing stem directions (e.g. in @code{Voice} 1 and 2). -@cindex multiple voices -@cindex polyphonic music -@cindex shifting voices @predefined - -@funindex \mergeDifferentlyDottedOn @code{\mergeDifferentlyDottedOn}, -@funindex \mergeDifferentlyDottedOff @code{\mergeDifferentlyDottedOff}, -@funindex \mergeDifferentlyHeadedOn @code{\mergeDifferentlyHeadedOn}, -@funindex \mergeDifferentlyHeadedOff @code{\mergeDifferentlyHeadedOff}. -@funindex \shiftOn @code{\shiftOn}, -@funindex \shiftOnn @code{\shiftOnn}, -@funindex \shiftOnnn @code{\shiftOnnn}, -@funindex \shiftOff @code{\shiftOff}. +@endpredefined + @snippets @@ -447,8 +551,8 @@ Notes are only merged if they have opposing stem directions (i.e., in @lilypondfile[verbatim,lilyquote,texidoc,doctitle] {forcing-horizontal-shift-of-notes.ly} -@seealso +@seealso Music Glossary: @rglos{polyphony}. @@ -465,16 +569,19 @@ Internals Reference: @rinternals{NoteCollision}, @rinternals{RestCollision}. + @knownissues -When using @code{merge-differently-headed} with an upstem eighth +When using @code{\mergeDifferentlyHeadedOn} with an upstem eighth or a shorter note, and a downstem half note, the eighth note stem gets a slightly wrong offset because of the different width of the half note head symbol. -@c investigate! Sometimes it works, sometimes not. --FV +@ignore +@c TODO investigate! Sometimes it works, sometimes not. --FV The requirements for successfully merging different note heads that are at the same time differently dotted are not clear. +@end ignore There is no support for chords where the same note occurs with different accidentals in the same chord. In this case, it is @@ -488,7 +595,10 @@ cluster notation (see @ref{Clusters}). @cindex automatic part combining @cindex part combiner @cindex combining parts +@cindex a due part +@cindex solo part @funindex \partcombine +@funindex partcombine Automatic part combining is used to merge two parts of music onto a staff. It is aimed at typesetting orchestral scores. When the @@ -532,15 +642,15 @@ instrumentTwo = \relative g' { >> @end lilypond -The notes in the third measure appear only once, although they -were specified in both parts. Stem, slur, and tie directions are -set automatically, depending whether there is a solo or unison. -When needed in polyphony situations, the first part (with context -called @code{one}) always gets up stems, while the second (called -@code{two}) always gets down stems. In solo situations, the parts -get marked with @q{Solo} and @q{Solo II}, respectively. The -unisono (@notation{a due}) parts are marked by default with the -text @qq{a2}. +The notes in the third measure appear only once, although they were +specified in both parts. Stem, slur, and tie directions are set +automatically, depending whether there is a solo or unison. When +needed in polyphony situations, the first part (with context called +@code{one}) always gets up stems, while the second (called @code{two}) +always gets down stems. In solo situations, the first and second +parts get marked with @q{Solo} and @q{Solo II}, respectively. The +unisono (@notation{a due}) parts are marked by default with the text +@qq{a2}. Both arguments to @code{\partcombine} will be interpreted as @code{Voice} contexts. If using relative octaves, @@ -566,8 +676,8 @@ has no effect on the pitches of @var{musicexpr1} and @lilypondfile[verbatim,lilyquote,texidoc,doctitle] {changing-partcombine-texts.ly} -@seealso +@seealso Music Glossary: @rglos{a due}, @rglos{part}. @@ -582,8 +692,11 @@ Internals Reference: @rinternals{PartCombineMusic}, @rinternals{Voice}. + @knownissues +@code{\partcombine} can only accept two voices. + 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. @@ -593,19 +706,26 @@ more than once in a measure. @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 @rinternals{Voice} contexts, the -events in those will be ignored. +@code{Voice}s and decides when the parts can be combined. When they have +different durations they cannot be combined and are given the names +@code{one} and @code{two}. Consequently, if the arguments switch to +differently named @rinternals{Voice} contexts, the events in those will +be ignored. Likewise, partcombining isn't designed to work with lyrics; +when one of the voices is explicitly named in order to attach lyrics to +it, the partcombining stops working. -@c IIRC in users list someone pointed out more issues. TODO: lookup FV +@code{\partcombine} only observes onset times of notes. It cannot +determine whether a previously started note is playing or not, leading +to various problems. @node Writing music in parallel @unnumberedsubsubsec Writing music in parallel -@cindex Writing music in parallel -@cindex Interleaved music +@cindex writing music in parallel +@cindex interleaved music +@cindex parallel music +@funindex \parallelMusic @funindex parallelMusic Music for multiple parts can be interleaved in input code. The @@ -709,8 +829,8 @@ global = { } @end lilypond -@seealso +@seealso Learning Manual: @rlearning{Organizing pieces with variables}.