4.6.2 表記の重なりを修正する

今度は、前のセクションで扱ったプロパティが記譜の重なりを解決する手助けをどのようにできるかを見ていきましょう。


padding プロパティ

padding プロパティに値をセットすることによって、音符とその上または下に譜刻される記号との間の距離を増減することができます。

c'2\fermata
\override Script.padding = #3
b2\fermata

[image of music]

% これは機能しません。この下を見てください
\override MetronomeMark.padding = #3
\tempo 4 = 120
c'1 |
% これは機能します
\override Score.MetronomeMark.padding = #3
\tempo 4 = 80
d'1 |

[image of music]

2 番目の例では、ある特定のオブジェクトを扱うのはどのコンテキストなのかを突き止めることが重要であるということに注意してください。MetronomeMark オブジェクトは Score コンテキストの中で処理されるため、Voice コンテキストの中でのプロパティの変更は無視されます。更に詳細を知りたければ、 Modifying properties を参照してください。

outside-staff-priority に従って配置されているオブジェクトの並びの中のあるオブジェクトの padding プロパティが増やされた場合、そのオブジェクトとそれよりも外側にあるすべてオブジェクトが移動させられます。


right-padding プロパティ

right-padding プロパティは臨時記号とそれが適用される音符との間のスペースに影響を与えます。このプロパティを変更することは必ずしも必要ではありませんが、微分音の音楽で使われる特殊な臨時記号の図柄や図柄の組み合わせに対してデフォルトのスペースが適切ではない場合に必要となるかもしれません。臨時記号のステンシルを望みのシンボルを保持するマークアップにオーバライドする必要があります:

sesquisharp = \markup { \sesquisharp }
\relative {
  c''4
  % これは 1.5 倍シャープを譜刻しますが、スペースが小さすぎます
  \once \override Accidental.stencil = #ly:text-interface::print
  \once \override Accidental.text = #sesquisharp
  cis4 c
  % これはスペースを改善しています
  \once \override Score.AccidentalPlacement.right-padding = #0.6
  \once \override Accidental.stencil = #ly:text-interface::print
  \once \override Accidental.text = #sesquisharp
  cis4 |
}

[image of music]

これは必然的に臨時記号のステンシルをオーバライドすることになります。このオーバライドについては後々までカバーされません。ステンシル タイプは手続きでなければならず、ここでは Accidentaltext プロパティの内容 – 内容には 1.5 倍シャープがセットされています – を譜刻するように変更されています。それらの記号は right-padding のオーバライドによって符頭からさらに遠くへ移動させられています。


staff-padding プロパティ

staff-padding を使うことで、強弱記号などのオブジェクトを、他のオブジェクトが譜から離すよう強制しない限り、譜から一定の距離にあるベースラインに揃えることができます。このプロパティは DynamicText のプロパティではなく、DynamicSpanner のプロパティです。この理由は、このベースラインは延長スパナを含む すべて の強弱記号に等しく適用されるべきだからです。そのため、これは以前のセクションでの例の中にある強弱記号を揃えるための方法になります:

