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

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

Re: débuts difficiles avec scheme


From: Jean Abou Samra
Subject: Re: débuts difficiles avec scheme
Date: Sun, 4 Jul 2021 16:26:15 +0200 (CEST)

> 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



reply via email to

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