4.4.2 譜とシステムを明示的に配置する

上で説明した可変な垂直方向のスペースの仕組みを理解する方法の 1 つに、譜とシステムの間の垂直方向のパティングの大きさを制御する設定をコレクションすることがあります。

NonMusicalPaperColumn.line-break-system-details を用いて、垂直方向のスペースに別の方法でアプローチすることができます。可変な垂直方向のスペースの仕組みが垂直方向のパディングを指定するのに対して、NonMusicalPaperColumn.line-break-system-details はページ上の垂直方向の位置を指定することができます。

NonMusicalPaperColumn.line-break-system-details は 4 つの設定からなる連想配列を受け取ります:

以下の NonMusicalPaperColumn に対する上書きを含む、グラフィカル オブジェクトの上書きは、入力ファイルの中の 3 つの場所に配置することができます:

NonMusicalPaperColumn を上書きする場合、通常は \context ブロックや \with ブロックの中で\override コマンドを使用します。一方、音符入力の途中で NonMusicalPaperColumn を上書きする場合、特殊なコマンド \overrideProperty を使用します。ここで、特殊なコマンド \overridePropertyNonMusicalPaperColumn を上書きする例をいくつか挙げます:

\overrideProperty NonMusicalPaperColumn.line-break-system-details
  #'((X-offset . 20))

\overrideProperty NonMusicalPaperColumn.line-break-system-details
  #'((Y-offset . 40))

\overrideProperty NonMusicalPaperColumn.line-break-system-details
  #'((X-offset . 20)
     (Y-offset . 40))

\overrideProperty NonMusicalPaperColumn.line-break-system-details
  #'((alignment-distances . (15)))

\overrideProperty NonMusicalPaperColumn.line-break-system-details
  #'((X-offset . 20)
     (Y-offset . 40)
     (alignment-distances . (15)))

これらの異なる設定がそれぞれどのように機能するのかを理解するために、まったく上書きを含まない例を見ることから始めます。

\header { tagline = ##f }
\paper { left-margin = 0\mm }
\book {
  \score {
    <<
      \new Staff <<
        \new Voice {
          s1*5 \break
          s1*5 \break
          s1*5 \break
        }
        \new Voice { \repeat unfold 15 { c'4 c' c' c' } }
      >>
      \new Staff {
        \repeat unfold 15 { d'4 d' d' d' }
      }
    >>
  }
}

[image of music]

この楽譜は改行/改ページ情報を専用のボイスに孤立させています。この改行/改ページ用のボイスを作成するテクニックは、例がより複雑になっていくときに、レイアウトと音楽入力を分離することを助けてくれます。改行/改ページ を参照してください。

明示的な \breaks を使うことで、音楽を 1 行あたり 5 小節に分割しています。垂直方向のスペースは LilyPond のデフォルトですが、各システムの垂直方向の開始位置が、NonMusicalPaperColumn グラフィカル オブジェクトの line-break-system-details 属性の中にある Y-offset により明示的にセットされています。

\header { tagline = ##f }
\paper { left-margin = 0\mm }
\book {
  \score {
    <<
      \new Staff <<
        \new Voice {
          \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details
            #'((Y-offset . 0))
          s1*5 \break
          \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details
            #'((Y-offset . 40))
          s1*5 \break
          \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details
            #'((Y-offset . 60))
          s1*5 \break
        }
        \new Voice { \repeat unfold 15 { c'4 c' c' c' } }
      >>
      \new Staff {
        \repeat unfold 15 { d'4 d' d' d' }
      }
    >>
  }
}

[image of music]

line-break-system-details は潜在的に多くの値を持つ連想リストをとりますが、ここでは値を 1 つだけしかセットしていないということに注意してください。また、ここでは Y-offset プロパティは、各システムがページに描画される垂直方向の位置を決定しているということにも注意してください。

Y-offsetX-offset を用いて絶対位置を指定することができる一方、line-break-system-detailsextra-offset プロパティを用いて、相対位置を指定することもできます。この時、位置はデフォルトあるいは X-offsetY-offset によって絶対的に指定された位置からの相対的なものになります。extra-offset は、X 軸、Y 軸のオフセットからなる ペア を受け入れます。

\header { tagline = ##f }
\paper { left-margin = 0\mm }
\book {
  \score {
    <<
      \new Staff <<
        \new Voice {
          s1*5 \break
          \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details
            #'((extra-offset . (0 . 10)))
          s1*5 \break
          \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details
            #'((extra-offset . (0 . 10)))
          s1*5 \break
        }
        \new Voice { \repeat unfold 15 { c'4 c' c' c' } }
      >>
      \new Staff {
        \repeat unfold 15 { d'4 d' d' d' }
      }
    >>
  }
}

[image of music]

これまでに各システムの垂直方向の開始位置を明示的に設定しましたが、各システム内部の各譜の垂直方向の開始位置を手動で設定することも可能です。line-break-system-details のサブプロパティ alignment-offsets を用います。

\header { tagline = ##f }
\paper { left-margin = 0\mm }
\book {
  \score {
    <<
      \new Staff <<
        \new Voice {
          \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details
            #'((Y-offset . 20)
               (alignment-distances . (10)))
          s1*5 \break
          \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details
            #'((Y-offset . 60)
               (alignment-distances . (15)))
          s1*5 \break
          \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details
          #'((Y-offset . 85)
             (alignment-distances . (20)))
          s1*5 \break
        }
        \new Voice { \repeat unfold 15 { c'4 c' c' c' } }
      >>
      \new Staff {
        \repeat unfold 15 { d'4 d' d' d' }
      }
    >>
  }
}

[image of music]

ここでは NonMusicalPaperColumn グラフィカル オブジェクトのline-break-system-details 属性に 2 つの値を代入しているということに注意してください。line-break-system-details 属性の連想配列はもっと多くのスペース パラメータ (例えば、Y-offset ペアに相当する X-offset ペア) を受け付けますが、システムと譜の垂直方向の開始地点を制御するのに必要な設定は、Y-offset ペアと alignment-offsets ペアだけです。 最後に、alignment-offsets は譜の垂直方向の位置を指定するのであり、譜グループの位置を指定するわけではないということに注意してください。

\header { tagline = ##f }
\paper { left-margin = 0\mm }
\book {
  \score {
    <<
      \new Staff <<
        \new Voice {
          \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details
            #'((Y-offset . 0)
               (alignment-distances . (30 10)))
          s1*5 \break
          \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details
            #'((Y-offset . 60)
               (alignment-distances . (10 10)))
          s1*5 \break
          \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details
            #'((Y-offset . 100)
               (alignment-distances . (10 30)))
          s1*5 \break
        }
        \new Voice { \repeat unfold 15 { c'4 c' c' c' } }
      >>
      \new StaffGroup <<
        \new Staff { \repeat unfold 15 { d'4 d' d' d' } }
        \new Staff { \repeat unfold 15 { e'4 e' e' e' } }
      >>
    >>
  }
}

[image of music]

考慮すべき点がいくつかあります:

参照

コード断片集: Spacing


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