\override DynamicLineSpanner.staff-padding = #3
\relative { a'4\f b\mf a\p b\mp }

[image of music]


self-alignment-X プロパティ

以下の例はこのプロパティが、運指法記号オブジェクトの右端を親の音符の参照ポイントに揃えることによって、弦楽器の運指法記号オブジェクトと音符の符幹との相対位置を調整している様子を示しています:

\voiceOne
<a''\2>
\once \override StringNumber.self-alignment-X = #RIGHT
<a''\2>

[image of music]


staff-position プロパティ

あるボイスの中にある複数小節に亘る休符は他のボイスの中にある音符と衝突する可能性があります。このような休符は小節線と小節線の間の中央に譜刻されるため、LilyPond がそれと衝突するかもしれない音符を突き止めるのは非常に困難です。なぜなら、現在の音符間それに音符-休符間の衝突対応は、同時に起こる音符と休符に対してのみ行われるからです。以下に、このタイプの衝突の例を挙げます:

<< \relative { c'4 c c c } \\ { R1 } >>

[image of music]

ここでの最良の解決策は、複数小節に亘る休符を下へ移動させることです。なぜなら、その休符はボイス 2 の中にあるからです。\voiceTwo (すなわち、<<{…} \\ {…}>> 構造の 2 番目のボイス) のデフォルト状態では、MultiMeasureReststaff-position-6 にセットされています。そのため、そのプロパティを、例えば半譜スペース 4 つ分押し下げるには、-10 に変更する必要があります。

<<
  \relative { c'4 c c c }
  \\
  \override MultiMeasureRest.staff-position = #-10
  { R1 }
>>

[image of music]

これは、例えば extra-offset を使うよりも良い解決方法です。なぜなら、その休符の上に加線が自動的に挿入されるからです。

正確な値と不正確な値の違いについては、 タイを手動で譜刻する を参照してください。


extra-offset プロパティ

extra-offset プロパティは、あるオブジェクトの水平方向と垂直方向の配置を完全に制御します。

以下の例では、2 番目の運指法記号が少し左に、そして 1.8 譜スペース下に移動させられています:

f'4-5
\once \override Fingering.extra-offset = #'(-0.3 . -1.8)
f'4-5

[image of music]


positions プロパティ

positions プロパティは連符、スラー、フレージング スラー、連桁の位置を手動で制御することができ、それにより傾きも制御できます。

ここで、フレージング スラーとスラーが衝突している例を示します:

\relative { a'8 \( ( a'16 ) a \) }

[image of music]

衝突を解決するために、フレージング スラーの両端を上に移動させます。左端を譜中央線よりも 2.5 譜スペース上に設定し、右端を 4.5 譜スペース上に設定すると、LilyPond は候補の中から両端の位置が最も設定に近いフレージング スラーを選択します:

\once \override PhrasingSlur.positions = #'(2.5 . 4.5)
a'8 \( ( a''16 ) a'' \)

[image of music]

これで改善されました。しかしながら、スラーの右端を少し下げてみてはどうでしょうか?そうしようとした場合、この方法では実行できないことがわかります。すでに表示されているスラーよりも右端が下がっている候補は無く、そのような場合には positions は効果を持たないからです。しかしながら、必要があればタイ、スラー、それにフレージング スラーの位置と形状を非常に正確に設定することが できます。正確な設定を行う方法は Modifying ties and slurs で学習してください。

もう 1 つ例を示します。連桁がタイと衝突しています:

{
  \time 4/2
  <<
    \relative { c'1~ 2. e8 f }
    \\
    \relative {
      e''8 e e e
      e e e e
      f2 g
    }
  >>
  <<
    \relative { c'1~ 2. e8 f }
    \\
    \relative {
      e''8 e e e
      e e e e
      f2 g
    }
  >>
}

[image of music]

これは、譜の中央線から 1.81 譜スペース上の位置にある連桁の両端を、例えば、1 に手動で上げることによって解決することができます:

{
  \time 4/2
  <<
    \relative { c'1~ 2. e8 f }
    \\
    \relative {
      \override Beam.positions = #'(-1 . -1)
      e''8 e e e
      e e e e
      f2 g
    }
  >>
  <<
    \relative { c'1~ 2. e8 f }
    \\
    \relative {
      e''8 e e e
      e e e e
      f2 g
      \revert Beam.positions
    }
  >>
}

[image of music]

オーバライドの効果は継続して第 2 小節のボイス 2 の 8 分音符にも適用されていますが、ボイス 1 の連桁には、その後の第 2 小節においてもまったく適用されていないということに注意してください。例に示したように、オーバライドがもう適用されるべきでないところではオーバライドをリバートするべきです。


force-hshift プロパティ

今や、私はボイスを聴いている の最後で挙げた Chopin の例にどのように修正を加えるべきかを知っています。この例は以下のような状態でした:

\new Staff \relative {
  \key aes \major
  <<
    { c''2 aes4. bes8 }
    \\
    { <ees, c>2 des }
    \\
    \\
    { aes'2 f4 fes }
  >> |
  <c ees aes c>1 |
}

[image of music]

最初の和音の内声の音 (つまり、4 番目のボイスにある A-フラット) を上の音符の音符列からずらす必要はありません。そのために \shiftOff を用います。

2 番目の和音では、F を A-フラットに揃えて、符幹の衝突を避けるために最下段の音符を少し右に移動させるべきでしょう。そうするには、D-フラットの NoteColumnforce-hshift を設定して譜スペースの半分だけ右にずらし、F の force-hshift をゼロにします。注意すべきことは、すぐ後のタイミングを越えて設定が伝播してしまわないように、 \once を使っているということです。 この小さい例においては、ボイス 4 の \once と 2 個目の \override (訳注: \shiftOff のこと) は省略できますが、それは良い方法ではありません。

ここで、最終結果を挙げます:

\new Staff \relative {
  \key aes \major
  <<
    { c''2 aes4. bes8 }
    \\
    { <ees, c>2 \once \override NoteColumn.force-hshift = 0.5 des }
    \\
    \\
    { \once \shiftOff aes'2 \once \shiftOff f4 fes }
  >> |
  <c ees aes c>1 |
}

[image of music]


LilyPond — 学習マニュアル v2.23.3 (開発版).