X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Documentation%2Fnotation%2Fsimultaneous.itely;h=29b2749b17e5521694a672eaf8849a31796a7035;hb=2055f35c47a045a50a01ff4dba8524322cfc3b48;hp=211d3055bb61c0339bd67f93b20ff55b530e3d8c;hpb=6019a1e8f0301c1c3bf86ccc92178d820f9c3784;p=lilypond.git diff --git a/Documentation/notation/simultaneous.itely b/Documentation/notation/simultaneous.itely index 211d3055bb..29b2749b17 100644 --- a/Documentation/notation/simultaneous.itely +++ b/Documentation/notation/simultaneous.itely @@ -7,7 +7,7 @@ Guide, node Updating translation committishes.. @end ignore -@c \version "2.12.0" +@c \version "2.14.0" @node Simultaneous notes @@ -104,11 +104,31 @@ Learning Manual: Notation Reference: @ref{Chord notation}, @ref{Articulations and ornamentations}, -@ref{Relative octave entry}. +@ref{Relative octave entry}, +@ref{Multiple voices}. Snippets: @rlsr{Simultaneous notes}. +@knownissues +Chords containing more than two pitches within a staff space, +such as @samp{}, create overlapping noteheads. +Depending on the situation, better representations might involve + +@itemize + +@item +temporary use of @ref{Multiple voices}, +@samp{<< f! \\ >>}, + +@item +enharmonic transcription of one or more pitches, +@samp{}, or + +@item +@ref{Clusters}. + +@end itemize @node Chord repetition @unnumberedsubsubsec Chord repetition @@ -149,7 +169,7 @@ Notation Reference: @ref{Articulations and ornamentations}. Installed Files: -@file{ly/@/chord-repetition-init@/.ly}. +@file{ly/chord-repetition-init.ly}. @node Simultaneous expressions @@ -283,7 +303,7 @@ voices in a single staff is illustrated in the following example: @end lilypond @noindent -Here, voices are instantiated explicitly and are given names. The +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 @@ -344,7 +364,7 @@ required to define the settings of each voice. 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 +@emph{all} the expressions within this construct 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. @@ -384,6 +404,42 @@ 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}} + +When entering multiple voices in the input file, use the following +order: + +@example +Voice 1: highest +Voice 2: lowest +Voice 3: second highest +Voice 4: second lowest +Voice 5: third highest +Voice 6: third lowest +etc. +@end example + +Though this may seem counterintuitive, it simplifies the automatic +layout process. Note that the odd-numbered voices are given +upstems, and the even-numbered voices are given downstems: + +@lilypond[quote,verbatim] +\new Staff << + \time 2/4 + { f''2 } % 1: highest + \\ + { c'2 } % 2: lowest + \\ + { d''2 } % 3: second-highest + \\ + { e'2 } % 4: second-lowest + \\ + { b'2 } % 5: third-highest + \\ + { g'2 } % 6: third-lowest +>> +@end lilypond + @strong{@i{Identical rhythms}} In the special case that we want to typeset parallel pieces of music @@ -600,12 +656,54 @@ then works properly. >> @end lilypond -The @code{\shiftOn}, @code{\shiftOnn}, and @code{\shiftOnnn} -commands specify the degree to which chords of the current voice -should be shifted. The outer voices (normally: voices 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. +The @code{\shiftOn} command allows (but does not force) the notes +in a voice to be shifted. When @code{\shiftOn} is applied to a +voice, a note or chord in that voice is shifted only if its stem +would otherwise collide with a stem from another voice, and only +if the colliding stems point in the same direction. The +@code{\shiftOff} command prevents this type of shifting from +occurring. + +By default, the outer voices (normally voices one and two) have +@code{\shiftOff} specified, while the inner voices (three and +above) have @code{\shiftOn} specified. When a shift is applied, +voices with upstems (odd-numbered voices) are shifted to the +right, and voices with downstems (even-numbered voices) are +shifted to the left. + +Here is an example to help you visualize how an abbreviated +polyphonic expression would be expanded internally. + +@warning{Note that with three or more voices, the vertical order +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'' { + %% abbreviated entry + << + { f2 } % 1: highest + \\ + { g,2 } % 2: lowest + \\ + { d'2 } % 3: upper middle + \\ + { b2 } % 4: lower middle + >> + %% internal expansion of the above + << + \new Voice = "1" { \voiceOne \shiftOff f'2 } + \new Voice = "2" { \voiceTwo \shiftOff g,2 } + \new Voice = "3" { \voiceThree \shiftOn d'2 } % shifts right + \new Voice = "4" { \voiceFour \shiftOn b2 } % shifts left + >> +} +@end lilypond + +Two additional commands, @code{\shiftOnn} and @code{\shiftOnnn} +provide further shift levels which may be specified temporarily to +resolve collisions in complex situations -- see +@rlearning{Real music example}. Notes are only merged if they have opposing stem directions (as they have, for example, in voices one and two by default or when @@ -652,20 +750,13 @@ Internals Reference: @rinternals{RestCollision}. -@knownissues - @ignore +@knownissues @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 -recommended to use enharmonic transcription, or to use special -cluster notation (see @ref{Clusters}). - - @node Automatic part combining @unnumberedsubsubsec Automatic part combining @@ -725,8 +816,8 @@ 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 +parts get marked with @qq{Solo} and @qq{Solo II}, respectively. The +unison (@notation{a due}) parts are marked by default with the text @qq{a2}. Both arguments to @code{\partcombine} will be interpreted as @@ -742,8 +833,72 @@ i.e., @noindent A @code{\relative} section that is outside of @code{\partcombine} -has no effect on the pitches of @var{musicexpr1} and -@var{musicexpr2}. +has no effect on the pitches of @code{@var{musicexpr1}} and +@code{@var{musicexpr2}}. + +In professional scores, voices are often kept apart for long periods, +even if one or two notes actually coincide and could easily be printed +as unison. Combining notes into a chord, or showing one voice as solo +is therefore not ideal as the @code{\partcombine} function considers +each note separately. For this reason, the @code{\partcombine} function +can be overriden with the following commands: + +@itemize +@item +@code{\partcombineApart}, @code{\partcombineApartOnce}: +Keep the notes as two separate voices, even if they can be combined to a +chord or unison. + +@item +@code{\partcombineChords}, @code{\partcombineChordsOnce}: +Combine the notes to a chord. + +@item +@code{\partcombineUnisono}, @code{\partcombineUnisonoOnce}: +The two voices are unison. + +@item +@code{\partcombineSoloI}, @code{\partcombineSoloIOnce}: +Show only voice one and mark it as solo. + +@item +@code{\partcombineSoloII}, @code{\partcombineSoloIIOnce}: +Show only voice two and mark it as solo. + +@item +@code{\partcombineAutomatic}, @code{\partcombineAutomaticOnce}: +Ends the effect of the special commands above, and returns to the default +part combining mechanism. + +@end itemize + +All commands ending in @code{...Once} apply only to the following note. + +@lilypond[quote,verbatim] +instrumentOne = \relative c' { + \partcombineApart c2^"apart" e | + \partcombineAutomatic e^"auto" e | + \partcombineChords e'^"chord" e | + \partcombineAutomatic c^"auto" c | + \partcombineApart c^"apart" \partcombineChordsOnce e^"chord once" | + c c | +} +instrumentTwo = \relative c' { + c2 c | + e2 e | + a,2 c | + c2 c' | + c2 c | + c2 c | +} + +<< + \new Staff { \instrumentOne } + \new Staff { \instrumentTwo } + \new Staff { \partcombine \instrumentOne \instrumentTwo } +>> +@end lilypond + @snippets @@ -791,7 +946,7 @@ 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. -@code{\partcombine} only observes onset times of notes. It cannot +@code{\partcombine} only observes onset times of notes. It cannot determine whether a previously started note is playing or not, leading to various problems.