1.5.2 複数のボイス

このセクションでは複数のボイスあるいは複数の譜の中にある同時進行する音符について議論します。


単一譜の多声

明示的にボイスをインスタンス化する

単一の譜の中に複数の独立したボイスを配置するのに必要とされる基本的な構造が以下の例で示されています:

\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. }
>>

[image of music]

ここでは、ボイスは明示的にインスタンス化されていて、名前を与えられています。\voiceOne\voiceFour コマンドはボイスをセット アップし、それにより、1 番目と 3 番目のボイスは上向きの符幹を持ち、2 番目と 4 番目のボイスは下向きの符幹を持ち、3 番目と 4 番目のボイスの符頭は水平方向にずれて、それぞれのボイスの中の休符は衝突を避けるために自動的に移動させられます。\oneVoice コマンドはすべてのボイス設定をニュートラルなデフォルトの向きに戻します。

一時的に多声となる楽節 (passage)

一時的に多声となる楽節は以下のような構成で作成することができます:

<< { \voiceOne ... }
  \new Voice { \voiceTwo ... }
>> \oneVoice

ここで、一時多声楽節の中の最初の表記は直前に使われていた Voice コンテキストに配置され、その Voice コンテキストは一時セクションの後も続いていきます。山括弧の中の他の表記は別の一時ボイスに代入されます。これと同様に、歌詞は多声セクションの前、最中、後に続いているボイスに代入されます:

<<
  \new Voice = "melody" {
    a4
    <<
      {
        \voiceOne
        g f
      }
      \new Voice {
        \voiceTwo
        d2
      }
    >>
    \oneVoice
    e4
  }
  \new Lyrics \lyricsto "melody" {
  This is my song.
  }
>>

[image of music]

ここで、\voiceOne\voiceTwo コマンドはそれぞれのボイスの設定を定義するために必要とされています。

2 重バックスラッシュ構造

<< {...} \\ {...} >> 構造 – この中では 2 つ (あるいはそれ以上) の表記が 2 重バックスラッシュで区切られています – は、同じような構造だが 2 重バックスラッシュを持たない構造とはまったく異なる振る舞いをします: この構造の中にある すべての 表記は新たな Voice コンテキストに代入されます。それらの新しい Voice コンテキストは暗黙的に作成され、あらかじめ決められた名前 "1", "2" などを与えられます。

最初の例は以下のように書き換えることができます:

<<
  { r8 r16 g e8. f16 g8[ c,] f e16 d }
  \\
  { d16 c d8~ d16 b c8~ c16 b c8~ c16 b8. }
>>

[image of music]

一時ボイスが作成され、それから消去されることが問題にならない場合に、この構文を使用することができます。暗黙的に作成されるボイスには、それらがコードの中で現れる順番に従って、\voiceOne\voiceFour コマンドと同じ設定が与えられます。

以下の例では、真ん中のボイスは上向きの符幹を持ちます。そのため、それを 3 番目に置いて、望みどおりに上向きの符幹を持つボイス 3 にしています。休符が 2 重に譜刻されることを避けるために、空白休符を使用しています。

<<
  { 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 }
>>

[image of music]

簡単なことですが、 コンテキストとエングラーバ ボイスを明示的にインスタンス化する で説明されているように、明示的に Voice コンテキストを作成しておくと賢明です。

ボイスの順序

入力ファイルの中にある複数のボイスを譜刻する時、以下の順序で譜刻されます:

ボイス 1: 最上段
ボイス 2: 最下段
ボイス 3: 上から 2 番目
ボイス 4: 下から 2 番目
ボイス 5: 上から 3 番目
ボイス 6: 下から 3 番目
etc.

これは直感に反するように見えるかもしれませんが、自動レイアウト処理をシンプルにできます。奇数番号のボイスには上向きの符幹が与えられ、偶数番号のボイスには下向きの符幹が与えられるということに注意してください:

