проблемаКаков наилучший способ автоматического переноса исходного файла 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 поддерживает встроенную схему, я бы предпочел не использовать макрос, предварительно обработанный на нем. Кто-нибудь еще придумал решение этой же проблемы?
Было бы полезно отметить это как лилий. – thSoft
Вы задали этот вопрос в списке рассылки lilypond? Они там очень хорошие ... – masher