3.3.2 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
    }
  >>
>>

[image of music]

音楽表記には変更を加えずに、楽譜構造の文を変えるだけで、ボーカル パートだけあるいはピアノ パートだけの楽譜を作り出すことができます。

長い楽譜では、変数定義をそれぞれ別々のファイルの中に置いて、それらのファイルをインクルードすることになるかもしれません – LilyPond ファイルをインクルードする を参照してください。


タグを使用する

\tag #'partA コマンドは音楽表記に partA という名前を付けます。この方法でタグを付けられた表記は、後で \keepWithTag #'name\removeWithTag #'name のどちらかを用いて、名前によって選択あるいは排除することができます。タグの付いた音楽にそのようなフィルタを適用した結果は以下のようになります:

フィルタ

結果

\keepWithTag #'name が前に付くタグ付きの音楽

タグの付いていない音楽と name というタグの付いた音楽がインクルードされます。他のタグ名を持つタグ付き音楽は排除されます。

\removeWithTag #'name が前に付くタグ付きの音楽

タグの付いていない音楽と name 以外のタグを持つ音楽がインクルードされます。name というタグの付いた音楽は排除されます。

\keepWithTag\removeWithTag のどちらも前に付かないタグ付きの音楽

タグの付いた音楽とタグの付いていない音楽すべてがインクルードされます。

\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
}

[image of 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
}

[image of 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
>>

[image of 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
}

[image of music]

単一の音楽表記に複数の \keepWithTag フィルタを適用すると、タグ付きセクションは すべて 排除されます。なぜなら、最初のフィルタはあるタグ名以外を持つセクションを排除し、2 番目のフィルタがそのタグ名を持つセクションを排除するからです。

参照

学習マニュアル: 変数を用いて楽曲を編成する

記譜法リファレンス: 自動パート結合, LilyPond ファイルをインクルードする


他の言語: English, deutsch, español, français

LilyPond — 記譜法リファレンス

inserted by FC2 system