| [ < ] | [ > ] | [ << ] | [ 上へ ] | [ >> ] | [トップ] | [目次] | [インデックス] | [ ? ] |
@translationof Placement of objects
| 4.4.1 自動配置 | ||
| 4.4.2 譜内部オブジェクト | ||
| 4.4.3 譜外部オブジェクト |
| [ < ] | [ > ] | [ << ] | [ 上へ ] | [ >> ] | [トップ] | [目次] | [インデックス] | [ ? ] |
@translationof Automatic behavior
音楽記譜法には譜に属するオブジェクトがいくつかあり、他のオブジェクトは譜の外側に置かれるべきです。それらはそれぞれ譜内部オブジェクトと譜外部オブジェクトと呼ばれます。
譜内部オブジェクトは譜上に置かれます – 符頭、符幹、臨時記号などです。通常、それらの位置は音楽自体によって決定されます – 譜内部オブジェクトは譜のある特定の線と同じ垂直位置に置かれたり、そこに置かれるべき他のオブジェクトにくっつけられたりします。近接する和音の中にある符頭、符幹、臨時記号の衝突は普通は自動的に回避されます。これから見ていくように、この自動配置を変更することができるコマンドとオーバライドがあります。
譜の外部にあるオブジェクトには、リハーサル記号、テキスト、強弱記号などがあります。LilyPond が持つ譜外部オブジェクトの垂直位置のルールは、譜外部オブジェクトをできるだけ譜の近くに、しかし他のオブジェクトと衝突しない程度の近さに置くというものです。以下で示すように、LilyPond はオブジェクトを配置する順番を決定するために
outside-staff-priority プロパティを使用します。
最初に、LilyPond はすべての譜内部オブジェクトを配置します。それから、outside-staff-priority に従って譜外部オブジェクトを並べます。譜外部オブジェクトは最小の outside-staff-priority を持つオブジェクトから順番に 1 つずつ並べられ、すでに配置されたオブジェクトと衝突しないように配置されます。つまり、2 つの譜外部オブジェクトが同じスペースを巡って競合する場合、より小さな outside-staff-priority を持つオブジェクトが譜の近くに配置されます。2 つのオブジェクトが同じ outside-staff-priority を持つ場合、先に発生するオブジェクトが譜の近くに配置されます。
以下の例では、すべてのマークアップ テキストが同じ優先度を持っています (なぜなら、優先度が明示的にセットされていないからです)。‘Text3’ が自動的に譜の近く、‘Text2’ のすぐ下に納まるよう配置されていることに注意してください。
c''2^"Text1" c''2^"Text2" | c''2^"Text3" c''2^"Text4" |
デフォルトでは、譜も互いにできるだけ近くなるよう配置されます (最小間隔に従います)。音符が隣接する譜に向かって長く突き出てている場合、譜を離さないと記譜したものが重なり合ってしまう場合にのみ譜は離されます。以下の例は譜の調整によって音符が ‘ぴったりと納まる’ 様子を示しています:
<< \new Staff { \relative { c'4 a, } } \new Staff { \relative { c''''4 a, } } >>
| [ < ] | [ > ] | [ << ] | [ 上へ ] | [ >> ] | [トップ] | [目次] | [インデックス] | [ ? ] |
@translationof Within-staff objects
これまでにコマンド \voiceXXX がスラー、タイ、運指法記号、符幹の向きに依存する他のすべてに対してどのように影響を与えるかを見てきました
– @ref{Explicitly instantiating voices} を参照してください。
これらのコマンドは、多声部音楽を記述しているときに上下する旋律を見分けられるようにすることを可能にするために不可欠なものです。しかしながら、この自動機能をオーバライドする必要がある場合もあります。このオーバライドは音楽全体に対しても、個々の音符に対してもできます。この自動機能を制御しているプロパティは各レイアウト オブジェクトの
direction プロパティです。まず、これは何をするのかを説明し、それから、作成済みのコマンドをいくつか紹介します。それらのコマンドを使うと、一般的な変更のための明示的なオーバライドをコードしなくて済みます。
スラーやタイのようなレイアウト オブジェクトはカーブを描き、曲がり、上下します。符幹やフラグのような他のオブジェクトも上下の向きによって位置が左右します。direction がセットされているときは、これは自動的に制御されます。
direction プロパティ | ||
| 運指 |
| [ < ] | [ > ] | [ << ] | [ 上へ ] | [ >> ] | [トップ] | [目次] | [インデックス] | [ ? ] |
direction プロパティ@translationof The direction property
以下の例は、最初の小節でスラーのデフォルトの振る舞いを示しています。高い位置にある音符のスラーは音符の上にあり、低い位置にある音符のスターは音符の下にあります。次の小節では両方のスラーをすべて強制的に下向きにし、 さらに次の小節では両方のスラーをすべて強制的に上向きにし、 最後の小節ではスラーの向きをデフォルトに戻します。
a'4( g') c''( a') | \override Slur.direction = #DOWN a'4( g') c''( a') | \override Slur.direction = #UP a'4( g') c''( a') | \revert Slur.direction a'4( g') c''( a') |
ここで定数 DOWN と UP を使っています。これらはそれぞれ値 -1 と +1 を持ち、定数の代わりにそれらの数値を使うこともできまはす。さらに値 0 を使う場合もあります。この値はスラーでは UP を意味するものとして扱われますが、いくつかのオブジェクトでは ‘center’ という意味になります。値 0 を持つ定数に CENTER があります。
しかしながら、これらの明示的なオーバライドは普通は使われません。もっと簡単で定義済みのコマンドが利用可能だからです。ここに一般的なコマンドの表を挙げます。それぞれのコマンドの意味が明白でない場合は、そのコマンドの意味を述べています。
| 下/左 | 上/右 | 元に戻す | 効果 |
|---|---|---|---|
\arpeggioArrowDown | \arpeggioArrowUp | \arpeggioNormal | 矢印が下に付く、上に付く、付かない |
\dotsDown | \dotsUp | \dotsNeutral | 譜線を避けるための移動方向 |
\dynamicDown | \dynamicUp | \dynamicNeutral | |
\phrasingSlurDown | \phrasingSlurUp | \phrasingSlurNeutral | Note: スラー コマンドとは別になります |
\slurDown | \slurUp | \slurNeutral | |
\stemDown | \stemUp | \stemNeutral | |
\textSpannerDown | \textSpannerUp | \textSpannerNeutral | スパナとして挿入されるテキストが譜の下/上にくる |
\tieDown | \tieUp | \tieNeutral | |
\tupletDown | \tupletUp | \tupletNeutral | 連符記号が音符の下/上にくる |
これらのコマンドで中立/通常の位置に戻すコマンドは \revert を用いることで実装されていて、これらは前に \once が付いて いない
かもしれません。\override を用いて実装されているコマンドの効果を単一のタイミングに限定したいのであれば、明示的なオーバライドの場合と同様に、コマンドの前に \once を配置します。
あるいは、単に 1 つのレイアウト オブジェクトを上向きか下向きにしたいなら、方向指示子の ^ か _ を使うことができます:
a'4( g') c''( a') | a'4^( g') c''_( a') |
| [ < ] | [ > ] | [ << ] | [ 上へ ] | [ >> ] | [トップ] | [目次] | [インデックス] | [ ? ] |
@translationof Fingering
単一の音符に対する運指法記号の配置も direction プロパティによって制御できますが、direction を変更しても和音の運指法記号は影響を受けません。これから見ていくように、和音の中の個々の音符の運指法記号を制御するための特別なコマンドがあります。このコマンドを使うことで運指法記号を各音符の上、下、左、右に配置することができます。
まず、単一の音符の運指法記号に対する direction を効果を示します。最初の小節はデフォルト状態で、その後で DOWN と UP を指定したときの効果を示します:
\relative { c''4-5 a-3 f-1 c'-5 | \override Fingering.direction = #DOWN c4-5 a-3 f-1 c'-5 | \override Fingering.direction = #UP c4-5 a-3 f-1 c'-5 | }
しかしながら、direction プロパティをオーバライドすることは、手動で運指法記号を音符の上または下に配置するもっとも簡単な方法ではありません。運指法番号の前に - の代わりに _ または ^ を使う方が普通は適切です。ここで、上記の例にこの方法を用いた例を挙げます:
\relative { c''4-5 a-3 f-1 c'-5 | c4_5 a_3 f_1 c'_5 | c4^5 a^3 f^1 c'^5 | }
direction プロパティは和音では無視されますが、方向を示す接頭辞 _ と ^ は機能します。以下で示すように、デフォルトでは、運指法記号は和音の音符の上と下の両方に自動的に配置されます:
\relative { <c''-5 g-3>4 <c-5 g-3 e-2>4 <c-5 g-3 e-2 c-1>4 }
しかし、以下で示すように、運指法番号のすべてまたはいずれかを手動で強制的に和音の上または下に配置するために、これはオーバライドされるかもしれません:
\relative { <c''-5 g-3 e-2 c-1>4 <c^5 g_3 e_2 c_1>4 <c^5 g^3 e^2 c_1>4 }
\set fingeringOrientations コマンドを使うことによって和音の中にある個々の音符の運指法記号の配置をより細かく制御することさえできます。このコマンドのフォーマットは以下のようなものです:
\set fingeringOrientations = #'([up] [left/right] [down]) |
fingeringOrientations は Voice コンテキストのプロパティであり、New_fingering_engraver によって作成、使用されるため、\set が使用されます。
このプロパティには 1 つから 3 つまでの値のリストがセットされるかもしれません。このプロパティは運指法記号を上 (リストに up がある場合)、下 (リストに down がある場合)、左 (リストに left がある場合。リストに right がある場合は右)
に配置します。逆に配置位置がリストされていない場合、その位置に運指法記号は配置されません。LilyPond はこれらの制約を受け取り、
後に続く和音の音符への運指法記号をうまく配置します。left と right は相互排他的であるということに注意してください –
運指法記号は左右のどちらかにしか配置されないか、どちらにも配置されません。
Note: このコマンドを使って単一の音符への運指法記号の配置をコントロールするには、その音符を山括弧で囲んで単一音符の和音として記述する必要があります。
いくつか例を挙げます:
\relative { \set fingeringOrientations = #'(left) <f'-2>4 <c-1 e-2 g-3 b-5>4 \set fingeringOrientations = #'(left) <f-2>4 <c-1 e-2 g-3 b-5>4 | \set fingeringOrientations = #'(up left down) <f-2>4 <c-1 e-2 g-3 b-5>4 \set fingeringOrientations = #'(up left) <f-2>4 <c-1 e-2 g-3 b-5>4 | \set fingeringOrientations = #'(right) <f-2>4 <c-1 e-2 g-3 b-5>4 }
運指法記号が少し込み合っているように見える場合は、font-size でサイズを下げることができます。デフォルト値は内部リファレンスの Fingering オブジェクトのページから
-5 であることがわかるので、-7 にセットしてみましょう:
\relative { \override Fingering.font-size = #-7 \set fingeringOrientations = #'(left) <f'-2>4 <c-1 e-2 g-3 b-5>4 \set fingeringOrientations = #'(left) <f-2>4 <c-1 e-2 g-3 b-5>4 | \set fingeringOrientations = #'(up left down) <f-2>4 <c-1 e-2 g-3 b-5>4 \set fingeringOrientations = #'(up left) <f-2>4 <c-1 e-2 g-3 b-5>4 | \set fingeringOrientations = #'(right) <f-2>4 <c-1 e-2 g-3 b-5>4 }
| [ < ] | [ > ] | [ << ] | [ 上へ ] | [ >> ] | [トップ] | [目次] | [インデックス] | [ ? ] |
@translationof Outside-staff objects
譜外部オブジェクトは自動的に衝突を回避するよう配置されます。配置が最適でない場合に自動配置をオーバライドする方法がいくつかあります。
outside-staff-priority プロパティ | ||
\textLengthOn コマンド | ||
| 強弱記号の配置 | ||
| グラフィカル オブジェクトのサイズ |
| [ < ] | [ > ] | [ << ] | [ 上へ ] | [ >> ] | [トップ] | [目次] | [インデックス] | [ ? ] |
outside-staff-priority プロパティ@translationof The outside-staff-priority property
小さな値の outside-staff-priority プロパティを持つオブジェクトは譜の近くに配置され、他の譜外部オブジェクトは衝突を避けるのに必要な分だけ離されます。outside-staff-priority は grob-interface の中で定義されているため、すべてのレイアウト オブジェクトのプロパティです。デフォルトでは、すべての譜内部オブジェクトの outside-staff-priority は
#f にセットされていて、譜外部オブジェクトが作成されたときにその譜外部オブジェクトの outside-staff-priority に適当な数値がセットされます。以下の表はいくつかの一般的な譜外部オブジェクトのデフォルトの
outside-staff-priority 値を示しています。
| レイアウト オブジェクト | 優先度 | 以下のオブジェクトの配置を制御する: |
|---|---|---|
RehearsalMark | 1500 | リハーサル記号 |
MetronomeMark | 1000 | メトロノーム記号 |
SostenutoPedalLineSpanner | 1000 | ペダル記号 |
SustainPedalLineSpanner | 1000 | |
UnaCordaPedalLineSpanner | 1000 | |
MeasureCounter | 750 | 小節番号 |
VoltaBracketSpanner | 600 | Volta (番号付きのリピート) の囲み |
InstrumentSwitch | 500 | 楽器を変更するテキスト |
TextScript | 450 | マークアップ テキスト |
MultiMeasureRestText | 450 | 複数小節にわたる休符上のテキスト |
CombineTextScript | 450 | パート結合のテキスト |
OttavaBracket | 400 | オッターバ (オクターブを上下させる記号) の囲み |
TextSpanner | 350 | テキスト スパナ |
DynamicLineSpanner | 250 | すべての強弱記号 |
BarNumber | 100 | 小節番号 |
TrillSpanner | 50 | トリル記号 |
AccidentalSuggestion | 0 | 注釈的な臨時記号 (音符の上に付く臨時記号、ムジカ・フィクタ) |
これらのうちのいくつかのデフォルトでの配置を示している例を挙げます。
% 以降のテキスト スパナの詳細を設定します \override TextSpanner.bound-details.left.text = \markup { \small \bold Slower } % 強弱記号を譜の上に配置します \dynamicUp % オッターバ囲みの開始 \ottava #1 c''4 \startTextSpan % 強弱テキストとヘアピンを付け加えます c''4\pp\< c''4 % テキスト スクリプトを付け加えます c''4^Text | c''4 c'' % 強弱テキストを付け加え、強弱ヘアピンを終わらせます c''4\ff c'' \stopTextSpan | % オッターバ囲みを終わらせます \ottava #0 c'4 c' c' c' |
この例はテキスト スパナ – 音楽の上に置かれる延長線付きのテキスト – の作成方法についても示しています。スパナは \startTextSpan コマンドから
\stopTextSpan コマンドまで延び、テキストのフォーマットは
\override TextSpanner コマンドによって定義されます。詳細は
(notation)テキスト スパナ section ‘テキスト スパナ’ in Notation Reference を参照してください。
この例はさらにオッターバ囲みを作成する方法についても示しています。
outside-staff-priority のデフォルト値による配置があなたの望みに合わない場合、いずれかのオブジェクトの優先度をオーバライドすることになるかもしれません。上記の例で、オッターバ囲みをテキスト スパナの下に配置したいとします。すべきことは、OttavaBracket は Staff コンテキストの中に作成されるということを思い出し、OttavaBracket の優先度を内部リファレンスか上記の表で調べて、それを TextSpanner の値よりも小さくすることです:
% 以降のテキスト スパナの詳細を設定します \override TextSpanner.bound-details.left.text = \markup { \small \bold Slower } % 強弱記号を譜の上に配置します \dynamicUp % 以降のオッターバ囲みをテキスト スパナの下に配置します \once \override Staff.OttavaBracket.outside-staff-priority = #340 % オッターバ囲みの開始 \ottava #1 c''4 \startTextSpan % 強弱テキストを付け加えます c''4\pp % 強弱の線スパナを付け加えます c''4\< % テキスト スクリプトを付け加えます c''4^Text | c''4 c'' % 強弱テキストを付け加えます c''4\ff c'' \stopTextSpan | % オッターバ囲みを終わらせます \ottava #0 c'4 c' c' c' |
これらのオブジェクトのいくつか
– 特に、小節番号、メトロノーム記号、それにリハーサル記号 –
はデフォルトでは Score コンテキストの中にあるため、それらのプロパティをオーバライドする場合は適切なコンテキストを指定する必要があることに注意してください。
スラーはデフォルトでは譜内部オブジェクトに分類されています。しかしながら、譜の上部に配置された音符に付くスラーはしばしば譜の上に表示されます。このことは、スラーがまず最初に配置されるため、アーティキュレーションなどの譜外部オブジェクトをあまりにも高い位置に押し上げる可能性があります。アーティキュレーションの avoid-slur プロパティに
'inside をセットすることでアーティキュレーションをスラーよりも内側に配置することができます。しかし、avoid-slur プロパティはアーティキュレーションの
outside-staff-priority が #f にセットされている場合にのみ効果を持ちます。代替手段として、スラーの outside-staff-priority に数値をセットすることによって、スラーを他の譜外部オブジェクトとともに
outside-staff-priority 値に従って配置することができます。ここで、2 つの方法の効果を示す例を挙げます:
\relative c'' { c4( c^\markup { \tiny \sharp } d4.) c8 | c4( \once \override TextScript.avoid-slur = #'inside \once \override TextScript.outside-staff-priority = ##f c4^\markup { \tiny \sharp } d4.) c8 | \once \override Slur.outside-staff-priority = #500 c4( c^\markup { \tiny \sharp } d4.) c8 | }
outside-staff-priority は、個々のオブジェクトの垂直方向の配置を制御するために使用することもできます。しかしながら、その結果は常に望み通りになるわけではありません。自動配置 にある例で “Text3” を “Text4” の上に配置したいとします。すべきことは TextScript の優先度を内部リファレンスか上記の表で調べて、“Text3” の優先度を大きくすることです:
c''2^"Text1" c''2^"Text2" | \once \override TextScript.outside-staff-priority = #500 c''2^"Text3" c''2^"Text4" |
これはたしかに “Text3” を “Text4” の上に配置しています。しかし、“Text3”を “Text2” の上に配置して、“Text4” を押し下げてもいます。おそらく、これはそれほど望ましい結果ではないでしょう。本当に望んでいることは、すべての注釈を譜の上に譜から同じ距離だけ離して配置することです。そうするには明らかに、テキストのためにもっと広いスペースを確保するために、音符を水平方向に広げる必要があります。これは \textLengthOn コマンドを用いることで達成できます。
| [ < ] | [ > ] | [ << ] | [ 上へ ] | [ >> ] | [トップ] | [目次] | [インデックス] | [ ? ] |
\textLengthOn コマンド@translationof The textLengthOn command
デフォルトでは、音楽のレイアウトが考慮されている限り、マークアップによって作り出されるテキストは水平方向のスペースと関係しません。\textLengthOn コマンドはこの動作を逆にして、テキストの配置に便宜をはかる必要がある限り、音符の間隔を広げます:
\textLengthOn % 音符の間隔を広げてテキストに揃えます c''2^"Text1" c''2^"Text2" | c''2^"Text3" c''2^"Text4" |
デフォルトの動作に戻すためのコマンドは \textLengthOff です。効果を与えるのが単一の音楽タイミングであれば、\textLengthOn
に \once を付ける方法もあります。リハーサルマークやテンポ記号の水平方向のスペースを調整するには、
\markLengthOn と \markLengthOff を使います。
マークアップ テキストは譜の上に突き出している音符を避けます。このことが望ましくない場合、優先度を #f にセットすることによって上方向への自動再配置を Off にすることになるかもしれません。ここで、マークアップ テキストがそのような音符とどのように相互作用するかを示す例を挙げます。
\relative { % このマークアップは短いため衝突は起きません c''2^"Tex" c'' | R1 | % このマークアップは長くて納まりきらないため、上に押し上げられます c,,2^"Text" c'' | R1 | % 衝突回避を OFF にします \once \override TextScript.outside-staff-priority = ##f c,,2^"Long Text " c'' | R1 | % 衝突回避を OFF にします \once \override TextScript.outside-staff-priority = ##f \textLengthOn % そして textLengthOn を ON にします c,,2^"Long Text " % 後ろにスペースが付け加えられます c''2 | }
| [ < ] | [ > ] | [ << ] | [ 上へ ] | [ >> ] | [トップ] | [目次] | [インデックス] | [ ? ] |
@translationof Dynamics placement
通常、強弱記号は譜の下に配置されます。しかしながら、\dynamicUp コマンドを使うことで上に配置されるかもしれません。強弱記号は、その記号が付いている音符と垂直方向の関係で配置され、フレージング スラーや小節番号などの譜内部オブジェクトのすべてよりも下 (あるいは上) に配置されます。このことは、以下の例のように、到底受け入れられない結果を生み出す可能性があります:
\relative { \clef "bass" \key aes \major \time 9/8 \dynamicUp bes4.~\f\< \( bes4 bes8 des4\ff\> c16 bes\! | ees,2.~\)\mf ees4 r8 | }
しかしながら、音符とそれに付けられた強弱記号が互いに近い場合、自動配置は後の方にある強弱記号を譜から離すことによって衝突を避けます。しかし、以下のかなり不自然な例が示すように、それは最適な配置ではないかもしれません:
\dynamicUp \relative { a'4\f b\mf a\mp b\p }
‘実際’ の音楽で同じような状況があった場合、音符の間隔をもう少し広げて、すべての強弱記号が譜から垂直方向に同じだけ離れるようにする方が望ましいかもしれません。マークアップ テキストの場合は \textLengthOn コマンドを用いることによってそうすることができますが、強弱記号には等価のコマンドがありません。そのため、\override コマンドを用いてそれを達成する方法を見出す必要があります。
| [ < ] | [ > ] | [ << ] | [ 上へ ] | [ >> ] | [トップ] | [目次] | [インデックス] | [ ? ] |
@translationof Grob sizing
まず最初に、グラフィカル オブジェクトのサイズがどのように決定されるかを学ばなくてはなりません。すべてのグラフィカル オブジェクトの内部では参照ポイントが定義され、それはそれらの親オブジェクトとの相対位置を決定するために使用されます。このポイントは親オブジェクトから垂直方向に X-offset、垂直方向に Y-offset 離れた位置になります。オブジェクトの水平方向の広がりは数値のペア X-extent で与えられ、そのペアはオブジェクトの左端と右端の参照ポイントとの相対関係について述べています。垂直方向の広がりも同様に数値のペア Y-extent によって与えられます。これらは grob-interface をサポートするすべてのグラフィカル オブジェクトが持つプロパティです。
デフォルトでは、譜外部オブジェクトには 0 の幅が与えられているため、水平方向で重なる可能性があります。これは extra-spacing-width に '(+inf.0 . -inf.0) をセットすることによって、左端の広がりをプラス無限大に、右端の広がりをマイナス無限大にするというトリックによって達成されています。譜外部オブジェクトが水平方向で重ならないことを保証するには、extra-spacing-width の値をオーバライドし、余分なスペースを少しだけ作る必要があります。単位は 2 つの譜線の間隔なので、左端を 0.5 単位左に、右端を 0.5 単位右に動かすことで実現できます:
\override DynamicText.extra-spacing-width = #'(-0.5 . 0.5) |
これが前の例で機能するかどうかを見てみましょう:
\dynamicUp % Extend width by 1 staff space \override DynamicText.extra-spacing-width = #'(-0.5 . 0.5) \relative { a'4\f b\mf a\mp b\p }
これで前よりも良くなりました。しかし、強弱記号が音符に合わせて上下するよりも、同じベースラインで揃っている方が望ましいでしょう。それを行うためのプロパティは staff-padding であり、衝突に関するセクションでカバーされています
(オブジェクトの衝突 を参照してください)。
| [ < ] | [ > ] | [ << ] | [ 上へ ] | [ >> ] |
This document was generated by gub on 7 月 13, 2020 using texi2html 1.82.
他の言語: English, català, česky, deutsch, español, français, italiano, nederlands
About automatic language selection.