Quelle est la meilleure façon de transposer automatiquement un fichier source LilyPond dans plusieurs clés?

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

Question

problème

J'utilise LilyPond typeset partitions pour une chorale d'église à effectuer. En fonction de qui est disponible sur une semaine donnée, les chansons seront jouées dans différentes touches. Nous avons un pianiste extraordinaire qui peut jouer tout ce que nous jeter à elle et les guitaristes généralement crayon dans des accords alternatifs, mais je veux rendre les choses plus facile en ayant magnifiquement la musique de feuille typeset disponible dans une clé que nous voulons.

Donc, dire que nous allons chanter nos ABCs. D'abord, je vais prendre toutes les transcriptions source disponible et entrer dans un script LilyPond:

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

Je veux la capacité de transposer automatiquement, donc si je veux le tout dans « G » J'enveloppe la chanson dans un \ 'appel de transposition comme ceci:

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

Ce que je veux vraiment est de remplacer quelque chose pour le « g » et générer la sortie pour la mélodie à plusieurs reprises. Variables simples LilyPond ne semblent pas travailler ici, et jusqu'à présent j'ai pas réussi à définir une fonction de système pour le faire.

Ce que j'ai eu recours à pour le moment est de prendre le fichier ci-dessus, appelez-le twinkle.ly et le transformer en un script appelé M4 twinkle.ly.m4, dont le contenu ressemble à ceci:

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

Je compile alors la chose while en exécutant la ligne suivante:

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

J'ai écrit un Makefile pour le faire pour moi, la définition de règles pour chaque chanson que je l'ai et chaque clé que je suis intéressé par.

question Il doit y avoir une meilleure façon d'aller à ce sujet. Étant donné que LilyPond prend en charge système intégré, je préférerais ne pas utiliser une macro prétraité dessus. Est-ce que quelqu'un d'autre trouver une solution à ce même problème?

Était-ce utile?

La solution

Vous pouvez vous référer à la variable de la mélodie et l'ont transposée dans les touches souhaitées:

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

Si vous voulez afficher les transpositions sous forme de fichiers séparés, les intégrer dans des blocs \ livre.

Autres conseils

Si vous voulez créer deux copies du même fragment, une transposition et un non, vous pouvez utiliser \displayLilyMusic . Par exemple,

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

affiche

{ a,4 cis e fis g }

Copier cette sortie et le coller où vous voulez.

Utilisez le libre éditeur Frescobaldi LilyPond. Il constitue un outil de transposition puissant.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top