5.7.3 スタイル シート

LilyPond が作り出す出力にはさまざまな変更を加えることができます (詳細は 出力を調整する を参照してください)。しかしながら、調整を加えたい入力ファイルがたくさんあるとしたらどうでしょう?また、単に調整を実際の音楽表記から分離したいとしたらどうでしょう?これはとても簡単なことです。

以下の例を見てみましょう。#() を持つ部分を理解できなくても心配しないでください。Scheme を用いた高度な調整 で説明されています。

mpdolce =
  \tweak self-alignment-X #-0.6
  #(make-dynamic-script
    #{ \markup { \dynamic mp \normal-text \italic \bold dolce } #})

inst =
#(define-music-function
     (string)
     (string?)
   #{ <>^\markup \bold \box #string #})

\relative {
  \tempo 4=50
  a'4.\mpdolce d8 cis4--\glissando a |
  b4 bes a2 |
  \inst "Clarinet"
  cis4.\< d8 e4 fis |
  g8(\! fis)-. e( d)-. cis2 |
}

[image of music]

mpdolcetempoMark の定義に手を加えてみることにします。それらは望みの出力を作り出していますが、それらを別の楽曲で使いたいとします。単純にそれらを各ファイルの先頭部分にカット&ペーストすることもできますが、わずらわしいです。その方法では定義は依然として入力ファイルの中にあり、私は個人的にすべての #() は何か醜いと感じます。それらを他のファイルの中に隠すことにしましょう:

%%% これを "definitions.ily" というファイル名で保存してください
mpdolce =
  \tweak self-alignment-X #-0.6
  #(make-dynamic-script
    #{ \markup { \dynamic mp \normal-text \italic \bold dolce } #})

inst =
#(define-music-function
     (string)
     (string?)
   #{ <>^\markup \bold \box #string #})

音楽ファイルの先頭付近で \include コマンドを使ってこのファイルを参照します。(インクルードされるファイルをコンパイルされるメイン ファイルと区別するため、拡張子 .ily を使っています。) 今度は音楽ファイルを変更しましょう (このファイルを "music.ly" として保存してください)。

\include "definitions.ily"

\relative {
  \tempo 4=50
  a'4.\mpdolce d8 cis4--\glissando a |
  b4 bes a2 |
  \inst "Clarinet"
  cis4.\< d8 e4 fis |
  g8(\! fis)-. e( d)-. cis2 |
}

[image of music]

これで前よりも良くなりましたが、いくつか変更を加えることにします。グリッサンド (訳者: 第 1 小節の C シャープと A の間) は見え難いので、もっと太く、符頭に近づけます。メトロノーム記号を、最初の音符の上ではなく、音部記号の上に持ってきます。最後に、私の作曲の先生は ‘C’ 拍子記号を嫌っているので、‘4/4’ に変更した方が良さそうです。

music.ly には変更を加えないでください。definitions.ily を以下のように書き換えます:

%%%  definitions.ily
mpdolce =
  \tweak self-alignment-X #-0.6
  #(make-dynamic-script
    #{ \markup { \dynamic mp \normal-text \italic \bold dolce } #})

inst =
#(define-music-function
     (string)
     (string?)
   #{ <>^\markup \bold \box #string #})

\layout{
  \context {
    \Score
    \override MetronomeMark.extra-offset = #'(-5 . 0)
    \override MetronomeMark.padding = #'3
  }
  \context {
    \Staff
    \override TimeSignature.style = #'numbered
  }
  \context {
    \Voice
    \override Glissando.thickness = #3
    \override Glissando.gap = #0.1
  }
}

[image of music]

もっと良くなりました!今度はこれを公表したいとします。私の作曲の先生は ‘C’ 拍子記号を嫌っていますが、私はそちらを好みます。現在の definitions.ilyweb-publish.ily にコピーして、それにを変更を加えてみましょう。この音楽はスクリーンに表示される PDF を作り出すことを意図したものなので、出力のフォントを全体に大きくすることにします。

%%%  web-publish.ily
mpdolce =
  \tweak self-alignment-X #-0.6
  #(make-dynamic-script
    #{ \markup { \dynamic mp \normal-text \italic \bold dolce } #})

inst =
#(define-music-function
     (string)
     (string?)
   #{ <>^\markup \bold \box #string #})

#(set-global-staff-size 23)

\layout{
  \context {
    \Score
    \override MetronomeMark.extra-offset = #'(-5 . 0)
    \override MetronomeMark.padding = #'3
  }
  \context {
    \Staff
  }
  \context {
    \Voice
    \override Glissando.thickness = #3
    \override Glissando.gap = #0.1
  }
}

[image of music]

音楽ファイルの中では、単に \include "definitions.ily"\include "web-publish.ily" に置き換えるだけです。もちろん、これをもっと便利なようにすることができます。definitions.ily ファイルには mpdolcetempoMark の定義だけを持たせて、web-publish.ily ファイルには上で記述した \layout セクションだけを持たせ、university.ily ファイルには私の先生の好む出力を作り出すための調整だけを持たせます。music.ly の先頭部分は以下のようになります:

\include "definitions.ily"

%%%  以下の 2 行のどちらか片方のコメントを外してください!
\include "web-publish.ily"
%\include "university.ily"

このアプローチは、あなたがパーツ一式を作っているだけだとしても役に立つ可能性があります。私は自分のプロジェクトのために半ダースの ‘スタイル シート’ ファイルを使います。私はそれぞれの音楽ファイルを \include "../global.ily" で始め、gloval.ily には以下の内容を記述しています:

%%%   global.ily
\version "2.25.22"

#(ly:set-option 'point-and-click #f)

\include "../init/init-defs.ly"
\include "../init/init-layout.ly"
\include "../init/init-headers.ly"
\include "../init/init-paper.ly"

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