[ << 音楽記譜法 ] | [Top][Contents][Index] | [ 専門的な記譜法 >> ] |
[ < ボイス スタイル ] | [ Up : 複数のボイス ] | [ 休符のマージ > ] |
衝突の解決
同じピッチ、同じ符頭を持ち、符幹の方向が逆で異なるボイスの中にある符頭は自動的に 1 つの符頭にまとめられます – マージされます。しかしながら、音符の符頭が異なっていたり、符幹の方向が同じである場合はマージされません。異なるボイスの中にあり、符幹の方向が逆の休符は垂直方向にずらされます。以下の例は 3 つの異なる状態を示しています – 第 1 小節の 1, 3 拍目、それに第 2 小節の 1 拍目で自動マージが失敗しています。
<< \relative { c''8 d e d c d c4 g'2 fis } \\ \relative { c''2 c8. b16 c4 e,2 r } \\ \relative { \oneVoice s1 e'8 a b c d2 } >>
以下に示すように、異なる符頭を持つ音符をマージすることができます。この例では、第 1 小節の 1 拍目の符頭がマージされました:
<< \relative { \mergeDifferentlyHeadedOn c''8 d e d c d c4 g'2 fis } \\ \relative { c''2 c8. b16 c4 e,2 r } \\ \relative { \oneVoice s1 e'8 a b c d2 } >>
四分音符と二分音符はこの方法ではマージされません。なぜなら区別が難しくなるからです。
第 1 小節の 3 拍目のように異なる付点を持つ符頭もマージすることができます:
<< \relative { \mergeDifferentlyHeadedOn \mergeDifferentlyDottedOn c''8 d e d c d c4 g'2 fis } \\ \relative { c''2 c8. b16 c4 e,2 r } \\ \relative { \oneVoice s1 e'8 a b c d2 } >>
第 2 小節の最初の版音符と 8 分音符は正しくマージされていません。なぜなら 3 つ以上の音符が同じ列に並ぶ場合、自動マージは正しく機能できないからです。今回のケースでは、マージされた符頭が間違っています。マージが正しい符頭を選択できるようにするため、マージすべきでない符頭に \shift
を適用する必要があります。ここでは、\shiftOn
を適用することで、最上段にある g を列から外し、\mergeDifferentlyHeadedOn
を正しく機能させています。
<< \relative { \mergeDifferentlyHeadedOn \mergeDifferentlyDottedOn c''8 d e d c d c4 \shiftOn g'2 fis } \\ \relative { c''2 c8. b16 c4 e,2 r } \\ \relative { \oneVoice s1 e'8 a b c d2 } >>
\shiftOn
コマンドは、ボイスの中にある音符がずれることを許可します
(強制はしません)。\shiftOn
がボイスに適用されると、そのボイスの中にある音符あるいは和音は、同じ向きの符幹を持つ他のボイスと符幹が衝突する場合にのみ、ずらされます。\shiftOff
コマンドは、適用された時点から、このタイプの音符の移動を禁止します。
デフォルトでは、外側のボイス (通常はボイス 1 と 2) には \shiftOff
が指定されていて、内側のボイス (ボイス 3 以上) には \shiftOn
が指定されています。音符をずらす場合、上向きの符幹を持つボイス (奇数番号のボイス) は右側にずらされ、下向きの符幹を持つボイス (偶数番号のボイス) は左側にずらされます。
簡略化された多声表記が内部的にどのように展開されるかをお見せするための例を挙げます。
Note: 3 つ以上のボイスがある場合、入力ファイルでのボイスの垂直方向の順序は、譜上でのボイスの垂直方向の順序と同じにすべきではありません!
\new Staff \relative { %% 簡略化された入力 << { f''2 } % 1: 最上段 \\ { g,2 } % 2: 最下段 \\ { d'2 } % 3: 真ん中の上側 \\ { b2 } % 4: 真ん中の下側 >> %% 上記の内部的な展開 << \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 >> }
さらに 2 つのコマンド – \shiftOnn
と \shiftOnnn
– は、複雑な状況で衝突を解決するために一時的に指定されるさらに大きなずれを提供します。実際の音楽からの例 を参照してください。
音符は符幹の向きが反対である場合 (例えば、デフォルトのボイス 1 と 2 である場合や、明示的に符幹の向きが反対になるよう指定されている場合) にのみマージされます。
定義済みコマンド
\mergeDifferentlyDottedOn
,
\mergeDifferentlyDottedOff
,
\mergeDifferentlyHeadedOn
,
\mergeDifferentlyHeadedOff
\shiftOn
,
\shiftOnn
,
\shiftOnnn
,
\shiftOff
Selected Snippets
衝突を避けるための追加のボイス
複雑な多声音楽では、音符どうしの衝突を避けるために追加のボイスが必要になる場合があります。4 つ以上の並列ボイスが必要な場合には、追加のボイスは Scheme 関数 context-spec-music
を用いて変数を定義することで追加できます。
voiceFive = #(context-spec-music (make-voice-props-set 4) 'Voice) \relative c'' { \time 3/4 \key d \minor \partial 2 << \new Voice { \voiceOne a4. a8 e'4 e4. e8 f4 d4. c8 } \new Voice { \voiceTwo d,2 d4 cis2 d4 bes2 } \new Voice { \voiceThree f'2 bes4 a2 a4 s2 } \new Voice { \voiceFive s2 g4 g2 f4 f2 } >> }
多声の音楽で付点付きの音符を移動する
上のボイスにある付点付きの音符が、下の音符との衝突を避けるために移動する場合、デフォルトでは右側に移動します。この挙動は、NoteCollision
の
prefer-dotted-right
プロパティをオーバライドすることで変更できます。
\new Staff \relative c' << { f2. f4 \override Staff.NoteCollision.prefer-dotted-right = ##f f2. f4 \override Staff.NoteCollision.prefer-dotted-right = ##t f2. f4 } \\ { e4 e e e e e e e e e e e } >>
音符の水平位置を強制的に調整する
組版エンジンがうまく対処できない場合、次の構文で音符の水平位置をオーバライドすることができます。単位は譜スペースです。
\relative c' << { <d g>2 <d g> } \\ { <b f'>2 \once \override NoteColumn.force-hshift = 1.7 <b f'>2 } >>
参照
音楽用語集: polyphony
学習マニュアル: Multiple notes at once, Voices contain music, Real music example
コード断片集: Simultaneous notes
内部リファレンス: NoteColumn, NoteCollision, RestCollision
既知の問題と警告
\override NoteColumn.ignore-collision = ##t
を使うと異なるボイスにある符頭が異なる音符を不適切にマージします。
\mergeDifferentlyHeadedOn << \relative { c'16 a' b a } \\ \relative { c'2 } >> \override NoteColumn.ignore-collision = ##t << \relative { c'16 a' b a } \\ \relative { c'2 } >>
[ << 音楽記譜法 ] | [Top][Contents][Index] | [ 専門的な記譜法 >> ] |
[ < ボイス スタイル ] | [ Up : 複数のボイス ] | [ 休符のマージ > ] |