5.6.1 オブジェクトを移動させる (GNU LilyPond 学習マニュアル)

#### 5.6.1 オブジェクトを移動させる

これを聞いて驚くかもしれませんが、LilyPond は完璧ではありません。いくつかの記譜要素が重なりある可能性があります。これは遺憾なことですが、実際にはごく稀です。通常、オブジェクトを移動させる必要性は読みやすさや美しさのためです – オブジェクトの周りにもう少しスペースを多く/少なくとった方がより良くなるといった場合です。

記譜要素の重なりを解決する主要なアプローチが 3 つあります。それらは以下の順番で考慮されるべきです:

1. 重なり合っているオブジェクトの 1 つの direction を 譜内部オブジェクト でリストアップした内部オブジェクトのための定義済みコマンドを用いて変更することになるかもしれません。符幹、スラー、連桁、タイ、強弱記号、テキスト、連符はこの方法で容易に再配置できるかもしれません。この方法の限界は配置の仕方の選択肢が 2 つしかないことであり、どちらも適当でないかもしれません。
2. LilyPond がレイアウト オブジェクトを配置するときに使用するオブジェクト プロパティを `\override` を用いて変更することになるかもしれません。オブジェクト プロパティに変更を加えることの利点は、(a) スペースをとる必要がある場合に他のいくつかのオブジェクトは自動的に移動させられます、(b) 1 回のオーバライドを同じオブジェクト タイプのインスタンスすべてに適用することができます。変更するプロパティには以下のものが含まれます:
   - `direction`

     これはすでに詳しくカバーされています – 譜内部オブジェクト を参照してください。

   - `padding`, `left-padding`, `right-padding`, `staff-padding`

     あるオブジェクトが配置されるとき、そのオブジェクトの `padding` プロパティが、そのオブジェクトとそのオブジェクトに最も隣接するオブジェクトの端との間に置かれる間隔を指定します。配置される最中のオブジェクトの `padding` 値が使用されるということに注意してください。すでに配置されたオブジェクトの `padding` 値は無視されます。`padding` によって指定された間隔は `side-position-interface` をサポートするオブジェクトすべてに適用することができます。

     臨時記号のグループの配置は、`padding` の代わりに、`left-padding` と `right-padding` によって制御されます。これらのプロパティは `AccidentalPlacement` オブジェクトの中にあり、注意すべきことに、そのオブジェクトは Staff コンテキストの中にあります。譜刻プロセスでは、符頭が最初に譜刻され、臨時記号 (がある場合は) が次に符頭の左側に付け加えられます。このとき、臨時記号と符頭の間隔は `right-padding` プロパティによって指定されます。そのため、`AccidentalPlacement` オブジェクトの `right-padding` プロパティだけが臨時記号の配置に影響を与えます。

     `staff-padding` プロパティは `padding` プロパティと深い関わりがあります: `padding` プロパティは、`side-position-interface` をサポートするオブジェクトとそれに最隣接する他のオブジェクト (一般には音符や譜線) との間のスペースの最小量を制御します。一方、`staff-padding` は常に譜の外側に配置されるレイアウト オブジェクトにのみ適用されます – これは譜の外側に配置されるオブジェクトと譜の間に挿入されるべきスペースの最小量を制御します。`staff-paddin` は譜ではなく音符との相対関係で配置されるオブジェクトには影響を与えないということに注意してください。そのようなオブジェクトに対して `staff-padding` のオーバライドを行ったとしてもエラーは起きないかもしれませんが、無視されます。

     あなたが再配置しようとしているオブジェクトに対して求められる `padding` プロパティはどれなのかを見つけるには、内部リファレンスに戻ってそのオブジェクトのプロパティを調べる必要があります。`padding` プロパティはあなたが再配置しようとしているオブジェクトの中には無いかもしれないということに注意してください。その場合は、そのオブジェクトに関係があるオブジェクトを調べてください。

     すべての `padding` 値は譜スペースで測られます。たいていのオブジェクトでは、この値はデフォルトで約 1.0 かそれ以下にセットされています (それぞれのオブジェクトで値はさまざまです)。間隔を大きく (あるいは小さく) する必要がある場合、その値はオーバライドされるかもしれません。

   - `self-alignment-X`

     このプロパティを使うことで、親オブジェクトの参照ポイントに従って、オブジェクトを左、右、中央に揃えることができます。このプロパティは `self-alignment-interface` をサポートするオブジェクトすべてに対して使用することができます。一般に、テキストを保持するオブジェクトです。値は `Left`, `RIGHT`, `CENTER` です。代替手段として、`-1` から `+1` までの数値を指定することもできます。`-1` は左揃えであり、`+1` は右揃え、その間の数値は左揃えから右揃えへのテキストを移動させます (訳者: `-0.5` であれば、左揃えと中央揃えの中間ということ)。`1` よりも大きな数値を指定することでテキストをさらに左へ、`-1` よりも小さな数値を指定することでテキストをさらに右へ移動させることができます。この値を `1` 増減することによる移動量はそのテキストの長さの半分です。

   - `extra-spacing-width`

     このプロパティは `item-interface` をサポートするオブジェクトすべてで利用可能です。このプロパティは 2 つの数値をとり、最初の数値はオブジェクトの左側に余白を追加し、2 番目の数値はオブジェクトの右側に余白を追加します。負値はオブジェクトの端を左に移動させ、正値は右に移動させます。そのため、オブジェクトを広くするには、最初の数値を負値にして、2 番目の数値を正値にする必要があります。すべてのオブジェクトが両方の数値を遵守するわけではないということに注意してください。例えば、`Accidental` オブジェクトは最初の数値 (左端) にしか注意を払いません。

   - `staff-position`

     `staff-position` は `staff-symbol-referencer-interface` のプロパティです。これは、譜との相対関係で配置されるオブジェクトによってサポートされます。このプロパティはオブジェクトの垂直方向の位置を、譜の中央にある譜線から譜スペースの半分を単位として、指定します。このプロパティは複数小節に亘る休符、タイ、異なるボイスの中にある音符といったレイアウト オブジェクトの衝突を解決する場合に有用です。

   - `horizontal-shift`

     ボイスの中で、同じタイミングにある全ての音符は 1 つの音符列にグループ化され、`NoteColumn` オブジェクトがその音符のグループの水平位置をコントロールするために作成されます (ボイスを明示的にインスタンス化する の “Note columns” を参照してください)。 もし 1 つの Staff コンテキストにある 2 つ以上の音符列が、同じタイミングで出現し同じ向きの符幹を持つ場合に限り、それらの `horizontal-shift` プロパティの値が順位を付けるために使用され、高い順位にあるものが優先的に符頭の衝突を避けるために移動します。このプロパティは `\voiceXXX` コマンドによってセットされ、`\override` コマンドで直接上書きすることができますが、通常は `\shiftOn` コマンドによって上書きします。注意しなければならないことは、このプロパティは移動の 順位 を決定するだけだけであり、移動の大きさを決定するものではないということです。 移動の大きさは、順位ごとに符頭の幅を基にして 1 つずつ大きくなっていきます。1 つ分の幅は通常符頭の幅の半分ですが、それで近い場合には符頭 1 つ分の幅になります。

   - `force-hshift`

     `force-hshift` プロパティは `NoteColumn` のプロパティです (実際には `note-column-interface` のプロパティです)。このプロパティを変更することで、音符列が重なってしまう場合において音符列を移動させることができます。重ならない音符列には効果が無いということに注意してください。移動の量は音符列特有の単位、すなわち最初のボイスの中にある音符の符頭の幅で指定されます。 このプロパティは、通常の `\shiftOn` コマンド (ボイスを明示的にインスタンス化する を参照してください) が音符の衝突を十分に解決できないような複雑な状況で使用されるべきです。この目的のためには、`extra-offset` プロパティを用いるよりも `force-hshift` プロパティを用いる方が好ましいです。なぜなら、譜スペースを単位とした距離を算出する必要が無く、`NoteColumn` の内外に音符を移動させることは符頭のマージといった他のアクションに影響を与えるからです。

