lilypond-user-fr
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

\include in scheme fiunctions


From: Pierre-Yves Saumont
Subject: \include in scheme fiunctions
Date: Sun, 27 Feb 2022 11:25:20 +0100

Bonjour,

La documentation Lilypond indique que n'importe quel code Lilypond peut être utilisé dans une fonction Scheme en le plaçant dans un bloc #{ ... #}, mais il semble que ce ne soit pas le cas pour \include.

J'essaie de construire un programme pour manipuler des partitions de Big Band. Le but est d'extraire d'un certain nombre de partitions les parties d'un certain nombre d'instruments et de faire un PDF par instrument comportant les pages adéquates.

Au départ, il y a une liste de titres (10 à 15) et une liste d'instruments (16 à 22).

Pour l'instant, je doit créer manuellement un fichier comportant les lignes suivantes:

\include "../Doxy/Doxy_music.ly"
\include "partAltoI.ly"
\include "../Alfie/Alfie_music.ly"
\include "partAltoI.ly"
\include "../CestSiBon/CestSiBon_music.ly"
\include "partAltoI.ly"
\include "../BeyondTheSea/BeyondTheSea_music.ly"
\include "partAltoI.ly"
\include "../CloseToYou/CloseToYou_music.ly"
\include "partAltoI.ly"
.
.
.
include "../Doxy/Doxy_music.ly"
\include "partAltoII.ly"
\include "../Alfie/Alfie_music.ly"
\include "partAltoII.ly"
\include "../CestSiBon/CestSiBon_music.ly"
\include "partAltoII.ly"
\include "../BeyondTheSea/BeyondTheSea_music.ly"
\include "partAltoII.ly"
\include "../CloseToYou/CloseToYou_music.ly"
\include "partAltoII.ly"
.
.
.
include "../Doxy/Doxy_music.ly"
\include "partTenorI.ly"
\include "../Alfie/Alfie_music.ly"
\include "partTenorI.ly"
\include "../CestSiBon/CestSiBon_music.ly"
\include "partTenorI.ly"
\include "../BeyondTheSea/BeyondTheSea_music.ly"
\include "partTenorI.ly"
\include "../CloseToYou/CloseToYou_music.ly"
\include "partTenorI.ly"
.
.
.

Cela fait beaucoup de frappe inutile si on considère que les données réelles sont simplement deux listes. La liste des titres :

Doxy
Alfie
CestSiBon
BeyondTheSea
CloseToYou
.
.
.

et la liste des instruments

AltoI
AltoII
TenorI
TenorII
Baritone
.
.
.

J'ai essayé de créer une fonction telle que :

part = #(define-void-function (score instrument) (string? string?)
   #{
     \include "../Doxy/Doxy_music.ly"
     \include "partAltoI.ly"
   #})

(Ici, je ne construis pas encore les noms des fichiers à partir des arguments de la fonction, j'essaye simplement de voir si ça peut fonctionner.)

L'appel de la fonction tel que \part "Doxy" "AltoI" produit l'erreur suivante :

.../include/LilyJAZZwithBarNums.ily:62:1: error: syntax error, unexpected SCM_TOKEN, expecting end of input


#(define jazz-map '(

/tmp/frescobaldi-1mgd5_wr/tmpys2kq_gz/March2022_parts_alto1.ly:13:1: error: error in #{ ... #}


\part "Doxy" "AltoI"


Le message dit que l'erreur est dans LilyJAZZwithBarNums.ily, mais comme ça marche en dehors d'une fonction, je ne pense pas que le fichier soit en cause.


Y a-t-il un moyen d'obtenir le résultat souhaité ? Et accessoirement, y a-t-il un moyen de lire une variable lilypond dans un autre fichier sans faire un \include du fichier complet ? (L'include du fichier complet produit parfois des effets indésirables si une variable est manquante dans un fichier, car la valeur utilisée par le \include précédent est alors toujours en cours. Il y a également des problèmes avec l'incrémentation de taille de polices qui deviennent cumulative. Il y a visiblement un problème de "scope", les variables importées par \include semblant globales, mais pouvant être redéfinies par le \include suivant.)


Merci pour toute suggestion qui me permettrait d'avancer dans ce projet.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]