| [ << 出力を調整する ] | [トップ][目次][インデックス][ ? ] | [ テンプレート >> ] | ||
| [ < 調整のために変数を使用する ] | [ 上へ : 更なる調整 ] | [ その他の情報源 > ] | ||
4.6.3 スタイル シート
LilyPond が作り出す出力にはさまざまな変更を加えることができます (詳細は 出力を調整する を参照してください)。しかしながら、調整を加えたい入力ファイルがたくさんあるとしたらどうでしょう?また、単に調整を実際の音楽表記から分離したいとしたらどうでしょう?これはとても簡単なことです。
以下の例を見てみましょう。#() を持つ部分を理解できなくても心配しないでください。Scheme を用いた高度な調整 で説明されています。
mpdolce =
#(make-dynamic-script
(markup #:hspace 0
#:translate '(5 . 0)
#:line (#:dynamic "mp"
#:text #:italic "dolce")))
inst =
#(define-music-function
(parser location string)
(string?)
(make-music
'TextScriptEvent
'direction UP
'text (markup #:bold (#:box string))))
\relative c'' {
\tempo 4=50
a4.\mpdolce d8 cis4--\glissando a |
b4 bes a2 |
\inst "Clarinet"
cis4.\< d8 e4 fis |
g8(\! fis)-. e( d)-. cis2 |
}
この例には出力が重なり合うという問題がいくつかあり、オブジェクトを移動させる のテクニックを使ってそれらを修正しています。そこで、さらに mpdolce 定義と tempoMark 定義に関して何かしてみましょう。それらは望みの出力を作り出していますが、それらを別の楽曲で使いたいとします。単純にそれらを各ファイルの先頭部分にカット&ペーストすることもできますが、わずらわしいです。その方法では定義は依然として入力ファイルの中にあり、私は個人的にすべての #() は何か醜いと感じます。それらを他のファイルの中に隠すことにしましょう:
%%% これを "definitions.ily" というファイル名で保存してください
mpdolce =
#(make-dynamic-script
(markup #:hspace 0
#:translate '(5 . 0)
#:line (#:dynamic "mp"
#:text #:italic "dolce")))
inst =
#(define-music-function
(parser location string)
(string?)
(make-music
'TextScriptEvent
'direction UP
'text (markup #:bold (#:box string))))
音楽ファイルの先頭付近で \include コマンドを使ってこのファイルを参照します。(インクルードされるファイルをコンパイルされるメイン ファイルと区別するため、拡張子 ‘.ily’ を使っています。)
今度は音楽ファイルを変更しましょう
(このファイルを ‘"music.ly"’ として保存してください)。
\include "definitions.ily"
\relative c'' {
\tempo 4=50
a4.\mpdolce d8 cis4--\glissando a |
b4 bes a2 |
\inst "Clarinet"
cis4.\< d8 e4 fis |
g8(\! fis)-. e( d)-. cis2 |
}
これで前よりも良くなりましたが、いくつか変更を加えることにします。グリッサンド (訳者: 第 1 小節の C シャープと A の間) は見え難いので、もっと太く、符頭に近づけます。メトロノーム記号を、最初の音符の上ではなく、音部記号の上に持ってきます。最後に、私の作曲の先生は ‘C’ 拍子記号を嫌っているので、‘4/4’ に変更した方が良さそうです。
‘music.ly’ には変更を加えないでください。‘definitions.ily’ を以下のように書き換えます:
%%% definitions.ily
mpdolce =
#(make-dynamic-script
(markup #:hspace 0
#:translate '(5 . 0)
#:line (#:dynamic "mp"
#:text #:italic "dolce")))
inst =
#(define-music-function
(parser location string)
(string?)
(make-music
'TextScriptEvent
'direction UP
'text (markup #:bold (#:box string))))
\layout{
\context {
\Score
\override MetronomeMark #'extra-offset = #'(-9 . 0)
\override MetronomeMark #'padding = #'3
}
\context {
\Staff
\override TimeSignature #'style = #'numbered
}
\context {
\Voice
\override Glissando #'thickness = #3
\override Glissando #'gap = #0.1
}
}
もっと良くなりました!今度はこれを公表したいとします。私の作曲の先生は ‘C’ 拍子記号を嫌っていますが、私はそちらを好みます。現在の definitions.ily を web-publish.ily にコピーして、それにを変更を加えてみましょう。この音楽はスクリーンに表示される PDF を作り出すことを意図したものなので、出力のフォントを全体に大きくすることにします。
%%% definitions.ily
mpdolce =
#(make-dynamic-script
(markup #:hspace 0
#:translate '(5 . 0)
#:line (#:dynamic "mp"
#:text #:italic "dolce")))
inst =
#(define-music-function
(parser location string)
(string?)
(make-music
'TextScriptEvent
'direction UP
'text (markup #:bold (#:box string))))
#(set-global-staff-size 23)
\layout{
\context {
\Score
\override MetronomeMark #'extra-offset = #'(-9 . 0)
\override MetronomeMark #'padding = #'3
}
\context {
\Staff
}
\context {
\Voice
\override Glissando #'thickness = #3
\override Glissando #'gap = #0.1
}
}
音楽ファイルの中では、単に \include "definitions.ily" を
\include "web-publish.ily" に置き換えるだけです。もちろん、これをもっと便利なようにすることができます。‘definitions.ily’ ファイルには
mpdolce と tempoMark の定義だけを持たせて、‘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.14.2" #(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"
| [ << 出力を調整する ] | [トップ][目次][インデックス][ ? ] | [ テンプレート >> ] | ||
| [ < 調整のために変数を使用する ] | [ 上へ : 更なる調整 ] | [ その他の情報源 > ] | ||
他の言語: English, česky, deutsch, español, français, italiano, nederlands