[ << 基礎となるコンセプト ] | [トップ][目次][インデックス][ ? ] | [ 出力を調整する >> ] | ||
[ < ゼロから楽譜を構築する ] | [ 上へ : テンプレートを拡張する ] | [ 楽譜とパート > ] |
3.4.4 変数と関数を用いて入力の手間を省く
これまでに、以下のような記述を見てきました:
hornNotes = \relative c'' { c4 b dis c } \score { { \hornNotes } }
これは音楽表記を最小化するのに役に立つ可能性があるということに気付くかもしれません:
fragmentA = \relative c'' { a4 a8. b16 } fragmentB = \relative c'' { a8. gis16 ees4 } violin = \new Staff { \fragmentA \fragmentA \fragmentB \fragmentA } \score { { \violin } }
さらに、これらの変数 (変数、マクロ、(ユーザ定義) コマンドなどと呼ばれます) を調整のために使うこともできます:
dolce = \markup{ \italic \bold dolce } padText = { \once \override TextScript #'padding = #5.0 } fthenp=_\markup{ \dynamic f \italic \small { 2nd } \hspace #0.1 \dynamic p } violin = \relative c'' { \repeat volta 2 { c4._\dolce b8 a8 g a b | \padText c4.^"hi there!" d8 e' f g d | c,4.\fthenp b8 c4 c-. | } } \score { { \violin } \layout{ragged-right=##t} }
これらの明らかに変数は入力の手間を省くのに役立っています。例えそれらの変数が 1 回しか使用されないとしても、変数化することを考慮する価値があります – 複雑さを減らします。以前に使用した変数を使っていない例を見てみましょう。それはとても読み難く、特に最後の行が読み難いです。
violin = \relative c'' { \repeat volta 2 { c4._\markup{ \italic \bold dolce } b8 a8 g a b | \once \override TextScript #'padding = #5.0 c4.^"hi there!" d8 e' f g d | c,4.\markup{ \dynamic f \italic \small { 2nd } \hspace #0.1 \dynamic p } b8 c4 c-. | } }
これまでに見てきたのは静的な置き換えです –
LilyPond は \padText
を見ると、それを定義した内容
(つまり、padText=
の右側にあるもの) に置き換えます。
LilyPond は非静的な置き換えも処理できます (それらを関数と見なすことができます)。
padText = #(define-music-function (parser location padding) (number?) #{ \once \override TextScript #'padding = #$padding #}) \relative c''' { c4^"piu mosso" b a b \padText #1.8 c4^"piu mosso" d e f \padText #2.6 c4^"piu mosso" fis a g }
変数を使うことは、LilyPond 入力構文に変更があった場合の作業を減らす良い方法でもあります (
古い入力ファイルをアップデートする を参照してください)。あなたがあなたの入力ファイルすべてに使用する単一の定義
(\dolce
のような) を持っていて、構文が変更された場合、すべての .ly
ファイルを変更する代わりに、\dolce
定義をアップデートするだけで済みます。
[ << 基礎となるコンセプト ] | [トップ][目次][インデックス][ ? ] | [ 出力を調整する >> ] | ||
[ < ゼロから楽譜を構築する ] | [ 上へ : テンプレートを拡張する ] | [ 楽譜とパート > ] |
他の言語: English, deutsch, español, français, magyar, italiano, nederlands