2009-04-28 7 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 } 

То, что я действительно хочу, чтобы заменить что-то для «г» и генерировать выход для мелодии несколько раз. Простые переменные 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

Было бы полезно отметить это как лилий. – thSoft

+0

Вы задали этот вопрос в списке рассылки lilypond? Они там очень хорошие ... – masher

ответ

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 } 

Скопируйте этот выход и вставьте его туда, куда вы хотите.

 Смежные вопросы

  • Нет связанных вопросов^_^