3. 最後に、他の方法がすべて失敗した場合、オブジェクトを手動で譜の中央線からの垂直方向の相対位置に従って、あるいは新たに設定した位置との距離に従って、再配置することになるかもしれません。この方法の欠点は、再配置のための正確な値を算出する必要がある – しばしば、その算出はそれぞれのオブジェクトに対して個々に、トライ＆エラーで行われます – 必要があるということ、さらに、この方法による移動は LilyPond が他のオブジェクトをすべて配置した後に行われるため、ユーザはその結果として起こるかもしれない衝突をすべて回避する責任があるということです。しかし、この方法の最大の問題点は、音楽が後で変更された場合に、再配置用の値を再び算出する必要があるということです。このタイプの手動再配置のために使用されるプロパティは以下のようなものです:
   `extra-offset`

     このプロパティは `grob-interface` をサポートするレイアウト オブジェクトのいずれかに適用されます。このプロパティはペアになった数値をとり、それぞれの数値は水平方向と垂直方向の移動を指定します。負値はオブジェクトを左または下へ移動させます。単位は譜スペースです。この移動はオブジェクトの譜刻が完了した後に行われるため、あるオブジェクトを任意の位置へ、他のオブジェクトに影響を与えることなく、再配置することができます。

   `positions`

     このプロパティは、連桁、スラー、連符の傾きと高さを手動で調節するために最も有用なプロパティです。このプロパティはペアになった数値をとり、それぞれの数値は連桁、スラーなどの左端と右端の位置を譜の中央線との距離で指定します。単位は譜スペースです。けれども、スラーとフレージング スラーを任意の値で再配置することはできないということに注意してください。LilyPond はまずスラーが取り得る位置のリストを生成し、それからデフォルトでは “最良に見える” スラーを探します。`positions` がオーバライドされていた場合、そのリストの中からリクエストされた位置に最も近いスラーが選択されます。

