Как лучше всего автоматически транспонировать исходный файл Lilypond в несколько ключей?
-
18-09-2019 - |
Вопрос
проблема
я использую Лилипонд набрать ноты для церковного хора, чтобы выступить. В зависимости от того, кто доступен на любой неделе, песни будут сыграны в различных ключах. У нас есть удивительный пианист, который может сыграть все, что мы бросаем в нее, и гитаристы обычно будут набирать альтернативные аккорды, но я хочу облегчить ситуацию, имея красивую листовую музыку на сайтике в любом ключе, который мы хотим.
Так скажем, мы будем петь наши ABC. Сначала я возьму любые доступные транскрипции источников и введу его в сценарий лилипонда:
melody = \relative c' {
c c g g
a a g2
f f e e
d d c2 }
Я хочу возможность транспонировать это автоматически, поэтому, если я хочу все это в 'G', я оберную песню в Transpect Call как SO:
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 поддерживает встроенную схему, я бы предпочел не использовать на ней макрос, предварительно обработанную. Кто -нибудь еще придумал решение этой же проблемы?
Решение
Вы можете обратиться к переменной мелодии и пройти ее в желаемых ключах:
melody = \relative c' { c8 e c e g4 g } \score { \transpose c d \melody } \score { \transpose c e \melody } % etc.
Если вы хотите вывести транспозиции в виде отдельных файлов, введите их в блоки книги.
Другие советы
Если вы хотите создать две копии одного и того же фрагмента, один транспонирован, а один нет, вы можете использовать \displayLilyMusic
. Анкет Например,
{
\displayLilyMusic \transpose c a, { c4 e g a bes }
}
будет отображать
{ a,4 cis e fis g }
Скопируйте этот вывод и вставьте его везде, где вы хотите.
Используйте бесплатно Редактор Frestobaldi для LilypondАнкет Он обеспечивает мощный инструмент транспозиции.