LilyPond ソース ファイルを複数のキーに自動的に移調する最良の方法は何ですか?

StackOverflow https://stackoverflow.com/questions/799837

質問

問題

使っています スイレンの池 教会の聖歌隊が演奏するための楽譜をタイプセットする。特定の週に誰が参加できるかに応じて、さまざまなキーで曲が演奏されます。私たちには、私たちが投げかけたものを何でも演奏できる素晴らしいピアニストがいて、ギタリストは通常​​、別のコードを鉛筆で書きますが、私は、希望するキーで利用できる美しく植字された楽譜を用意することで、作業を簡単にしたいと考えています。

それで、ABCを歌うとしましょう。まず、利用可能なソース文字起こしをすべて取得し、それを LilyPond スクリプトに入力します。

melody = \relative c' {
    c c g g
    a a g2
    f f e e
    d d c2 }

これを自動的に移調する機能が必要なので、全体を 'G' にしたい場合は、次のように ranspose 呼び出しで曲をラップします。

melody = \transpose c g \relative c' {
    c c g g
    a a g2
    f f e e
    d d c2 }

私が本当に望んでいるのは、「g」を何かに置き換えてメロディーの出力を複数回生成することです。単純な LilyPond 変数はここでは機能しないようで、これまでのところ、これを行うためのスキーム関数を定義することに失敗しています。

現時点で私がとったのは、上記のファイルを takekle.ly という名前にして、tinkle.ly.m4 という M4 スクリプトに変換することです。その内容は次のようになります。

melody = \transpose c _key \relative c' {
c c g g
a a g2
f f e e
d d c2 }

次に、次の行を実行して while をコンパイルします。

> m4 -D _key=g twinkle.ly.m4 > twinkle_g.ly && lilypond twinkle_g.ly

私はこれを行うために Makefile を書き、私が持っているすべての曲と興味のあるすべてのキーのルールを定義しました。

質問これについてはもっと良い方法があるはずです。Lilypond が埋め込みスキームをサポートしていることを考えると、その上で前処理されたマクロは使用したくないと思います。他にこれと同じ問題の解決策を考え出した人はいますか?

役に立ちましたか?

解決

メロディー変数を参照して、目的のキーに移調することができます。

melody = \relative c' { c8 e c e g4 g }
\score {
  \transpose c d \melody
}
\score {
  \transpose c e \melody
}
% etc.

移調を別のファイルとして出力したい場合は、移調を \book ブロックに埋め込みます。

他のヒント

同じフラグメントの 2 つのコピー (1 つは転置され、もう 1 つは転置されていない) を作成したい場合は、以下を使用できます。 \displayLilyMusic. 。例えば、

{
  \displayLilyMusic \transpose c a, { c4 e g a bes }
}

表示されます

{ a,4 cis e fis g }

この出力をコピーし、任意の場所に貼り付けます。

無料のものを使用する lilypond のフレスコバルディ編集者。強力な移調ツールを提供します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top