|
From: | Martial R |
Subject: | Re: débuts difficiles avec scheme |
Date: | Sun, 4 Jul 2021 22:25:19 +0200 |
> Le 04/07/2021 13:06, CHARADE Olivier <olivier.charade@cnrs.fr> a écrit :
>
>
> Bonjour,
> Comme je m'y attendais, scheme était limpide tant que Jean en parlait; mais maintenant que je suis tout seul devant mon code tout simple, ça redevient mystérieux.
>
> Comme j'aime bien pouvoir compléter à la main une partition en cours d'écriture, je rajoute des portées vides à la fin des voix avant d'imprimer. Mais quand je dois présenter le travail à quelqu'un je dois les retirer.
> Je me suis dit qu'il serait plus facile d'avoir un booléen en début de programme pour choisir de les afficher ou non.
> Première tentative sur Lilybin (tiens d'ailleurs, je n'ai pas réussi à lancer le bac à sable sur Mac)
Il suffit a priori d'un
/Applications/LilyPond.app/Contents/Resources/bin/lilypond scheme-sandbox
(à lancer dans le Terminal).
Si cela ne fonctionne pas, quelle est l'erreur ?
> brouillon = ##t
> papierMusique = #( if ( brouillon ) ( “{ \omit Score.BarLine s1 *40 \undo \omit Score.BarLine }“)(““))
> notes = { c' d' e' d' }
> \score{
> {
> \notes \papierMusique
> }
> }
> Ca hurle ! Pourtant ça me paraissait clair 😊
Deux petits problèmes ici :
- Le parenthésage : (brouillon) est un appel
d'une fonction qui ne prend pas d'argument.
- La musique ne s'entre pas sous forme de chaîne
de caractères, mais en passant en syntaxe LilyPond
au milieu du code Scheme, avec #{ ... #}.
Donc :
\version "2.22.0"
brouillon = ##f
papierMusique =
#(if brouillon
#{
\omit Staff.BarLine
s1*40
\undo \omit Staff.BarLine
#})
notes = { c' d' e' d' }
{
\notes \papierMusique
}
(Notez qu'il n'y a même pas besoin de mettre quoi
que ce soit pour le cas où la condition est fausse :
le if s'évalue alors à *unspecified*, que LilyPond
ignore.)
La méthode des \tag que propose Martial fonctionne
très bien aussi.
> J'ai trouvé l'astuce de la fonction pour que ça ne hurle plus (mais pourquoi?)
Car une fonction Scheme ne peut pas être exécutée directement
comme fonction musicale. Donc, la fonction n'est même pas
exécutée car les fonctions Scheme ne sont pas parmi les types
reconnus par l'analyseur syntaxique. Pour définir de nouvelles fonctions musicales que l'on peut appeler avec le \, voir
https://lilypond.org/doc/v2.23/Documentation/notation/substitution-function-syntax
> brouillon = ##t
> papierMusique = #( lambda(brouillon)(if ( brouillon ) ( “{ \omit Score.BarLine s1 *40 \undo \omit Score.BarLine }“)(““)))
> notes = { c' d' e' d' }
> \score{
> {
> \notes \papierMusique
> }
> }
> Mais je ne vois pas mon papierMusique. Il faut peut être que je trouve où se cache le backquote sur mon clavier?
>
> En tous cas ce café Lily m'a bien motivé (l'enregistrement n'est plus dispo, apparemment?)
En effet, le lien
https://visio.hypra.fr/playback/presentation/2.0/playback.html?meetingId=764fe2bf63e468b81136e4c5c26aa88a431bdcbc-1622900206284
est mort (mais
https://www.dropbox.com/s/1z2qfkrqf8q0e48/cafelily2021%20on%202021-06-05%2013-35.mp4?dl=0
pour la première partie fonctionne toujours).
Cela dit, il a peut-être été purgé volontairement
après un certain temps vu la taille du fichier.
Valentin ?
Bien cordialement,
Jean
[Prev in Thread] | Current Thread | [Next in Thread] |