あるオブジェクトがこれらのプロパティすべてを持っているわけではありません。内部リファレンスに行き、そのオブジェクトではどのプロパティが利用可能なのかを調べる必要があります。

ここで、衝突に関係しそうなオブジェクトをリスト アップします。内部リファレンスを調べるためのオブジェクト名を付けるので、それらのオブジェクトを移動させるのに使うプロパティを見つけ出すのに使ってください。

オブジェクト タイプ | オブジェクト名
--- | ---
アーティキュレーション (Articulation) | `Script`
連桁 (Beam) | `Beam`
強弱記号 (Dynamic) (垂直方向) | `DynamicLineSpanner`
強弱記号 (Dynamic) (水平方向) | `DynamicText`
運指法記号 (Fingering) | `Fingering`
リハーサル / テキスト記号 (Rehearsal / Text mark) | `RehearsalMark`
スラー (Slur) | `Slur`
テキスト – つまり、`^"text"` (Text) | `TextScript`
タイ (Tie) | `Tie`
連符 (Tuplet) | `TupletBracket`

#### GNU LilyPond 学習マニュアル v2.26.0 (stable-branch).

- 1 Installing
  - 1.1 Graphical setup
  - 1.2 Command line setup
- 2 チュートリアル
  - 2.1 ファイルをコンパイルする
  - 2.2 入力ファイルの書き方
    - 2.2.1 簡単な記譜法
      - ピッチ
      - 演奏時間 (リズム)
      - 休符
      - 拍子記号
      - テンポ記号
      - 音部記号
      - すべてをまとめて
    - 2.2.2 入力ファイルに取り組む
  - 2.3 エラーに対処する
    - 2.3.1 一般的なトラブルシュート Tips
    - 2.3.2 いくつかの一般的なエラー
  - 2.4 このマニュアルの読み方
    - 2.4.1 省略された構成要素
    - 2.4.2 クリック可能な例
    - 2.4.3 マニュアルの概要
- 3 一般的な記譜法
  - 3.1 単一譜表表記
    - 3.1.1 小節線と小節チェック
      - 小節線
      - 小節チェック
    - 3.1.2 ピッチと調号
      - ピッチ変更
      - 調号
      - 警告: 調号とピッチ
    - 3.1.3 タイとスラー
      - タイ
      - スラー
      - フレージング スラー
      - 警告: スラー vs. タイ
    - 3.1.4 アーティキュレーションと強弱記号
      - アーティキュレーション
      - 運指法記号
      - 強弱記号
    - 3.1.5 テキストを追加する
    - 3.1.6 自動連桁と手動連桁
    - 3.1.7 高度なリズム コマンド
      - 部分小節
      - 連符
      - 装飾小音符
  - 3.2 同時に演奏する複数の音符
    - 3.2.1 音楽表記についての説明
      - 数学的表記との類似
      - 同時進行する音楽表記: 複数の譜
      - 同時進行する音楽表記: 単一の譜表
    - 3.2.2 複数の譜
    - 3.2.3 譜表グループ
    - 3.2.4 音符を組み合わせて和音にする
    - 3.2.5 単一譜表での多声
  - 3.3 歌曲
    - 3.3.1 簡単な歌曲を作成する
    - 3.3.2 歌詞を旋律に揃える
    - 3.3.3 複数の譜への歌詞
  - 3.4 仕上げ
    - 3.4.1 変数を用いて楽曲を編成する
    - 3.4.2 タイトルを付け加える
    - 3.4.3 絶対音符名
    - 3.4.4 このチュートリアルの後にすべきこと
