Qual é a melhor maneira de transpor automaticamente um arquivo de origem LilyPond em várias chaves?

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

Pergunta

problema

estou a usar Lagoa do lírio para compor partituras para um coro de igreja tocar.Dependendo de quem estiver disponível em uma determinada semana, as músicas serão tocadas em vários tons.Temos uma pianista incrível que pode tocar qualquer coisa que jogarmos para ela e os guitarristas normalmente escrevem acordes alternativos, mas quero tornar as coisas mais fáceis tendo partituras lindamente compostas disponíveis em qualquer tom que quisermos.

Então digamos que vamos cantar nosso ABC.Primeiro, pegarei todas as transcrições de origem disponíveis e as inserirei em um script LilyPond:

melody = \relative c' {
    c c g g
    a a g2
    f f e e
    d d c2 }

Eu quero a capacidade de transpor isso automaticamente, então se eu quiser tudo em 'G' eu envolvo a música em uma chamada ranspose assim:

melody = \transpose c g \relative c' {
    c c g g
    a a g2
    f f e e
    d d c2 }

O que eu realmente quero é substituir o 'g' por algo e gerar a saída da melodia várias vezes.Variáveis ​​simples do LilyPond não parecem funcionar aqui, e até agora não tive sucesso em definir uma função de esquema para fazer isso.

O que recorri no momento foi pegar o arquivo acima, chamá-lo de twinkle.ly e transformá-lo em um script M4 chamado twinkle.ly.m4, cujo conteúdo é parecido com este:

melody = \transpose c _key \relative c' {
c c g g
a a g2
f f e e
d d c2 }

Em seguida, compilo o while executando a seguinte linha:

> m4 -D _key=g twinkle.ly.m4 > twinkle_g.ly && lilypond twinkle_g.ly

Eu escrevi um Makefile para fazer isso para mim, definindo regras para cada música que tenho e cada tom que me interessa.

perguntaTem que haver uma maneira melhor de fazer isso.Dado que o Lilypond suporta esquema incorporado, eu preferiria não usar uma macro pré-processada nele.Alguém mais encontrou uma solução para esse mesmo problema?

Foi útil?

Solução

Você pode consultar a variável melody e transpô-la nas tonalidades desejadas:

melody = \relative c' { c8 e c e g4 g }
\score {
  \transpose c d \melody
}
\score {
  \transpose c e \melody
}
% etc.

Se você deseja gerar as transposições como arquivos separados, incorpore-os nos blocos \book.

Outras dicas

Se você deseja criar duas cópias do mesmo fragmento, uma transposta e outra não, você pode usar \displayLilyMusic.Por exemplo,

{
  \displayLilyMusic \transpose c a, { c4 e g a bes }
}

Exibirá

{ a,4 cis e fis g }

Copie esta saída e cole-a onde quiser.

Use o grátis Editor Frescobaldi para Lilypond.Ele fornece uma ferramenta de transposição poderosa.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top