Bonjour,
Je n'imagine pas que quelqu'un n'ait pas déjà fait ça mais j’aimerais bien comprendre pourquoi ma petite fonction plante quand je veux les parties transposées.
L'idée est d'avoir une variable globale \oreille qui, quand elle est vraie, laisse toutes les parties en sons réels, et quand elle est fausse, transpose celles où c'est indiqué à l'intervalle propre à l'instrument.
Au moins pour les sons réels ça fonctionne, mais ça plante quand ça doit transposer.
J'ai vu une discussion sur les spécificités de la fonction transpose mais j'avoue que ce qui est dit me passe très nettement au-dessus.
Je voulais juste rajouter ou pas la commande transpose avant la musique mais effectivement, en faisant carrément plus ambitieux ça fonctionne.
Chapeau!
C'est donc bien la spécificité de \transpose qui bloquait et pas une erreur de syntaxe Scheme (enfin, au final, c'était quand même une erreur de syntaxe).
Merci beaucoup
Ce n'est pas vraiment une spécificité de \transpose, c'est surtout que \transpose est une fonction à trois arguments (hauteur de départ, hauteur d'arrivée, musique). Et donc \transpose x y n'est pas valide, il manque le troisième argument.
Merci Jean pour cette précision que me fait découvrir à quel point j'étais à côté de la plaque. Je croyais que ma petite fonction écrivait du code qui serait interprété "plus tard"...
Oui, c'est une erreur fréquente de croire que LilyPond a des « macros », un peu comme LaTeX, qui insèrent un bout de code quelque part, alors qu'il n'y a que des vraies fonctions, qui prennent des arguments et renvoient une valeur.