Subject: débuts difficiles avec scheme

From: CHARADE Olivier <[email-masked]>
Date: Sun, 4 Jul 2021 11:06:19 +0000

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)

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 😊

J'ai trouvé l'astuce de la fonction pour que ça ne hurle plus (mais pourquoi?)
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?)

Bon dimanche
Olivier

---

From: Martial R <[email-masked]>
Date: Sun, 4 Jul 2021 15:14:03 +0200

Bonjour,
perso, j'utiliserai un \tag #'lignevide

http://lilybin.com/hktryk/1

%%%%%%%%%%%%%%%%%%%%

music = \relative c' {
c1 c c c
\tag #'lignevide  { \break s1 s1 s1 s1 \break  }
}

\score {
 \removeWithTag #'lignevide
  \music
}

\score {
  \keepWithTag #'lignevide
  \music
}
%%%%%%%%%%%%%%%%%%%%%%%%

Le dim. 4 juil. 2021 à 13:06, CHARADE Olivier <[email-masked]> 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.
>
> papierMusique = #( lambda(brouillon)(if ( brouillon ) ( “{ \omit
> Score.BarLine s1 *40  \undo \omit Score.BarLine }“)(““)))
> notes = { c' d' e' d' }
> \score{
>     {
>         \notes \papierMusique
>     }
> }

-- 
Martial Rameaux

---

From: Jean Abou Samra <[email-masked]>
Date: Sun, 4 Jul 2021 16:26:15 +0200 (CEST)

> Le 04/07/2021 13:06, CHARADE Olivier <[email-masked]> a écrit :
> 
> 
> Bonjour,

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 ?

> 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

> 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

---

From: CHARADE Olivier <[email-masked]>
Date: Sun, 4 Jul 2021 15:44:52 +0000

Merci Martial.

Ca, c'est une page de la documentation que je me souviens avoir lue sans comprendre ce qu'on mexpliquait.

Maintenant que j'en ai la démonstration sur un problème qui me concerne, c'est immédiatement plus clair.

J'avoue que je préfère une solution où je peux faire la bascule en début de fichier, sans chercher où se trouve mon instruction \score. Je commence avec toutes mes voix sous forme de variables avant de les assembler dans un conducteur.

Cordialement,

Olivier

________________________________
De : Martial R <[email-masked]>
Envoyé : dimanche 4 juillet 2021 15:14:03
À : CHARADE Olivier
Cc : [email-masked]
Objet : Re: débuts difficiles avec scheme

Bonjour,

%%%%%%%%%%%%%%%%%%%%

music = \relative c' {
c1 c c c

\score {

\score {
  \keepWithTag #'lignevide
  \music
}
%%%%%%%%%%%%%%%%%%%%%%%%

Le dim. 4 juil. 2021 à 13:06, CHARADE Olivier <[email-masked]<mailto:[email-masked]>> a écrit :

Bonjour,

brouillon = ##t

Bon dimanche
Olivier

--
Martial Rameaux

---

From: CHARADE Olivier <[email-masked]>
Date: Sun, 4 Jul 2021 16:03:55 +0000

Merci Jean pour toutes ces réponses.

Pour le bac à sable, ça marche. Mais comment pouvais-je deviner un chemin pareil? Quand je cliquais sur l'application depuis le Finder, ça la lançait au lieu d'aller dans son répertoire. Suite à votre réponse, je viens de m'apercevoir qu'en cliquant droit il me proposait “afficher le contenu du paquet“, ce qui revient à descendre dans le répertoire. Je ne suis pas encore familier de ce système d'exploitation...

En sortant du cours de scheme, si je ne me souvenais que d'une chose, c’était de ne pas oublier les parenthèses. Je découvre qu'en mettre de trop est préjudiciable aussi. Et tout redevient limpide.

Quant à la page de documentation sur les fonctions de substitution, une de plus qui devient lisible pour moi.

Il faut que j'arrête de poster pour le WE, sous peine de dépasser mes capacités d'assimilation.

Cordialement,

Olivier

________________________________
De : Jean Abou Samra <[email-masked]>
Envoyé : dimanche 4 juillet 2021 16:26:15
À : CHARADE Olivier; [email-masked]
Cc : Valentin Villenave
Objet : Re: débuts difficiles avec scheme

Il suffit a priori d'un

Donc :

\version "2.22.0"

brouillon = ##f
papierMusique =
#(if brouillon
     #{
        \omit Staff.BarLine
        s1*40

notes = { c' d' e' d' }

{
  \notes \papierMusique
}

En effet, le lien

Bien cordialement,
Jean

---

From: Jean Abou Samra <[email-masked]>
Date: Sun, 4 Jul 2021 18:08:46 +0200 (CEST)

Le 04/07/2021 18:03, CHARADE Olivier <[email-masked]> a écrit :

[...]
Pour le bac à sable, ça marche. Mais comment pouvais-je deviner un chemin pareil?

Il y a quelques informations sur http://lilypond.org/macos-x.fr.html (je ne l'aurais pas deviné non plus !).

Cordialement,

Jean

---

From: Martial R <[email-masked]>
Date: Sun, 4 Jul 2021 22:25:19 +0200

Depuis le temps que je me disais faudrait que je regarde comment introduire
les conditions.
Oui vu pendant le café Lily mais  ... pfuit .... oublié...

Le dim. 4 juil. 2021 à 16:27, Jean Abou Samra <[email-masked]> a écrit :

> reconnus par l'analyseur syntaxique. Pour définir de nouvelles fonctions
> musicales que l'on peut appeler avec le \, voir
>
>
> > Mais je ne vois pas mon papierMusique. Il faut peut être que je trouve
> où se cache le backquote sur mon clavier?
> >

-- 
Martial Rameaux

---

From: Jean Abou Samra <[email-masked]>
Date: Mon, 5 Jul 2021 08:50:42 +0200 (CEST)

Le 04/07/2021 22:25, Martial R <[email-masked]> a écrit :

Depuis le temps que je me disais faudrait que je regarde comment introduire les conditions.

En attendant d'avoir pu la mettre au propre dans un tutoriel, je vous envoie la présentation sur laquelle je parlais, qui peut déjà servir pour raviver ses souvenirs.

Cordialement,

Jean