4.4.3 垂直方向の衝突回避

直観的に、音楽記譜には譜に属するオブジェクトと、譜の外側に配置されるべきオブジェクトがあります。譜の外側に属するオブジェクトには、リハーサル記号、テキスト、それに強弱記号などがあります (これからは、それらを譜外部オブジェクトと呼びます)。LilyPond が譜外部オブジェクトの垂直方向の配置を決定するとき、譜外部オブジェクトをできる限り譜の近くに、しかしながら、他のオブジェクトと衝突しない程度の近さに配置します。

LilyPond は outside-staff-priority プロパティを用いてあるグラフィカル オブジェクトが譜外部オブジェクトかどうかを決定します: outside-staff-priority が数であれば、そのグラフィカル オブジェクトは譜外部オブジェクトです。さらに、outside-staff-priority は LilyPond に、そのグラフィカル オブジェクトを配置する順番を教えてくれます。

まず最初にに、LilyPond は譜外部オブジェクトには属さないオブジェクトをすべて配置します。次に、譜外部オブジェクトを outside-staff-priority に従って (昇順に) ソートします。LilyPond は譜外部オブジェクトを、既に配置済みのオブジェクトと衝突しないよう、一つずつ配置していきます。つまり、2 つの譜外部オブジェクトが同じスペースをめぐって競合する場合、より小さな outside-staff-priority を持つオブジェクトが譜の近くに配置されます。

c4_"Text"\pp
r2.
\once \override TextScript.outside-staff-priority = #1
c4_"Text"\pp % ここでは、テキストが譜の近くに配置されます
r2.
% outside-staff-priority に数ではない値を設定することにより、
% 自動衝突回避を無効にします
\once \override TextScript.outside-staff-priority = ##f
\once \override DynamicLineSpanner.outside-staff-priority = ##f
c4_"Text"\pp % ここでは、2 つのオブジェクトが衝突します

[image of music]

ある譜外部オブジェクトとその前に配置されたグラフィカル オブジェクトとの間にある垂直方向のパディングは、outside-staff-padding で制御することができます。

\once \override TextScript.outside-staff-padding = #0
a'^"このテキストは音符のすぐ近くに配置されます。"
\once \override TextScript.outside-staff-padding = #3
c^"このテキストは前のテキストから離れた位置に配置されます"
c^"この手キスとは前にテキストの近くに配置されます"

[image of music]

デフォルトでは、譜外部オブジェクトの配置は、配置済みのグラフィカル オブジェクトとの水平方向の衝突回避だけを考慮します。このことは、オブジェクト同士が水平方向に非常に近く配置される状況を招く可能性があります。譜の垂直方向の間隔を設定した場合も、譜外部オブジェクトが挟み込まれる可能性があります。outside-staff-horizontal-padding を設定すると、オブジェクトは垂直方向にずれるため、そのような状況は起こらなくなります。

% マークアップは後に続く音符に近寄りすぎています
c4^"Text"
c4
c''2
% outside-staff-horizontal-padding を設定することで修正します
R1
\once \override TextScript.outside-staff-horizontal-padding = #1
c,,4^"Text"
c4
c''2

[image of music]

参照

コード断片集: Spacing


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

LilyPond — 記譜法リファレンス v2.18.2 (安定版).