5.4.6 スパナ

多くの音楽記譜オブジェクトは、複数の音符あるいは複数の小節にまたがって、広がりを持ちます。例としては、スラー、連桁、連譜の囲み、volta 繰り返しの囲み、クレッシェンド、トリル、それにグリッサンドがあります。そのようなオブジェクトは総称して “スパナ” と呼ばれ、それらの見た目と振る舞いを制御するための特殊なプロパティを持ちます。これらのプロパティのいくつかは、すべてのスパナに共通しています。他のプロパティはスパナの部分集合に限定されています。

すべてのスパナは spanner-interface をサポートします。いくつかのスパナ – 2 つのオブジェクトの間に直線を描くもの – は、さらに、line-spanner-interface をサポートします。


spanner-interface を使用する

このインターフェイスは、いくつかのスパナに適用される 2 つのプロパティを提供します。

The minimum-length プロパティ

スパナの最短の長さは、minimum-length プロパティによって指定されます。通常、このプロパティを増加させると、スパナの両端の間にある音符の間隔は増加します。しかしながら、このオーバライドは多くのスパナで効果を持ちません。なぜなら、それらの長さは他の要素によって決定されるからです。以下に効果を持つ例を 2, 3 示します。

a'~ a'
a'
% タイの長さを増加させます
-\tweak minimum-length #5
~ a'

[image of music]

\relative \compressMMRests {
  a'1
  R1*23
  % 休符バーの長さを増加させます
  \once \override MultiMeasureRest.minimum-length = #20
  R1*23
  a1
}

[image of music]

\relative {
  a' \< a a a \!
  % ヘアピンの長さを増加させます
  \override Hairpin.minimum-length = #20
  a \< a a a \!
}

[image of music]

さらに、このオーバライドはスラーとフレージング スラーの長さを増加させるためにも使用されます:

\relative {
  a'( g)
  a
  -\tweak minimum-length #5
  ( g)

  a\( g\)
  a
  -\tweak minimum-length #5
  \( g\)
}

[image of music]

いくつかのレイアウト オブジェクトでは、minimum-length プロパティは、set-spacing-rods プロシージャが明示的に呼び出された場合にのみ効果を持ちます。このプロシージャを呼び出すには、springs-and-rods プロパティにly:spanner::set-spacing-rods をセットしておく必要があります。例えば、グリッサンドの最短長は、springs-and-rods プロパティが設定されていない限り、効果を持ちません:

% デフォルト
e' \glissando c''

% 単独では効果を持ちません
\once \override Glissando.minimum-length = #20
e' \glissando c''

% 以下の両方のオーバライドが存在する場合にのみ、効果を持ちます
\once \override Glissando.minimum-length = #20
\once \override Glissando.springs-and-rods = #ly:spanner::set-spacing-rods
e' \glissando c''

[image of music]

Beam オブジェクトでも同じことが言えます:

% 単独では効果を持ちません
\once \override Beam.minimum-length = #20
e'8 e' e' e'

% 以下の両方のオーバライドが存在する場合にのみ、効果を持ちます
\once \override Beam.minimum-length = #20
\once \override Beam.springs-and-rods = #ly:spanner::set-spacing-rods
e'8 e' e' e'

[image of music]

The to-barline プロパティ

spanner-interface の 2 番目に有用なプロパティは to-barline です。デフォルトではこのプロパティは真であり、小節の最初の音符のところで終了するヘアピンや他のスパナは直前の小節線のところで終了させられます。偽に設定すると、スパナは小節線を越えて、音符のところで終了します:

\relative {
  a' \< a a a a \! a a a \break
  \override Hairpin.to-barline = ##f
  a \< a a a a \! a a a
}

[image of music]

このプロパティはすべてのスパナに対して効果を持つわけではありません。例えば、スラーやフレージング スラー、あるいは小節線で終了させることに意味が無い他のスパナに対して、このプロパティを #t に設定しても効果がありません。


line-spanner-interface を使用する

line-spanner-interface をサポートするオブジェクトには以下のものがあります:

