2009-04-28 18 views
15

problema¿Cuál es la mejor manera de transportar automáticamente un archivo fuente LilyPond en varias claves?

estoy usando LilyPond para componer partituras para un coro de la iglesia para llevar a cabo. Dependiendo de quién esté disponible en una semana determinada, las canciones se reproducirán en varias teclas. Tenemos una pianista increíble que puede tocar cualquier cosa que le arrojemos y los guitarristas típicamente dibujarán acordes alternativos, pero quiero facilitar las cosas al tener música bellamente compuesta disponible en cualquier tecla que deseemos.

Digamos que vamos a cantar nuestro abecedario. En primer lugar voy a tomar lo que sea transcripciones fuente disponible y lo inserta en una secuencia de comandos de LilyPond:

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

Quiero la capacidad de incorporar la presente de forma automática, por lo que si quiero que toda la cosa en 'G' envuelvo la canción en una \ llamada transposición de esta manera:

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

lo que realmente quiero es sustituir algo por la 'g' y generar la salida para los tiempos de la melodía múltiple. Las variables simples de LilyPond no parecen funcionar aquí, y hasta ahora no he podido definir una función de esquema para hacer esto.

Lo que he recurrido a por el momento se está llevando el archivo anterior, lo llaman twinkle.ly y convertirla en un guión llamado M4 twinkle.ly.m4, los contenidos de los cuales se ven así:

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

entonces compilar la cosa mientras ejecutando la siguiente línea:

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

he escrito un Makefile para hacer esto para mí, la definición de reglas para cada canción que tengo y cada llave que me interesa.

pregunta Tiene que haber una mejor manera de solucionar esto. Dado que Lilypond admite el esquema integrado, preferiría no utilizar una macro preprocesada. ¿Alguien más ha encontrado una solución para este mismo problema?

+0

Sería útil etiquetar esto como lilypond también. – thSoft

+0

¿Ha hecho esta pregunta en la lista de correo de lilypond? Están bastante bien allí ... – masher

Respuesta

19

puede hacer referencia a la variable de la melodía y se han transpuesto en las teclas deseadas:

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

Si desea dar salida a las transposiciones como archivos separados, incrustarlos en bloques \ libros.

3

Si desea crear dos copias del mismo fragmento, una transpuesta y otra no, puede usar \displayLilyMusic. Por ejemplo,

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

mostrará

{ a,4 cis e fis g } 

Copiar y pegar esta salida siempre que lo desee.

Cuestiones relacionadas