[英]What is the best way to automatically transpose a LilyPond source file into multiple keys?
問題
我正在使用LilyPond為教堂合唱團排版樂譜。 根據任何給定周的人數,歌曲將以各種鍵播放。 我們有一位出色的鋼琴演奏家可以演奏我們扔在她身上的任何東西,而吉他手通常會以交替的和弦書寫,但我想通過在我們想要的任何鍵中提供精美排版的樂譜來讓事情變得更容易。
所以說我們要唱我們的ABC。 首先,我將采用任何可用的源代碼轉換並將其輸入LilyPond腳本:
melody = \relative c' {
c c g g
a a g2
f f e e
d d c2 }
我希望能夠自動轉置它,所以如果我想要'G'中的整個內容我將這首歌包裝在\\ transpose調用中,如下所示:
melody = \transpose c g \relative c' {
c c g g
a a g2
f f e e
d d c2 }
我真正想要的是用'g'替換某些東西並多次為旋律生成輸出。 簡單的LilyPond變量似乎在這里不起作用,到目前為止,我在定義一個方案函數時沒有成功。
我暫時使用的是獲取上述文件,將其稱為twinkle.ly並將其轉換為名為twinkle.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塊。
如果要創建同一片段的兩個副本,一個轉置而另一個不轉換,則可以使用\\displayLilyMusic
。 例如,
{
\displayLilyMusic \transpose c a, { c4 e g a bes }
}
會顯示
{ a,4 cis e fis g }
復制此輸出並將其粘貼到您想要的任何位置。
使用免費的Frescobaldi編輯器lilypond 。 它提供了強大的換位工具。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.