- 4 基礎となるコンセプト
  - 4.1 LilyPond 入力ファイルの仕組み
    - 4.1.1 LilyPond ファイル構造の紹介
    - 4.1.2 Score は (単一の) 複合的な音楽表記
    - 4.1.3 音楽表記をネストする
    - 4.1.4 入力音符の構造
    - 4.1.5 ネストされない括弧とタイ
  - 4.2 音楽を保持するボイス
    - 4.2.1 私はボイスを聴いている
    - 4.2.2 ボイスを明示的にインスタンス化する
    - 4.2.3 ボイスとボーカル
  - 4.3 コンテキストとエングラーバ
    - 4.3.1 コンテキストの説明
    - 4.3.2 コンテキストを作成する
    - 4.3.3 エングラーバの説明
    - 4.3.4 コンテキスト プロパティを変更する
    - 4.3.5 エングラーバを追加 / 削除する
  - 4.4 テンプレートを拡張する
    - 4.4.1 ソプラノとチェロ
    - 4.4.2 4 パート SATB ボーカル譜
    - 4.4.3 ゼロから楽譜を構築する
    - 4.4.4 変数と関数を用いて入力の手間を省く
    - 4.4.5 楽譜とパート
- 5 出力を調整する
  - 5.1 調整の基本
    - 5.1.1 調整の紹介
    - 5.1.2 オブジェクトとインタフェイス
    - 5.1.3 オブジェクトとプロパティの命名規則
    - 5.1.4 調整手段
      - `\override` コマンド
      - `\revert` コマンド
      - `\once` 接頭辞
      - `\overrideProperty` コマンド
      - `\tweak` コマンド
      - `\single` 接頭辞
  - 5.2 内部リファレンス マニュアル
    - 5.2.1 レイアウト オブジェクトのプロパティ
    - 5.2.2 インタフェイスの中で見つかるプロパティ
    - 5.2.3 プロパティのタイプ
  - 5.3 オブジェクトの見た目
    - 5.3.1 オブジェクトの可視性と色
      - `stencil` プロパティ
      - `break-visibility` property
      - `transparent` プロパティ
      - `color` プロパティ
    - 5.3.2 オブジェクトのサイズ
    - 5.3.3 オブジェクトの長さと太さ
  - 5.4 オブジェクトの配置
    - 5.4.1 自動配置
    - 5.4.2 譜内部オブジェクト
      - `direction` プロパティ
      - 運指
    - 5.4.3 譜外部オブジェクト
      - `outside-staff-priority` プロパティ
      - `\textLengthOn` コマンド
      - 強弱記号の配置
      - グラフィカル オブジェクトのサイズ
  - 5.5 垂直方向のスペース
  - 5.6 オブジェクトの衝突
    - 5.6.1 オブジェクトを移動させる
    - 5.6.2 表記の重なりを修正する
      - `padding` プロパティ
      - `right-padding` プロパティ
      - `staff-padding` プロパティ
      - `self-alignment-X` プロパティ
      - `staff-position` プロパティ
      - `extra-offset` プロパティ
      - `positions` プロパティ
      - `force-hshift` プロパティ
    - 5.6.3 実際の音楽からの例
  - 5.7 更なる調整
    - 5.7.1 調整のその他の使用方法
      - 異なるボイスの中にある音符をタイで結ぶ
      - MIDI でフェルマータをシミュレートする
    - 5.7.2 レイアウトの調整のために変数を使用する
    - 5.7.3 スタイル シート
    - 5.7.4 その他の情報源
    - 5.7.5 Scheme を用いた高度な調整
- Appendix A テンプレート
  - A.1 組み込まれているテンプレート
    - A.1.1 SATB テンプレート
    - A.1.2 SSAATTBB テンプレート
  - A.2 単一譜テンプレート
    - A.2.1 音符のみ
    - A.2.2 音符と歌詞
    - A.2.3 音符とコード
    - A.2.4 音符、歌詞それにコード
  - A.3 ピアノ テンプレート
    - A.3.1 ソロ ピアノ
    - A.3.2 ピアノと歌詞を持つ旋律
    - A.3.3 歌詞が中央に配置されたピアノ譜
  - A.4 弦楽四重奏テンプレート
    - A.4.1 弦楽四重奏
    - A.4.2 弦楽四重奏パート
  - A.5 合唱テンプレート
    - A.5.1 SATB ボーカル譜
    - A.5.2 SATB ボーカル譜と自動ピアノ譜
    - A.5.3 整列されたコンテキストを持つ SATB
    - A.5.4 4 つの譜に配置された SATB
    - A.5.5 ソロと 2 パートのリフレイン
    - A.5.6 賛美歌
    - A.5.7 聖歌
  - A.6 オーケストラ テンプレート
    - A.6.1 オーケストラ、合唱それにピアノ
  - A.7 古代の記譜法テンプレート
    - A.7.1 計量記譜法のテンプレート
    - A.7.2 グレゴリア聖歌のテンプレート
  - A.8 その他のテンプレート
    - A.8.1 ジャズ バンド
- Appendix B GNU Free Documentation License
- Appendix C インデックス