5.5 垂直方向のスペース

基本的に、LilyPond のオブジェクトにおける垂直方向のスペーシングは非常に良いです。2 声とピアノ伴奏からなる単純な曲でどのようになるかを見てみましょう:

[image of music]

垂直方向のスペースについて、何もおかしな所はありません。しかし、あなたが出版社と共に作業していて、譜と歌詞の垂直方向のスペースについてある要求がある場合を想像してください: 歌詞が音符から離れて配置されるように、ピアノ伴奏が歌のパートから離れて配置されるように、ピアノ伴奏の 2 つの譜が近づけて配置されるように要求されたとします。まず歌詞から取り組み始めましょう。

歌詞はシステム (訳注: 1 行分の譜のまとまり) 内に配置されています。そのため、歌詞のスペースを調整するコマンドはシステム内部の可変な垂直方向のスペース にあります。これによると、歌詞は non-staff lines (譜ではない行) であるため、このスペースを変更するコマンドは nonstaff プロパティと関連するということが分かります。歌詞と関連している (上の段の) 譜とのスペースを広げるには relatedstaff プロパティ、下の段とのスペースを広げるには unrelatedstaff プロパティを使います。歌のパートは VerticalAxisGroup の一部であるため、そのプロパティを調整する必要があります。試してみて、効果があるか見てみましょう:

<<
  \new ChoirStaff
  <<
    \new Staff {
      \new Voice = "music" {
        b'2 c' c' c'
      }
    }
    \new Lyrics \with {
      \override VerticalAxisGroup.
        nonstaff-relatedstaff-spacing.padding = #5
      \override VerticalAxisGroup.
        nonstaff-unrelatedstaff-spacing.padding = #5
    }
    \lyricsto "music" {
      Here are some lyrics
    }
    \new Staff {
      \clef bass e'2 f e c
    }
  >>
  \new PianoStaff
  <<
    \new Staff {
      g''2 c'' c'' a''
    }
    \new Staff {
      \clef bass e2 f c e
    }
  >>
>>

[image of music]

確かに反映されました。しかしやり過ぎかもしれません。padding プロパティを 5 に設定すると、LilyPond は 5 譜スペースをオブジェクト間の距離に追加します。これは今回は大きすぎるので、2 を使用しましょう。

次に、ピアノ伴奏を歌のパートから離しましょう。歌は ChoirStaff であるため、この譜のグループと下にあるピアノ譜とのスペースを増やす必要があります。StaffGrouperstaffgroup-staff-spacing にある basic-distance を変更することで行います。

<<
  \new ChoirStaff \with {
    \override StaffGrouper.
      staffgroup-staff-spacing.basic-distance = #15
  }
  <<
    \new Staff {
      \new Voice = "music" {
        b'2 c' c' c'
      }
    }
    \new Lyrics \with {
      \override VerticalAxisGroup.
        nonstaff-relatedstaff-spacing.padding = #2
      \override VerticalAxisGroup.
        nonstaff-unrelatedstaff-spacing.padding = #2
    }
    \lyricsto "music" {
      Here are some lyrics
    }
    \new Staff {
      \clef bass e'2 f e c
    }
  >>
  \new PianoStaff
  <<
    \new Staff {
      g''2 c'' c'' a''
    }
    \new Staff {
      \clef bass e2 f c e
    }
  >>
>>

[image of music]

完璧です。さて、ピアノ譜をお互いに近づける最後の要求に応えましょう。そのためには、また StaffGrouper のプロパティを変更しますが、今回はbasic-distancepadding の両方の値を減らします。このようにして行います。

<<
  \new ChoirStaff \with {
    \override StaffGrouper.
      staffgroup-staff-spacing.basic-distance = #15
  }
  <<
    \new Staff {
      \new Voice = "music" {
        b'2 c' c' c'
      }
    }
    \new Lyrics \with {
      \override VerticalAxisGroup.
        nonstaff-relatedstaff-spacing.padding = #2
      \override VerticalAxisGroup.
        nonstaff-unrelatedstaff-spacing.padding = #2
    }
    \lyricsto "music" {
      Here are some lyrics
    }
    \new Staff {
      \clef bass e'2 f e c
    }
  >>
  \new PianoStaff \with {
    \override StaffGrouper.staff-staff-spacing = #'(
                            (basic-distance . 0)
                            (padding . 0))
  }
  <<
    \new Staff {
      g''2 c'' c'' a''
    }
    \new Staff {
      \clef bass e2 f c e
    }
  >>
>>

[image of music]

非常に近くなりました。しかしこれが出版社の望むものでした。必要であれば、paddingbasic-distance を変更することで間隔を広げることができます。

垂直方向のスペースを変更する方法はたくさんあります。覚えておくべきキーポイントはこれです: StaffGroup にあるオブジェクト (例えば GrandStaffPianoStaff のグループ) のスペースは、 StaffGrouper の変数によって操作されること、グループ化されていない譜 (例えば LyricsStaff) のスペースは、VerticalAxisGroup の変数によって操作されることです。詳しくは、Flexible vertical spacing paper variablesFlexible vertical spacing within systems を参照してください。


GNU LilyPond 学習マニュアル v2.25.22 (development-branch).