2009-04-28 26 views
15

問題自動將LilyPond源文件轉換爲多個密鑰的最佳方式是什麼?

我使用LilyPond來排版樂譜一個教堂的唱詩班演出。根據在任何給定的星期內可用的人數,歌曲將以各種鍵進行播放。我們有一位了不起的鋼琴家,他可以演奏我們扔向她的任何東西,而吉他手通常會以不同的和絃鉛筆,但我希望通過在我們想要的任何按鍵中提供精美的排版樂譜來使事情更輕鬆。

所以說我們要唱我們的ABC。首先,我將採取一切源轉錄可用,它進入一個LilyPond的腳本:

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

我想自動轉這個能力,所以如果我想在「G」整個事情我換歌在\轉置電話像這樣:

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

我真正想要的是替代'g'的東西,併爲多次旋律生成輸出。簡單的LilyPond變量在這裏似乎不起作用,到目前爲止,我還沒有成功定義一個方案函數來實現這一點。

我所使出的那一刻,走的是上面的文件,twinkle.ly調用它,把它變成一個M4腳本調用twinkle.ly.m4,它的內容是這樣的:

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

我然後通過執行以下行編譯時的事情:

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

我寫了一個Makefile文件來爲我做這個,定義了每首歌我已經和每一個關鍵我感興趣的規則。

問題 有一個更好的方法來解決這個問題。鑑於Lilypond支持嵌入式方案,我寧願不使用預處理過的宏。有沒有人想出解決這個問題的辦法?

+0

將它標記爲lilypond會有幫助。 – thSoft 2009-05-08 08:28:04

回答

19

你可以參考的旋律變量,並在所需鍵換位:

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

如果你想輸出的換位作爲單獨的文件,將它們嵌入到\書芯。

3

如果您想要創建同一個片段的兩個副本,一個是轉置的而另一個不是,則可以使用\displayLilyMusic。例如,

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

將顯示

{ a,4 cis e fis g } 

拷貝輸出並粘貼不管你想要的。

相關問題