Как лучше всего автоматически транспонировать исходный файл Lilypond в несколько ключей?

StackOverflow https://stackoverflow.com/questions/799837

Вопрос

проблема

я использую Лилипонд набрать ноты для церковного хора, чтобы выступить. В зависимости от того, кто доступен на любой неделе, песни будут сыграны в различных ключах. У нас есть удивительный пианист, который может сыграть все, что мы бросаем в нее, и гитаристы обычно будут набирать альтернативные аккорды, но я хочу облегчить ситуацию, имея красивую листовую музыку на сайтике в любом ключе, который мы хотим.

Так скажем, мы будем петь наши 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Анкет Он обеспечивает мощный инструмент транспозиции.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top