[ << 入出力全般 ] | [トップ][目次][インデックス][ ? ] | [ スペースの問題 >> ] | ||
[ < LilyPond ファイルをインクルードする ] | [ 上へ : 入力ファイルに取り組む ] | [ 変数を使用する > ] |
3.3.2 1 つのソースから異なる版を生成する
同じ音楽ソースから異なるバージョンの楽譜を容易に生成できるようにするために、いくつかの方法が用意されています。長い音楽や注記のセクションをさまざまなやり方で組み合わせる場合には、おそらく変数が最も役に立つでしょう。一方、差し替え用の短い音楽セクションの中から 1 つを選択する場合には、タグが役に立ちます。どのような方法をとるにしても、楽譜構造から譜表記を分離しておくと、譜表記に手を触れずに楽譜構造を変更することが楽に行えます。
変数を使用する | ||
タグを使用する |
[ << 入出力全般 ] | [トップ][目次][インデックス][ ? ] | [ スペースの問題 >> ] | ||
[ < 1 つのソースから異なる版を生成する ] | [ 上へ : 1 つのソースから異なる版を生成する ] | [ タグを使用する > ] |
変数を使用する
音楽のセクションが変数の中で定義されている場合、そのセクションを楽譜の異なる部分で再利用することができます – 変数を用いて楽曲を編成する を参照してください。例えば、アカペラ のボーカル譜はリハーサル目的ですべてのパートをまとめたピアノ譜を持つことがよくあります。これは声楽全般で言えることです。その場合、音楽は入力する必要があるのは 1 回だけです。2 つの変数からの音楽を 1 つの譜に組み込むことができます – 自動パート結合 を参照してください。ここに例を挙げます:
sopranoMusic = \relative c'' { a4 b c b8( a)} altoMusic = \relative g' { e4 e e f } tenorMusic = \relative c' { c4 b e d8( c) } bassMusic = \relative c' { a4 gis a d, } allLyrics = \lyricmode {King of glo -- ry } << \new Staff = "Soprano" \sopranoMusic \new Lyrics \allLyrics \new Staff = "Alto" \altoMusic \new Lyrics \allLyrics \new Staff = "Tenor" { \clef "treble_8" \tenorMusic } \new Lyrics \allLyrics \new Staff = "Bass" { \clef "bass" \bassMusic } \new Lyrics \allLyrics \new PianoStaff << \new Staff = "RH" { \set Staff.printPartCombineTexts = ##f \partcombine \sopranoMusic \altoMusic } \new Staff = "LH" { \set Staff.printPartCombineTexts = ##f \clef "bass" \partcombine \tenorMusic \bassMusic } >> >>
音楽表記には変更を加えずに、楽譜構造の文を変えるだけで、ボーカル パートだけあるいはピアノ パートだけの楽譜を作り出すことができます。
長い楽譜では、変数定義をそれぞれ別々のファイルの中に置いて、それらのファイルをインクルードすることになるかもしれません – LilyPond ファイルをインクルードする を参照してください。
[ << 入出力全般 ] | [トップ][目次][インデックス][ ? ] | [ スペースの問題 >> ] | ||
[ < 変数を使用する ] | [ 上へ : 1 つのソースから異なる版を生成する ] | [ テキスト エンコーディング > ] |
タグを使用する
\tag #'partA
コマンドは音楽表記に
partA という名前を付けます。この方法でタグを付けられた表記は、後で \keepWithTag #'name
と
\removeWithTag #'name
のどちらかを用いて、名前によって選択あるいは排除することができます。タグの付いた音楽にそのようなフィルタを適用した結果は以下のようになります:
フィルタ | 結果 |
---|---|
| タグの付いていない音楽と name というタグの付いた音楽がインクルードされます。他のタグ名を持つタグ付き音楽は排除されます。 |
| タグの付いていない音楽と name 以外のタグを持つ音楽がインクルードされます。name というタグの付いた音楽は排除されます。 |
| タグの付いた音楽とタグの付いていない音楽すべてがインクルードされます。 |
\tag
、\keepWithTag
それに \removeWithTag
コマンドの引数はシンボル (#'score
や #'part
など) とその後に続けて音楽表記であるべきです。
以下の例では、音楽の一部を 2 つのバージョンで示しています。1 つはトリルを通常の記譜法で示していて、もう 1 つはトリルを明示的に展開しています:
music = \relative g' { g8. c32 d \tag #'trills {d8.\trill } \tag #'expand {\repeat unfold 3 {e32 d} } c32 d } \score { \keepWithTag #'trills \music } \score { \keepWithTag #'expand \music }
\keepWithTag
を使う代わりに、音楽セクションを排除する方が楽な場合もあります:
music = \relative g' { g8. c32 d \tag #'trills {d8.\trill } \tag #'expand {\repeat unfold 3 {e32 d} } c32 d } \score { \removeWithTag #'expand \music } \score { \removeWithTag #'trills \music }
タグ フィルタリングはアーティキュレーション、テキストなどにも適用することができます。フィルタリングを行うにはアーティキュレーションの前に
-\tag #'your-tag
を置きます。例えば、以下は条件付の運指指示を持つ音符と条件付注記を持つ音符を定義しています:
c1-\tag #'finger ^4 c1-\tag #'warn ^"Watch!"
複数の \tag
エントリで、表記に複数のタグを付ける場合もあります:
music = \relative c'' { \tag #'a \tag #'both { a a a a } \tag #'b \tag #'both { b b b b } } << \keepWithTag #'a \music \keepWithTag #'b \music \keepWithTag #'both \music >>
単一の音楽表記に複数の \removeWithTag
フィルタを適用することによって、いくつかの異なる名前のタグが付いたセクションを排除することができます:
music = \relative c'' { \tag #'A { a a a a } \tag #'B { b b b b } \tag #'C { c c c c } \tag #'D { d d d d } } { \removeWithTag #'B \removeWithTag #'C \music }
単一の音楽表記に複数の \keepWithTag
フィルタを適用すると、タグ付きセクションは すべて 排除されます。なぜなら、最初のフィルタはあるタグ名以外を持つセクションを排除し、2 番目のフィルタがそのタグ名を持つセクションを排除するからです。
参照
学習マニュアル: 変数を用いて楽曲を編成する
記譜法リファレンス: 自動パート結合, LilyPond ファイルをインクルードする
[ << 入出力全般 ] | [トップ][目次][インデックス][ ? ] | [ スペースの問題 >> ] | ||
[ < 変数を使用する ] | [ 上へ : 1 つのソースから異なる版を生成する ] | [ テキスト エンコーディング > ] |