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

多声部音楽を作成するためにボイス コンテキストを手動で << >> ブロックの中に作成することもできます。符幹、スラーなどの向きを示すために \voiceOne\voiceFour を使用します。この手法は各ボイスを別々にして、より記述的な名前を与えることを可能にするため、長い楽譜ではわかりやすいものになります。

本質的には、前のセクションで使用した構造 << \\ >>:

\new Staff {
  \relative {
    << { e'4 f g a } \\ { c,4 d e f } >>
  }
}

は以下と等価です:

\new Staff <<
  \new Voice = "1" { \voiceOne \relative { e'4 f g a } }
  \new Voice = "2" { \voiceTwo \relative { c'4 d e f } }
>>

上記の両方ともが以下の楽譜を生成します:

[image of music]

\voiceXXX コマンドは符幹、スラー、タイ、アーティキュレーション、テキストの注釈、付点音符の付点、運指記号の向きをセットします。\voiceOne\voiceThree はこれらのオブジェクトを上向きにし、一方の \voiceTwo\voiceFour は下向きにします。さらに、符頭の衝突を避ける必要がある場合、これらのコマンドは各ボイスに対して水平方向のシフトを発生させます。コマンド \oneVoice は設定を単一のボイスの場合の通常値に戻します。

いくつかの簡単な例で、\oneVoice, \voiceOne, \voiceTwo がマークアップ、タイ、スラー、強弱記号に与える影響を見ていきましょう:

\relative {
  % Default behavior or behavior after \oneVoice
  c'4 d8~ 8 e4( f | g4 a) b-> c |
}

[image of music]

\relative {
  \voiceOne
  c'4 d8~ 8 e4( f | g4 a) b-> c |
  \oneVoice
  c,4 d8~ 8 e4( f | g4 a) b-> c |
}

[image of music]

\relative {
  \voiceTwo
  c'4 d8~ 8 e4( f | g4 a) b-> c |
  \oneVoice
  c,4 d8~ 8 e4( f | g4 a) b-> c |
}

[image of music]

今度は、前のセクションの例を使って同じ多声部音楽のパッセージを 4 つの異なる方法で表記する例を見ていきます。それぞれ異なる状況で利点があります。

1 つはメイン ボイスに属する << >> の内部に直接表記を記述する方法です (しかしながら、音符は << \\ >> 構造の中に置かれてはいません)。これはメイン ボイスの途中で追加のボイスが現れる場合に有用です。ここでは例にさらに調整を加えます。赤のダイアモンド形の音符はメイン メロディが単一のボイス コンテキストになっていて、その上にフレージング スラーを描くことができるということを示しています。

\new Staff \relative {
  \voiceOneStyle
  % This section is homophonic
  c'16^( d e f
  % Start simultaneous section of three voices
  <<
    % Continue the main voice in parallel
    { g4 f e | d2 e) | }
    % Initiate second voice
    \new Voice {
      % Set stems, etc., down
      \voiceTwo
      r8 e4 d c8~ | 8 b16 a b8 g~ 2 |
    }
    % Initiate third voice
    \new Voice {
      % Set stems, etc, up
      \voiceThree
      s2. | s4 b c2 |
    }
  >>
}

[image of music]

\voices コマンドはメインのボイスを同時進行表記へと続けるためにも使えます。

\new Staff \relative {
  \new Voice = "main" {
    \voiceOneStyle
    % ここは単声です
    c'16^( d e f
    % 3 ボイスの同時進行表記を開始
    \voices "main",2,3
    <<
      % メインのボイスの続き
      { g4 f e | d2 e) | }
      % ボイス 2 の開始
    \\
      % 符幹などの向きが下になります
      { r8 e4 d c8~ | 8 b16 a b8 g~ 2 | }
    \\
      % ボイス 3 の開始
      % 符幹などの向きが上になります
      { s2. | s4 b c2 | }
    >>
  }
}

[image of music]

より深くネストしたポリフォニー構造が可能であり、ボイスが短時間しか現れない場合、これは音楽を組版するより自然な方法です:

\new Staff \relative {
  c'16^( d e f
  <<
    { g4 f e | d2 e) | }
    \new Voice {
      \voiceTwo
      r8 e4 d c8~ |
      <<
        { c8 b16 a b8 g~ 2 | }
        \new Voice {
          \voiceThree
          s4 b c2 |
        }
      >>
    }
  >>
}

[image of music]

新しいボイスを一時的にネストさせる手法は音楽のほんの一部だけが多声である場合に有用です。しかしながら、楽譜全体が多声である場合、一貫して複数のボイスを使用した方がわかりやすくなります。ボイスが無音の場所を飛ばすには以下のように空白音符を使用します:

\new Staff \relative <<
  % Initiate first voice
  \new Voice {
    \voiceOne
    c'16^( d e f g4 f e | d2 e) |
  }
  % Initiate second voice
  \new Voice {
    % Set stems, etc, down
    \voiceTwo
    s4 r8 e4 d c8~ | 8 b16 a b8 g~ 2 |
  }
  % Initiate third voice
  \new Voice {
    % Set stems, etc, up
    \voiceThree
    s1 | s4 b c2 |
  }
>>

[image of music]

音符列

和音の中で小さな間隔で置かれる音符、あるいは異なるボイスで同時に発生する音符は、符頭が重なるのを避けるために 2 列、時にはそれ以上の列に割り振られます。これらの列は音符列と呼ばれます。それぞれのボイスに対して別々の列が存在し、符頭の衝突が起こる場合はボイスごとのシフトが適用されます。これは上の例でも見ることができます。2 小節目でボイス 2 の C はボイス 1 の D との関係で右にシフトされていて、最後の和音でボイス 3 の C も他の音符との関係で右にシフトされています。

\shiftOn, \shiftOnn, \shiftOnnn, それに \shiftOff コマンドは、衝突が起こる場合に音符や和音をシフトさせる度合いを指定します。デフォルトでは、外側のボイス (通常はボイス 1 と 2) には \shiftOff が指定されていて、内側のボイス (ボイス 3 と 4) には \shiftOn が指定されています。シフトが適用される場合、ボイス 1 と 3 は右にシフトされ、ボイス 2 と 4は左にシフトされます。

\shiftOnn\shiftOnnn はさらなるシフト レベルを定義するものであり、複雑な状況での衝突を解決するために一時的に指定されるかもしれません – 実際の音楽からの例 を参照してください。

ある音符列は上向きの符幹を持つボイスからの音符 (あるいは和音) を 1 つだけ、下向きの符幹を持つボイスからの音符 (あるいは和音) を 1 つだけ保持することができます。同じ向きの符幹を持つ 2 つのボイスからの音符が同じ位置に置かれ、両方のボイスにシフトが指定されていない、あるいは同じシフトが指定されている場合、エラー メッセージ “This voice needs a \voiceXx or \shiftXx setting” (このボイスは \voiceXx\shiftXx の設定が必要です) が生成されます。

参照

学習マニュアル: Moving objects

記譜法リファレンス: 複数のボイス


GNU LilyPond 学習マニュアル v2.25.21 (開発版).