\new Staff <<
  \time 2/4
  { f''2 }  % 1: 最上段
  \\
  { c'2  }  % 2: 最下段
  \\
  { d''2 }  % 3: 上から 2 番
  \\
  { e'2  }  % 4: 下から 2 番
  \\
  { b'2  }  % 5: 上から 2 番
  \\
  { g'2  }  % 6: 下から 3 番
>>

[image of music]

Note: 歌詞、スパナ (スラー、タイ、強弱のヘアピン等) はボイスを ‘跨ぐ’ ことはできません。

同一のリズム

同じリズムを持ち、並行して進行する音楽を譜刻するという特殊なケースでは、並行する音楽を単一の Voice の中に組み込み、それにより和音を形成することができます。これを実現するには、並行する音楽を明示的にインスタンス化されたボイス内の同時進行音楽構造の中に置きます:

\new Voice <<
  { e4 f8 d e16 f g8 d4 }
  { c4 d8 b c16 d e8 b4 }
>>

[image of music]

この手法では、音楽が同じリズムを持たない場合に、おかしな連桁と警告を生じます。

定義済みコマンド

\voiceOne, \voiceTwo, \voiceThree, \voiceFour, \oneVoice

参照

学習マニュアル: Voices contain music, Explicitly instantiating voices

記譜法リファレンス: 打楽器の譜, 不可視の休符, 符幹

コード断片集: Simultaneous notes


ボイス スタイル

ボイス毎に異なる色と形を与えて、容易に見分けられるようにすることができます:

<<
  { \voiceOneStyle d4 c2 b4 }
  \\
  { \voiceTwoStyle e,2 e }
  \\
  { \voiceThreeStyle b2. c4 }
  \\
  { \voiceFourStyle g'2 g }
>>

[image of music]

\voiceNeutralstyle コマンドは標準の体裁に戻すために使用されます。

定義済みコマンド

\voiceOneStyle, \voiceTwoStyle, \voiceThreeStyle, \voiceFourStyle, \voiceNeutralStyle

参照

学習マニュアル: I'm hearing Voices, Other sources of information.

コード断片集: Simultaneous notes


衝突の解決

同じピッチ、同じ符頭を持ち、符幹の方向が逆で異なるボイスの中にある符頭は自動的に 1 つの符頭にまとめられます – マージされます。しかしながら、音符の符頭が異なっていたり、符幹の方向が同じである場合はマージされません。異なるボイスの中にあり、符幹の方向が逆の休符は垂直方向にずらされます。以下の例は 3 つの異なる状態を示しています – 第 1 小節の 1, 3 拍目、それに第 2 小節の 1 拍目で自動マージが失敗しています。

<<
  {
    c8 d e d c d c4
    g'2 fis
  } \\ {
    c2 c8. b16 c4
    e,2 r
  } \\ {
    \oneVoice
    s1
    e8 a b c d2
  }
>>

[image of music]

以下に示すように、異なる符頭を持つ音符をマージすることができます – 例外として、半音符と 4 分音符のマージはできません。第 1 小節の 1 拍目の符頭がマージされました:

<<
  {
    \mergeDifferentlyHeadedOn
    c8 d e d c d c4
    g'2 fis
  } \\ {
    c2 c8. b16 c4
    e,2 r
  } \\ {
    \oneVoice
    s1
    e8 a b c d2
  }
>>

[image of music]

第 1 小節の 3 拍目のように異なる付点を持つ符頭もマージすることができます:

<<
  {
    \mergeDifferentlyHeadedOn
    \mergeDifferentlyDottedOn
    c8 d e d c d c4
    g'2 fis
  } \\ {
    c2 c8. b16 c4
    e,2 r
  } \\ {
    \oneVoice
    s1
    e8 a b c d2
  }
>>

[image of music]

第 2 小節の最初の版音符と 8 分音符は正しくマージされていません。なぜなら 3 つ以上の音符が同じ列に並ぶ場合、自動マージは正しく機能できないからです。今回のケースでは、マージされた符頭が間違っています。マージが正しい符頭を選択できるようにするため、マージすべきでない符頭に \shift を適用する必要があります。ここでは、\shiftOn を適用することで、最上段にある g を列から外し、\mergeDifferentlyHeadedOn を正しく機能させています。

<<
  {
    \mergeDifferentlyHeadedOn
    \mergeDifferentlyDottedOn
    c8 d e d c d c4
    \shiftOn
    g'2 fis
  } \\ {
    c2 c8. b16 c4
    e,2 r
  } \\ {
    \oneVoice
    s1
    e8 a b c d2
  }
>>

[image of music]

\shiftOn コマンドは、ボイスの中にある音符がずれることを許可します (強制はしません)。\shiftOn がボイスに適用されると、そのボイスの中にある音符あるいは和音は、同じ向きの符幹を持つ他のボイスと符幹が衝突する場合にのみ、ずらされます。\shiftOff コマンドは、適用された時点から、このタイプの音符の移動を禁止します。

デフォルトでは、外側のボイス (通常はボイス 1 と 2) には \shiftOff が指定されていて、内側のボイス (ボイス 3 以上) には \shiftOn が指定されています。音符をずらす場合、上向きの符幹を持つボイス (奇数番号のボイス) は右側にずらされ、下向きの符幹を持つボイス (偶数番号のボイス) は左側にずらされます。

簡略化された多声表記が内部的にどのように展開されるかをお見せするための例を挙げます。

Note: 3 つ以上のボイスがある場合、入力ファイルでのボイスの垂直方向の順序は、譜上でのボイスの垂直方向の順序と同じにすべきではありません!

\new Staff \relative c'' {
  %% 簡略化された入力
  <<
    { f2  }  % 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
  >>
}

[image of music]

さらに 2 つのコマンド – \shiftOnn\shiftOnnn – は、複雑な状況で衝突を解決するために一時的に指定されるさらに大きなずれを提供します。 実際の音楽からの例 を参照してください。

音符は符幹の向きが反対である場合 (例えば、デフォルトのボイス 1 と 2 である場合や、明示的に符幹の向きが反対になるよう指定されている場合) にのみマージされます。

定義済みコマンド

\mergeDifferentlyDottedOn, \mergeDifferentlyDottedOff, \mergeDifferentlyHeadedOn, \mergeDifferentlyHeadedOff

\shiftOn, \shiftOnn, \shiftOnnn, \shiftOff

Selected Snippets

Additional voices to avoid collisions

In some instances of complex polyphonic music, additional voices are necessary to prevent collisions between notes. If more than four parallel voices are needed, additional voices can be added by defining a variable using the Scheme function context-spec-music.

voiceFive = #(context-spec-music (make-voice-props-set 4) 'Voice)

\relative c'' {
  \time 3/4
  \key d \minor
  \partial 2
  <<
    {
      \voiceOne
      a4. a8
      e'4 e4. e8
      f4 d4. c8
    }
    \\
    {
      \voiceThree
      f,2
      bes4 a2
      a4 s2
    }
    \\
    {
      \voiceFive
      s2
      g4 g2
      f4 f2
    }
    \\
    \bar "||"{
      \voiceTwo
      d2
      d4 cis2
      d4 bes2
    }
  >>
}

[image of music]

Forcing horizontal shift of notes

When the typesetting engine cannot cope, the following syntax can be used to override typesetting decisions. The units of measure used here are staff spaces.

\relative c' <<
  {
    <d g>2 <d g>
  }
  \\
  {
    <b f'>2
    \once \override NoteColumn #'force-hshift = #1.7
    <b f'>2
  }
>>

[image of music]

参照

音楽用語集: polyphony

学習マニュアル: Multiple notes at once, Voices contain music, Real music example

コード断片集: Simultaneous notes

内部リファレンス: NoteColumn, NoteCollision, RestCollision

既知の問題と警告

\override NoteColumn #'ignore-collision = ##t を使うと異なるボイスにある符頭が異なる音符を不適切にマージします。

\mergeDifferentlyHeadedOn
<< { c16 a' b a } \\ { c,2 } >>
\override NoteColumn #'ignore-collision = ##t
<< { c16 a' b a } \\ { c,2 } >>

[image of music]


自動パート結合

自動パート結合は 2 つのパートに分かれた音楽を単一の譜にマージします。これはオーケストラ譜を譜刻する時に特に有用です。ある範囲で 2 つのパートの音楽が同一である場合、1 つの Voice だけが譜刻されます。2 つのパートが異なる箇所では第 2 Voice が譜刻されます。この場合、符幹の向きはそれぞれ上と下ににセットされ、さらにソロ パートと 二重奏 (due) パートが識別されて適切なマークが付けられます。

自動パート結合の構文は以下の通りです:

\partcombine musicexpr1 musicexpr2

以下の例は自動パート結合の基本的な機能を示しています: 2 つのパートを単一の譜に多声部として配置し、それぞれの符幹の向きをセットしています。個々のパート譜と結合譜で同じ変数が使用されています。

instrumentOne = \relative c' {
  c4 d e f |
  R1 |
  d'4 c b a |
  b4 g2 f4 |
  e1 |
}

instrumentTwo = \relative g' {
  R1 |
  g4 a b c |
  d4 c b a |
  g4 f( e) d |
  e1 |
}

<<
  \new Staff \instrumentOne
  \new Staff \instrumentTwo
  \new Staff \partcombine \instrumentOne \instrumentTwo
>>

[image of music]

両パートの第 3 小節の音符は同じなので、片方の音符だけが譜刻されています。符幹、スラー、それにタイの向きは、ソロなのかあるいは斉奏なのかによって、自動的に設定されます。多声が必要になる場合、第 1 パート (one と呼ばれるコンテキストを持ちます) は常に上向きの符幹を持ち、一方、第 2 パート (two と呼ばれるコンテキストを持ちます) は常に下向きの符幹を持ちます。ソロの場合、第 1 パートと第 2 パートにはそれぞれ ‘Solo’ と ‘Solo II’ というマークが付けられます。斉奏 (二重奏) パートには、デフォルトで、テキスト “a2” というマークが付けられます。

\partcombine の 2 つの引数は別個の Voice コンテキストとして解釈されます。そのため、相対オクターブを用いる場合、両方のパートで \relative を記述すべきです。すなわち、以下のように記述します:

\partcombine
  \relative … musicexpr1
  \relative … musicexpr2

\partcombine の外側にある \relative セクションは musicexpr1musicexpr2 のピッチには影響を与えません。

プロの楽譜では長いパッセージで、2 つのボイスの音符のいくつかが同じでユニゾンとして譜刻できる場合であっても、ボイスを分けて譜刻することがあります。 ですから、音符を和音に組み合わせることと、1 つのボイスをソロとして表示することは等価ではありません。なぜなら、\partcombine 関数は各音符を個々に考慮するからです。 このような場合、\partcombine 関数を以下のコマンドでオーバライドすることができます:

...Once で終わるコマンドは、コマンドの次に来る音符だけに適用されます。

instrumentOne = \relative c' {
  \partcombineApart c2^"apart" e |
  \partcombineAutomatic e2^"auto" e |
  \partcombineChords e'2^"chord" e |
  \partcombineAutomatic c2^"auto" c |
  \partcombineApart c2^"apart" \partcombineChordsOnce e^"chord once" |
  c2 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 }
>>

[image of music]

Selected Snippets

Combining two parts on the same staff

The part combiner tool ( \partcombine command ) allows the combination of several different parts on the same staff. Text directions such as “solo” or “a2” are added by default; to remove them, simply set the property printPartCombineTexts to f. For vocal scores (hymns), there is no need to add “solo/a2” texts, so they should be switched off. However, it might be better not to use it if there are any solos, as they won’t be indicated. In such cases, standard polyphonic notation may be preferable.

This snippet presents the three ways two parts can be printed on a same staff: standard polyphony, \partcombine without texts, and \partcombine with texts.

musicUp = \relative c'' {
  \time 4/4
  a4 c4.( g8) a4 |
  g4 e' g,( a8 b) |
  c b a2.
}

musicDown = \relative c'' {
  g4 e4.( d8) c4 |
  r2 g'4( f8 e) |
  d2 \stemDown a
}

\score {
  <<
    <<
    \new Staff {
      \set Staff.instrumentName = #"Standard polyphony"
      << \musicUp \\ \musicDown >>
    }
    \new Staff \with { printPartCombineTexts = ##f } {
      \set Staff.instrumentName = #"PartCombine without texts"
      \partcombine \musicUp \musicDown
    }
    \new Staff {
      \set Staff.instrumentName = #"PartCombine with texts"
      \partcombine \musicUp \musicDown
    }
    >>
  >>
  \layout {
    indent = 6.0\cm
    \context {
      \Score
      \override SystemStartBar #'collapse-height = #30
    }
  }
}

[image of music]

Changing partcombine texts

When using the automatic part combining feature, the printed text for the solo and unison sections may be changed:

\new Staff <<
  \set Staff.soloText = #"girl"
  \set Staff.soloIIText = #"boy"
  \set Staff.aDueText = #"together"
  \partcombine
    \relative c'' {
      g4 g r r
      a2 g
    }
    \relative c'' {
      r4 r a( b)
      a2 g
    }
>>

[image of music]

参照

音楽用語集: a due, part

記譜法リファレンス: パートを記述する

コード断片集: Simultaneous notes

内部リファレンス: PartCombineMusic, Voice

既知の問題と警告

すべての \partcombine... はボイスを 2 つだけ受け取ることができ、歌詞を処理するようには設計されていません。ボイスに歌詞が付けられている場合、パート結合は処理を停止します。

\partcombine 関数を \times ブロックや \relative ブロックの中に置くことはできません。

printPartCombineTexts がセットされていて、ある小節で 2 つのボイスの音符が同じである場合、パート結合はその小節で a2 を複数譜刻する可能性があります。

\partcombineVoice の中の音符の開始だけを検知します。例えば、ある Voice でパート結合を開始した時に、他の Voice で音符がすでに開始しているかどうかを知ることはできません。このことは “Solo” や “Unison” が不適切に譜刻されるといった予期しない問題を引き起こす可能性があります

\partcombine はすべてのスパナ (スラー、タイ、強弱のヘアピン等) を同じ Voice で維持します。そのため、異なる Voice で始まる / 終わるスパナは不適切にの譜刻されたり、全く譜刻されなかったりする可能性があります。

\partcombine 関数が 2 つのパートを組み合わせることができない場合 (すなわち、2 つのボイスの演奏時間が異なる場合)、内部的に 2 つのボイスにカスタム名を付与します: それぞれ onetwo です。このことは、異なる名前を付けられた Voice への “切り替え” があった場合、その Voice のイベントは無視されることを意味します。

デフォルトのタブ譜 のタブ譜や 自動連桁音符 に対して \partcombine を使う場合は、それぞれの 既知の問題と警告 も参照してください。


音楽を並列に記述する

複数のパートを持つ音楽を入力コードの途中に挿入することができます。関数 \parallelMusic は、作成する変数名をいくつか持つリストと音楽表記を受け付けます。各小節ごとの音楽表記は各変数の値となり、後で音楽を譜刻するために使用することができます。

Note: 小節チェック | を使用する必要があり、各小節は同じ長さでなければなりません。

\parallelMusic #'(voiceA voiceB voiceC) {
  % Bar 1
  r8 g'16 c'' e'' g' c'' e'' r8 g'16 c'' e'' g' c'' e'' |
  r16 e'8.~   e'4            r16 e'8.~   e'4            |
  c'2                        c'2                        |

  % Bar 2
  r8 a'16 d'' f'' a' d'' f'' r8 a'16 d'' f'' a' d'' f'' |
  r16 d'8.~   d'4            r16 d'8.~   d'4            |
  c'2                        c'2                        |

}
\new StaffGroup <<
  \new Staff << \voiceA \\ \voiceB >>
  \new Staff { \clef bass \voiceC }
>>

[image of music]

相対モードを使用することができます。\relative コマンドを \parallelMusic 自体の中では使用しないということに注意してください。音符が前の音符と相対関係になるのはボイスの中であり、入力の中ではありません – 言い換えると、voiceA の相対音符は voiceB の音符を無視します。

\parallelMusic #'(voiceA voiceB voiceC) {
  % Bar 1
  r8 g16 c e g, c e r8 g,16 c e g, c e  |
  r16 e8.~ e4       r16 e8.~  e4        |
  c2                c                   |

  % Bar 2
  r8 a,16 d f a, d f r8 a,16 d f a, d f |
  r16 d8.~  d4       r16 d8.~  d4       |
  c2                 c                  |

 }
\new StaffGroup <<
  \new Staff << \relative c'' \voiceA \\ \relative c' \voiceB >>
  \new Staff \relative c' { \clef bass \voiceC }
>>

[image of music]

これはピアノ譜で非常に良く機能します。以下の例は、4 つの連続する小節を 4 つの変数に割り当てています:

global = {
  \key g \major
  \time 2/4
}

\parallelMusic #'(voiceA voiceB voiceC voiceD) {
  % Bar 1
  a8    b     c   d     |
  d4          e         |
  c16 d e fis d e fis g |
  a4          a         |

  % Bar 2
  e8      fis  g     a   |
  fis4         g         |
  e16 fis g  a fis g a b |
  a4           a         |

  % Bar 3 ...
}

\score {
  \new PianoStaff <<
     \new Staff {
       \global
       <<
         \relative c'' \voiceA
         \\
         \relative c'  \voiceB
       >>
     }
     \new Staff {
       \global \clef bass
       <<
         \relative c \voiceC
         \\
         \relative c \voiceD
       >>
     }
  >>
}

[image of music]

参照

学習マニュアル: Organizing pieces with variables

コード断片集: Simultaneous notes


他の言語: English, deutsch, español, français, italiano
About automatic language selection.

LilyPond — 記譜法リファレンス