Subject: Variables numériques dans les markups

From: Philippe Neyrat <[email-masked]>
Date: Sun, 11 May 2014 12:04:44 +0200

Bonjour à tous,

Je me suis créé des variables numériques pour éviter d'avoir à tout 
retaper dans les markups en cas de modification :

#(define raise_diese 7 )
#(define hspace_diese 1 )

do_diese_text = \markup
{
   "do" \hspace #(/ hspace_diese 10) \raise #(/ raise_diese 10) \small 
\sharp
}

Mais je suis contraint de faire le calcul dans le markup.
Y'a-t-il une solution syntaxique pour éviter ça ?

J'ai essayé :

#(define raise_diese #(/ 7 10))
#(define raise_diese #(0.7))

et tout un tas d'autre écritures, dont certaines ne génèrent pas 
d'erreur, mais je ne parviens pas à les remplacer dans le markup
par un simple :

\raise_diese

comme le présente la doc.
Même en tentant des "#(...)" "#'(...)", etc.

Avez-vous une solution ?

Merci !

Philippe
-- 
Propulsé par l'Association Sud-Ouest.org
Plateforme Libre d'hébergement mail à prix libre
     https://www.sud-ouest.org

---

From: Pierre Perol-Schneider <[email-masked]>
Date: Sun, 11 May 2014 14:27:02 +0200

Le 11 mai 2014 12:04, Philippe Neyrat <[email-masked]> a écrit :

> et tout un tas d'autre écritures, dont certaines ne génèrent pas d'erreur,
> mais je ne parviens pas à les remplacer dans le markup
> par un simple :
>
> \raise_diese
>

Quelle doc  ?

> Même en tentant des "#(...)" "#'(...)", etc.

Je n'ai pas vraiment compris ce que tu recherches.
Est-ce quelque chose comme :

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\version "2.18.2"

#(define-markup-command (dieseText layout props texte espace hauteur)

   (markup? number? number?)

   "règle la position d'un dièse après un texte."

     (interpret-markup layout props

       #{\markup\concat { { #texte } \hspace #(/ espace 10) \raise #(/
hauteur 10) \small \sharp } #}))

{

   cis'^\markup\dieseText Do #7 #7

}

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

????

Cordialement,

Pierre

---

From: Philippe Neyrat <[email-masked]>
Date: Sun, 11 May 2014 14:48:17 +0200

> Quelle doc  ?

Je suis en version 2.16.2
http://lilypond.org/doc/v2.16/Documentation/extending/lilypond-variables

> Je n'ai pas vraiment compris ce que tu recherches.

Là, c'est moi qui ne comprends pas,
Je n'ai pas encore le mode de pensée "scheme"...
Et ce type d'écriture me demanderait de modifier chaque occurrence dès 
que je veux passer de 7 à 6 par exemple.

Je veux juste créer une "constante" et rappeler cette constante dans une 
expression.
Si pour une raison ou une autre (changement de police par exemple), je 
dois changer toutes les références de cette constante, je voudrais 
n'avoir à le faire que dans la déclaration de la "constante" (qui est en 
fait une variable).

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#(define raise_diese 7 )
#(define raise_bemol 4 )
#(define hspace_diese 1 )
#(define hspace_bemol 2 )

do_bemol_text = \markup  { "do"  \hspace #(/ hspace_bemol 10) \raise #(/ 
raise_bemol 10) \small \flat }
Do_bemol_text = \markup  { "Do"  \hspace #(/ hspace_bemol 10) \raise #(/ 
raise_bemol 10) \small \flat }
do_diese_text = \markup  { "do"  \hspace #(/ hspace_diese 10) \raise #(/ 
raise_diese 10) \small \sharp }
Do_diese_text = \markup  { "Do"  \hspace #(/ hspace_diese 10) \raise #(/ 
raise_diese 10) \small \sharp }
re_bemol_text = \markup  { "ré"  \hspace #(/ hspace_bemol 10) \raise #(/ 
raise_bemol 10) \small \flat }
Re_bemol_text = \markup  { "Ré"  \hspace #(/ hspace_bemol 10) \raise #(/ 
raise_bemol 10) \small \flat }
re_diese_text = \markup  { "ré"  \hspace #(/ hspace_diese 10) \raise #(/ 
raise_diese 10) \small \sharp }
Re_diese_text = \markup  { "Ré"  \hspace #(/ hspace_diese 10) \raise #(/ 
raise_diese 10) \small \sharp }
mi_bemol_text = \markup  { "mi"  \hspace #(/ hspace_bemol 10) \raise #(/ 
raise_bemol 10) \small \flat }
Mi_bemol_text = \markup  { "Mi"  \hspace #(/ hspace_bemol 10) \raise #(/ 
raise_bemol 10) \small \flat }
fa_diese_text = \markup  { "fa"  \hspace #(/ hspace_diese 10) \raise #(/ 
raise_diese 10) \small \sharp }
.... ETC....
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Par exemple.

Mais ce genre de structure pourrait me servir ailleurs.

Je trouve juste étrange qu'il y ait une solution en faisant le "calcul" 
dans le markup, mais pas en dehors.

Je voudrais pouvoir écrire un truc du genre :

#(define hspace_diese (/ 1 10) )

Re_diese_text = \markup  { "Ré" \hspace ??hspace_diese \raise 
??raise_diese \small \sharp }

Mais je n'ai pas trouvé la syntaxe simple qui remplacerait les ?? dans 
l'expression du markup.

Mais quand je fais le calcul (/ hspace 10) dans le markup, et que ça 
fonctionne, je me dis que ça doit être possible.

Devrais-je écrire hspace_diese, \hspace_diese, #hspace_diese, 
#'hspace_diese, etc., ou mettre des parenthèses ?

J'espère que c'est pas trop confus...

Merci en tous cas.

Philippe

---

From: Pierre Perol-Schneider <[email-masked]>
Date: Sun, 11 May 2014 14:55:24 +0200

> ??raise_diese \small \sharp }

Comme ça ?

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

#(define hspace_diese (/ 1 10))

#(define raise_diese (/ 7 10))

Re_diese_text = \markup { "Ré" \hspace #hspace_diese \raise #raise_diese
\small \sharp }

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

---

From: Philippe Neyrat <[email-masked]>
Date: Sun, 11 May 2014 15:08:26 +0200

Re !

> Comme ça ?

Ben voilà, exactement !

J'ai dû essayer toutes les écritures possibles, sauf celle-là.

Dans la doc, il est écrit qu'on peut appeler la variable par 
l'antislash, enfin, c'est ce que j'ai compris à la lecture de :

> La façon habituelle de faire référence à une variable LilyPond consiste
à la rappeler à l’aide d’une oblique inverse – autrement dit saisir 
\vingtQuatre.

Mais bon, ça marche.

Merci !

Philippe