3.3.2 1 つのソースから異なる版を生成する

同じ音楽ソースから異なるバージョンの楽譜を容易に生成できるようにするために、いくつかの方法が用意されています。長い音楽や注記のセクションをさまざまなやり方で組み合わせる場合には、おそらく変数が最も役に立つでしょう。差し替え用の短い音楽セクションの中から 1 つを選択する場合にはタグが役に立ち、楽曲の一部をいろいろな箇所で組み合わせることもできます。

どのような方法をとるにしても、楽譜構造から音楽表記を分離しておくと、音楽表記に手を触れずに楽譜構造を変更することが簡単に行えます。


変数を使用する

音楽のセクションが変数の中で定義されている場合、そのセクションを楽譜の異なる部分で再利用することができます -- Organizing pieces with variables を参照してください。例えば、アカペラ のボーカル譜はリハーサル目的ですべてのパートをまとめたピアノ譜を持つことがよくあります。これは声楽全般で言えることです。その場合、音楽を入力する必要があるのは 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 { a4 a a a }
  \tag #'b \tag #'both { b4 b b b }
}
<<
\keepWithTag #'a \music
\keepWithTag #'b \music
\keepWithTag #'both \music
>>

[image of music]

単一の音楽表記に複数の \removeWithTag フィルタを適用することによって、いくつかの異なる名前のタグが付いたセクションを排除することができます:

music = \relative c'' {
\tag #'A { a4 a a a }
\tag #'B { b4 b b b }
\tag #'C { c4 c c c }
\tag #'D { d4 d d d }
}
{
\removeWithTag #'B
\removeWithTag #'C
\music
}

[image of music]

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

既存の音楽表記のある特定の場所にいくつか音を組み込みたいことがあります。\pushToTag\appendToTag を使って、既存の音楽構造の 要素 の前または後に素材を追加することができます。すべての音楽構造が 要素 を持つわけではありませんが、連続するか同時進行する音楽構造はまず間違いなく 要素 を持ちます:

test = { \tag #'here { \tag #'here <<c''>> } }

{
  \pushToTag #'here c'
  \pushToTag #'here e'
  \pushToTag #'here g' \test
  \appendToTag #'here c'
  \appendToTag #'here e'
  \appendToTag #'here g' \test
}

[image of music]

どちらのコマンドもタグ、組み込む素材、それにタグ付けされた音楽表記を 取り、タグが出現するたびに素材を組み込みます。これらのコマンドは変更するものを全てコピーするので、オリジナルの \test が元の意味を保持し続けることを保証します。

参照

学習マニュアル: Organizing pieces with variables

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


グローバル設定を使用する

別のファイルからグローバル設定をインクルードすることができます:

lilypond -dinclude-settings=MY_SETTINGS.ly MY_SCORE.ly

ページ サイズ、フォント、書体などのような設定のグループを別々のファイルに保存することができます。こうすることにより、適当な設定ファイルを指定するだけで、同じ楽譜から異なる版を作り出すことができます。

このテクニックはスタイル シートでも使えます。 Style sheets を参照してください。

参照

学習マニュアル: Organizing pieces with variables, Style sheets

記譜法リファレンス: LilyPond ファイルをインクルードする


他の言語: English, deutsch, español, français, italiano
About automatic language selection.

LilyPond — 記譜法リファレンス v2.17.97 (開発版).