[ << デフォルトを変更する ] | [トップ][目次][インデックス] | [ 付表 >> ] |
[ < 譜記号プロパティ ] | [ 上へ : 役に立つコンセプトとプロパティ ] | [ spanner-interface を使用する > ] |
5.4.6 スパナ
多くの音楽記譜オブジェクトは、複数の音符あるいは複数の小節にまたがって、広がりを持ちます。例としては、スラー、連桁、連譜の囲み、volta 繰り返しの囲み、クレッシェンド、トリル、それにグリッサンドがあります。そのようなオブジェクトは総称して “スパナ” と呼ばれ、それらの見た目と振る舞いを制御するための特殊なプロパティを持ちます。これらのプロパティのいくつかは、すべてのスパナに共通しています。他のプロパティはスパナの部分集合に限定されています。
すべてのスパナは spanner-interface
をサポートします。いくつかのスパナ – 2 つのオブジェクトの間に直線を描くもの – は、さらに、line-spanner-interface
をサポートします。
spanner-interface を使用する | ||
line-spanner-interface を使用する |
[ << デフォルトを変更する ] | [トップ][目次][インデックス] | [ 付表 >> ] |
[ < スパナ ] | [ 上へ : スパナ ] | [ line-spanner-interface を使用する > ] |
spanner-interface
を使用する
このインターフェイスは、いくつかのスパナに適用される 2 つのプロパティを提供します。
The minimum-length
プロパティ
スパナの最短の長さは、minimum-length
プロパティによって指定されます。通常、このプロパティを増加させると、スパナの両端の間にある音符の間隔は増加します。しかしながら、このオーバライドは多くのスパナで効果を持ちません。なぜなら、それらの長さは他の要素によって決定されるからです。以下に効果を持つ例を 2, 3 示します。
a'~ a' a' % タイの長さを増加させます -\tweak minimum-length #5 ~ a'
\relative \compressMMRests { a'1 R1*23 % 休符バーの長さを増加させます \once \override MultiMeasureRest.minimum-length = #20 R1*23 a1 }
\relative { a' \< a a a \! % ヘアピンの長さを増加させます \override Hairpin.minimum-length = #20 a \< a a a \! }
さらに、このオーバライドはスラーとフレージング スラーの長さを増加させるためにも使用されます:
\relative { a'( g) a -\tweak minimum-length #5 ( g) a\( g\) a -\tweak minimum-length #5 \( g\) }
いくつかのレイアウト オブジェクトでは、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''
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'
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 }
このプロパティはすべてのスパナに対して効果を持つわけではありません。例えば、スラーやフレージング スラー、あるいは小節線で終了させることに意味が無い他のスパナに対して、このプロパティを #t
に設定しても効果がありません。
[ << デフォルトを変更する ] | [トップ][目次][インデックス] | [ 付表 >> ] |
[ < spanner-interface を使用する ] | [ 上へ : スパナ ] | [ オブジェクトの可視性 > ] |
line-spanner-interface
を使用する
line-spanner-interface
をサポートするオブジェクトには以下のものがあります:
-
DynamicTextSpanner
-
Glissando
-
TextSpanner
-
TrillSpanner
-
VoiceFollower
これらのスパナのステンシルを描画する責任を持つルーチンは
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'
Y
プロパティの単位は staff-space
であり、譜の中央線が 0 位置です。グリッサンドでは、スパナの両端は各符頭の中心であり、Y
はそれらの点を上下させます。
Y
が設定されていない場合、値はスパナの両端の垂直位置から算出されます。
改行の場合、終点の Y
の値は bound-details
の部分リスト left-broken
や right-broken
のによって指定されます。例を示します:
\override Glissando.breakable = ##t \override Glissando.bound-details.right-broken.Y = #-3 c''1 \glissando \break f''1
bound-details
プロパティの部分リスト left
や right
の下位プロパティのいくつかは、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 }
-
stencil-align-dir-y
-
stencil-offset
これらの 1 つを設定しなければ、ステンシルは、
X
とY
サブ プロパティで定義されたとおりに、ラインに中央揃えで、終点に配置されます。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 }
予期される結果とは逆に、負の値はテキストを 上げる ということに注意してください。なぜなら、
-1
あるいはDOWN
はテキストの 下端 をスパナ ラインに揃え、1
あるいはUP
はテキストの 上端 をスパナ ラインに揃えるからです。-
arrow
このサブ プロパティに
#t
をセットするとラインの終点に矢印が描かれます。-
padding
このサブ プロパティはラインの終点と実際の終点の間のスペースを制御します。パディングがなければ、グリッサンドは両端の符頭の中心から描かれます。
音楽関数 \endSpanners
は直後の音符から始まるスパナをすぐに終了させます。ちょうど 1 音符分でスパナを終了させますが、to-barline
が真で、かつ、次の音符の前に小節線がある場合はその小節線のところでスパナを終了させます。
\relative c'' { \endSpanners c2 \startTextSpan c2 c2 \endSpanners c2 \< c2 c2 }
\endSpanners
を使用している場合、\startTextSpan
を \endTextSpan
で閉じる必要はなく、ヘアピンを \!
で閉じる必要もありません。
参照
内部リファレンス: TextSpanner, Glissando, VoiceFollower, TrillSpanner, line-spanner-interface
[ << デフォルトを変更する ] | [トップ][目次][インデックス] | [ 付表 >> ] |
[ < spanner-interface を使用する ] | [ 上へ : スパナ ] | [ オブジェクトの可視性 > ] |