これらのスパナのステンシルを描画する責任を持つルーチンは ly:line-spanner::print です。このルーチンはスパナの両端の位置を綿密に決定し、求めに応じたスタイルでそれらの間に線を描きますスパナの両端の位置はオンザフライ (その場、その時々) で算出されますが、それらの Y 座標をオーバライドすることができます。指定する必要のあるプロパティは、プロパティ階層内で 2 階層下にネストされていますが、この \override コマンドは非常にシンプルです:

e''2 \glissando b'
\once \override Glissando.bound-details.left.Y = #3
\once \override Glissando.bound-details.right.Y = #-2
e''2 \glissando b'

[image of music]

Y プロパティの単位は staff-space であり、譜の中央線が 0 位置です。グリッサンドでは、スパナの両端は各符頭の中心であり、Y はそれらの点を上下させます。

Y が設定されていない場合、値はスパナの両端の垂直位置から算出されます。

改行の場合、終点の Y の値は bound-details の部分リスト left-brokenright-broken のによって指定されます。例を示します:

\override Glissando.breakable = ##t
\override Glissando.bound-details.right-broken.Y = #-3
c''1 \glissando \break
f''1

[image of music]

bound-details プロパティの部分リスト leftright の下位プロパティのいくつかは、Y と同じ方法で変更することができます:

Y

終点の Y 座標を、譜の中央線からの staff-space オフセットで、設定します。デフォルトでは、終点オブジェクトの中心です。ですから、グリッサンドは符頭の中心に向かって進みます。

水平方向に広がるスパナ – テキスト スパナやトリル スパナなど – では、この値は 0 に固定されています。

attach-dir

スパナのラインがオブジェクトの左右どちらから始まり、終わるのかを決定します。-1 (あるいは LEFT) であれば、ラインは符頭の左側から開始あるいは終了します。

X

終点の絶対 X 座標です。通常、オンザフライ (その場、その時々) で算出され、これをオーバライドしてもあまり意味がありません。

stencil

ライン スパナは開始点や終了点で記号を持つ場合があり、その記号はこのサブ プロパティに保持されています。このサブ プロパティは内部で使用するためのものです。このサブ プロパティの代わりに text を使用することを推奨します。

text

ステンシルを作成するために評価されるマークアップです。水平スパナに cresc., tr それに他のテキストを配置するために使用されます。

\override TextSpanner.bound-details.left.text
   = \markup { \small \bold Slower }
\relative { c''2\startTextSpan b c a\stopTextSpan }

[image of music]

stencil-align-dir-y
stencil-offset

これらの 1 つを設定しなければ、ステンシルは、XY サブ プロパティで定義されたとおりに、ラインに中央揃えで、終点に配置されます。stencil-align-dir-y あるいは stencil-offset のどちらかを設定すると、記号が上下します:

\override TextSpanner.bound-details.left.stencil-align-dir-y = #-2
\override TextSpanner.bound-details.right.stencil-align-dir-y = #UP

\override TextSpanner.bound-details.left.text = "ggg"
\override TextSpanner.bound-details.right.text = "hhh"

\relative { c'4^\startTextSpan c c c \stopTextSpan }

[image of music]

予期される結果とは逆に、負の値はテキストを 上げる ということに注意してください。なぜなら、-1 あるいは DOWN はテキストの 下端 をスパナ ラインに揃え、 1 あるいは UP はテキストの 上端 をスパナ ラインに揃えるからです。

arrow

このサブ プロパティに #t をセットするとラインの終点に矢印が描かれます。

padding

このサブ プロパティはラインの終点と実際の終点の間のスペースを制御します。パディングがなければ、グリッサンドは両端の符頭の中心から描かれます。

音楽関数 \endSpanners は直後の音符から始まるスパナをすぐに終了させます。ちょうど 1 音符分でスパナを終了させますが、to-barline が真で、かつ、次の音符の前に小節線がある場合はその小節線のところでスパナを終了させます。

\relative c'' {
  \endSpanners
  c2 \startTextSpan c2 c2
  \endSpanners
  c2 \< c2 c2
}

[image of music]

\endSpanners を使用している場合、\startTextSpan\endTextSpan で閉じる必要はなく、ヘアピンを \! で閉じる必要もありません。

参照

内部リファレンス: TextSpanner, Glissando, VoiceFollower, TrillSpanner, line-spanner-interface


LilyPond — 記譜法リファレンス v2.23.8 (開発版).