Subject: nom des variables utilisant des chiffres ?

From: <[email-masked]>
Date: Fri, 8 Nov 2019 12:56:50 +0100

Bonjour,

Je ne parviens pas à retrouver une explication.

Je dois utiliser un nombre important de Tag dans une partition de direction,
utilisant \removeWithTag pour éviter l’impression de crescendo, decrescendo
, Sf ,FF etc définis dans le squelette de la partition.

J’aimerais pour le repérage facile dire par exemple \tag #’’sqel150 où 150
est le numéro de mesure.

Est-ce possible ? 

Merci de votre aide.

Daniel Bernair  

This email has been scanned by BullGuard antivirus protection.
For more info visit www.bullguard.com
<http://www.bullguard.com/tracking.aspx?affiliate=bullguard&buyaffiliate=smt
p&url=/>

---

From: Valentin Villenave <[email-masked]>
Date: Fri, 8 Nov 2019 14:47:25 +0100

> J’aimerais pour le repérage facile dire par exemple \tag #’’sqel150 où 150

Alors là ce sont des tags, et non des noms de variables. Oui, les
chiffres sont autorisés (par contre attention à la syntaxe : \tag
#'sqel150 avec une apostrophe).

> , Sf ,FF etc définis dans le squelette de la partition.

Il y a beaucoup plus simple ; voici la fonction que j’utilise ; elle
me permet d’enlever toutes les nuances sauf celles que j’ai tagguées
(ici avec le mot-clé 'ici) et celles pour lesquelles j’ai indiqué une
direction explicite (c’est-à-dire avec _\ff ou ^\ff plutôt que \ff
tout seul).

Il est également possible de procéder en sens inverse : garder toutes
les nuances sauf celles préselectionnées (il suffit d’enlever le "not"
dans le code, avec la parenthèse correspondante).

%%%%%%%%%%

#(define (dynamic? x)
   (let ((name (ly:music-property x 'name)))
     (or
      (eq? name 'DynamicEvent)
      (eq? name 'AbsoluteDynamicEvent)
      (eq? name 'CrescendoEvent)
      (eq? name 'DecrescendoEvent)
      (eq? name 'SpanDynamicEvent))))

enleverNuances =
#(define-music-function (m) (ly:music?)
   (music-filter
    (lambda (x)
      (let ((tags (ly:music-property x 'tags))
            (dir (ly:music-property x 'direction)))
        (not (and
              (dynamic? x)
              (not (memq 'ici tags))
              (null? dir)))))
    m))

musique = { c'1\< c'\f c'_\pp c'\fff c' \tag #'ici \sfz }

{
  \enleverNuances \musique
}

%%%%%%%%%%%

V.

---

From: Pierre Perol-Schneider <[email-masked]>
Date: Fri, 8 Nov 2019 17:33:27 +0100

C'est malin ça, bravo Valentin.
En revanche, ça ne compile pas bien, peut-être :

musique = { c'1\< c'\f c'_\pp c'\fff c' -\tag ici \sfz }

?
Cordialement,
Pierre

Le ven. 8 nov. 2019 à 14:47, Valentin Villenave <[email-masked]> a

---

From: <[email-masked]>
Date: Fri, 8 Nov 2019 18:47:31 +0100

Merci Valentin, effectivement, cela facilite grandement le travail.  
Amicalement,
Daniel Bernair

-----Message d'origine-----
De : lilypond-user-fr <lilypond-user-fr-bounces+daniel.bernair=[email-masked]> De la part de Valentin Villenave
Envoyé : vendredi 8 novembre 2019 14:47
À : [email-masked]
Cc : [email-masked]
Objet : Re: nom des variables utilisant des chiffres ?

On 11/8/19, [email-masked] <[email-masked]> wrote:
> J’aimerais pour le repérage facile dire par exemple \tag #’’sqel150 où 
> 150 est le numéro de mesure.

Alors là ce sont des tags, et non des noms de variables. Oui, les chiffres sont autorisés (par contre attention à la syntaxe : \tag
#'sqel150 avec une apostrophe).

> Je dois utiliser un nombre important de Tag dans une partition de 
> direction, utilisant \removeWithTag pour éviter l’impression de 
> crescendo, decrescendo , Sf ,FF etc définis dans le squelette de la 
> partition.

Il y a beaucoup plus simple ; voici la fonction que j’utilise ; elle me permet d’enlever toutes les nuances sauf celles que j’ai tagguées (ici avec le mot-clé 'ici) et celles pour lesquelles j’ai indiqué une direction explicite (c’est-à-dire avec _\ff ou ^\ff plutôt que \ff tout seul).

Il est également possible de procéder en sens inverse : garder toutes les nuances sauf celles préselectionnées (il suffit d’enlever le "not"
dans le code, avec la parenthèse correspondante).

%%%%%%%%%%

#(define (dynamic? x)

enleverNuances =

{
  \enleverNuances \musique
}

%%%%%%%%%%%

V.

---

From: Valentin Villenave <[email-masked]>
Date: Fri, 8 Nov 2019 20:02:12 +0100

> En revanche, ça ne compile pas bien, peut-être :

Hello Pierre,
je ne comprends pas, chez moi les deux lignes compilent aussi bien :

%%%%%%%%%%%

\version "2.21.0"

#(define (dynamic? x)

enleverNuances =

musiquePPS = { c'1\< c'\f c'_\pp c'\fff c' -\tag ici \sfz }

{  \enleverNuances \musique }

{ \enleverNuances \musiquePPS }

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

D’ailleurs je ne connaissais pas cette syntaxe et je ne la comprends
pas très bien : \tag peut prendre un simple_string plutôt qu’un
scm_symbol maintenant ? Et ce tiret, à quoi sert-il ? J’ai d’abord cru
que c’était pour utiliser \tag comme un post-event mais un petit coup
de \displayMusic me montre qu’il ne s’applique qu’à l’événement qui
suit (AbsoluteDynamic) et non à la note qui le précède…

V.

---

From: Pierre Perol-Schneider <[email-masked]>
Date: Fri, 8 Nov 2019 21:30:18 +0100

Ah bah, c'est moi, j'étais en "2.19"...
Mes excuses. ;)

Le ven. 8 nov. 2019 à 20:02, Valentin Villenave <[email-masked]> a

---

From: Pierre Perol-Schneider <[email-masked]>
Date: Sat, 9 Nov 2019 08:26:09 +0100

> suit (AbsoluteDynamic) et non à la note qui le précède…

Je pense que j'ai retrouvé le post -- de Simon -- qui m'a renseigné sur
cette syntaxe:
http://lilypond.1069038.n5.nabble.com/tags-on-tweaks-td163367.html#a163368

Amicalement,
Pierre

---

From: <[email-masked]>
Date: Sun, 10 Nov 2019 11:11:21 +0100

Bonjour Valentin,
Contrairement à ce que j'ai compris ta fonction ne s'exécute pas bien. 
Voici ta fonction adaptée : 
%{
voici la fonction que j’utilise ; elle me permet d’enlever toutes les nuances 
sauf celles que j’ai tagguées (ici avec le mot-clé 'ici) et celles pour lesquelles 
j’ai indiqué une direction explicite (c’est-à-dire avec _\ff ou ^\ff plutôt que \ff tout seul).
Il est également possible de procéder en sens inverse :
garder toutes les nuances sauf celles préselectionnées (il suffit d’enlever le "not"
dans le code, avec la parenthèse correspondante).

%}

#(define (dynamic? x)

garderNuances =
#(define-music-function (m) (ly:music?)
   (music-filter
    (lambda (x)
      (let ((tags (ly:music-property x 'tags))
            (dir (ly:music-property x 'direction)))
        (not (and
              (dynamic? x)
              (not (memq 'garder tags))
              (null? dir)))))
    m))

enleverNuances =
               (memq 'garder tags)
              (null? dir)))))
    m))
%{ exécution : 
{
  \enleverNuances \musique
}
{
  \garderNuances \musique
}

Et voici le code utilisé 
scoreAPiccoloPart = \new Staff \with {
  instrumentName = "Pic."
  shortInstrumentName = "Pic."
  midiInstrument = "piccolo"
}
%{\removeWithTag #' (sqmenFA sqsigCrA sqsigCrB sqsigCrC sqsigCrD sqsigCrE sqsigCrF sqsigCrG sqsigCrH
                      sqsigCrJ sqsigCrK sqsigDcA sqsigDcB sqsigDcC sqsigDcD sqFFA sqFFB sqSFA sqSFB sqSFC
                      sqSFD sqSFE sqFsFA sqCreCA sqCreCB sqsempre)
%}
    <<  \scoreAPiccolo << \garderNuances \squelinst >> >> %%%%%%%% inorer nuances du squelette

J'ai essayé \garderNuances, \enleverNuances , placés avant le premier << , après le premier << , devant ScoreAPiccolo, après \scoreAPiccolo , \enleverNuances et \squelinst entre { } ou << >> rien à faire. Le nom des fonctions \enleverNuances et \garderNuances sont reconnus.
J'ai peut-être compris à l'enevers garder et enlever, mais rien à faire. 
Voici un extrait du squelette :
   \tag garder s2*7 \myBreakO %8 

  s2*7 \myBreakO %15 
  s2-\tag sqFFA _\ff
  s2*7 \myBreakO %23
  
  \repeat volta2 { 
  s2*5 \myBreakO %28 reprise mesures 23 à 42 
  s2*3 %31
  s2 %32
  s2*3 %35
  s2 \myBreakO  %36
  s2*3  %39
  s2*4 \myBreakO %43 ou 23 ? %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  }
  
%%% \set Score.skipTypesetting = ##f %% reprendre les lignes jusqu'au ##f 
  s2 %44
  s2*7 \myBreakO %51
  s2*8 \myBreakO %59
  s8-\tag sqmenFA -\tweak self-alignment-X #0.5 _\menoF s4. %60
  s2*3 %63
  s2 %64
%%%%%%%%%%%%%%%%%%%%%%%%%%
Merci de votre aide à Toi et Pierre
Daniel Bernair
-----Message d'origine-----
De : [email-masked] <[email-masked]> De la part de Valentin Villenave
Envoyé : vendredi 8 novembre 2019 20:02
À : Pierre Perol-Schneider <[email-masked]>
Cc : Daniel Bernair <[email-masked]>; lilypond-user-fr <[email-masked]>
Objet : Re: nom des variables utilisant des chiffres ?

Hello Pierre,

%%%%%%%%%%%

\version "2.21.0"

#(define (dynamic? x)

enleverNuances =

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

D’ailleurs je ne connaissais pas cette syntaxe et je ne la comprends pas très bien : \tag peut prendre un simple_string plutôt qu’un scm_symbol maintenant ? Et ce tiret, à quoi sert-il ? J’ai d’abord cru que c’était pour utiliser \tag comme un post-event mais un petit coup de \displayMusic me montre qu’il ne s’applique qu’à l’événement qui suit (AbsoluteDynamic) et non à la note qui le précède…

V.

---

From: Valentin Villenave <[email-masked]>
Date: Sun, 10 Nov 2019 12:22:09 +0100

On 11/10/19, [email-masked] <[email-masked]> wrote:
> J'ai essayé \garderNuances, \enleverNuances , placés avant le premier << ,
> après le premier << , devant ScoreAPiccolo, après \scoreAPiccolo ,
> \enleverNuances et \squelinst entre { } ou << >> rien à faire. Le nom des
> fonctions \enleverNuances et \garderNuances sont reconnus.

À ce stade il vaudrait peut-être mieux poster un fichier entier, ou en
tout cas un bout de code compilable. (Je trouve notamment étrange
d’avoir besoin d’utiliser autant de tags différents, il y a peut-être
moyen de faire plus simple.)

> J'ai peut-être compris à l'enevers garder et enlever, mais rien à faire.

À toutes fins utiles, voici comment je rédigerais la fonction garderNuances :

%%%%

#(define (dynamic? x)

garderNuances =

enleverNuances =

garderNuances =
              (or (memq 'ici tags)
                  (not (null? dir)))))))
    m))

{
  \enleverNuances \musique
}

{
  \garderNuances \musique
}

%%%%

V.

---

From: <[email-masked]>
Date: Mon, 11 Nov 2019 08:52:57 +0100

Merci par la réponse Valentin. Tous les tags (placés maintenant en commentaire pour le score) c'était avant d'avoir envoyé ma demande initiale. Cela fonctionne bien. J'ai ensuite reçu ta réponse que j'ai trouvée précieuse et voulu essayer. 
J'envoie tous mes fichiers sur votre adresse , pas au forum, cela ne passera jamais. 
Autre question : je reçois systématiquement deux fois vos réponses.
Bien amicalement, 
Daniel Bernair
-----Message d'origine-----
De : [email-masked] <[email-masked]> De la part de Valentin Villenave
Envoyé : dimanche 10 novembre 2019 12:22
À : [email-masked]
Cc : Pierre Perol-Schneider <[email-masked]>; lilypond-user-fr <[email-masked]>
Objet : Re: nom des variables utilisant des chiffres ?

On 11/10/19, [email-masked] <[email-masked]> wrote:
> J'ai essayé \garderNuances, \enleverNuances , placés avant le premier 
> << , après le premier << , devant ScoreAPiccolo, après \scoreAPiccolo 
> , \enleverNuances et \squelinst entre { } ou << >> rien à faire. Le 
> nom des fonctions \enleverNuances et \garderNuances sont reconnus.

À ce stade il vaudrait peut-être mieux poster un fichier entier, ou en tout cas un bout de code compilable. (Je trouve notamment étrange d’avoir besoin d’utiliser autant de tags différents, il y a peut-être moyen de faire plus simple.)

%%%%

#(define (dynamic? x)

garderNuances =

enleverNuances =

garderNuances =

{
  \enleverNuances \musique
}

{
  \garderNuances \musique
}

%%%%

V.

---

From: Valentin Villenave <[email-masked]>
Date: Mon, 11 Nov 2019 10:48:57 +0100

On 11/11/19, [email-masked] <[email-masked]> wrote:
> Voici l'ensemble de mes fichiers d'encodage. C'est loin d'être terminé. Le
> fichier maître est La-Fiancée-vendue_orch.ly

Bonjour,
bravo pour ce travail de copiste ; juste quelques commentaires mineurs :

- attention juste au début (mesure 6), vous avez un _sf auquel il
manque une barre oblique (_\sf).

- dans certaines fonctions vous utilisez encore l’ancienne syntaxe
#(define-music-function (parser location blablabla
alors qu’aujourd’hui on n’a plus besoin de "parser location" :
#(define-music-function (blablablabla

Ce qui suit peut intéresser toute la liste :

- je remarque que vous utilisez presque systématiquement la syntaxe
_\nuance au lieu de mettre \nuance toute seule ; non seulement cela
vous permettrait d’économiser un caractère mais cela offre aussi plus
de souplesse (par défaut toutes les nuances se placeront en-dessous
donc ça ne changera rien, mais cela vous permettra de changer tous les
placements de nuances en une seule fois avec \dynamicUp et
\dynamicDown).

- de surcroît, si vous avez besoin d’utiliser mes commandes de
nettoyage automatique des nuances, elles reposent précisément sur
cette astuce : les nuances indiquées tout simplement sont enlevées,
mais celles qui incluent une direction explicite (donc un signe _ ou
^) sont conservées ! Pas étonnant que ça ne marche pas dans votre
code, du coup…

- je remarque que vous avez défini beaucoup de nuances supplémentaires
en tant que markups. Si vous voulez pouvoir les utiliser directement
sans avoir besoin du caractère "_", il suffit d’ajouter celui ci dans
la définition :

fsF = _\markup \dynamic fsf

ce qui permet ensuite de faire

{ c' d' e'2\fsF }

… cependant, ce n’est pas idéal car ce ne seront toujours pas de
vraies nuances (et du coup elles seront ignorées par \enleverNuances
etc.). En fait, il y a une autre solution encore meilleure : utiliser
de _vraies_ nuances (dont on trafique le contenu), plutôt qu’un
markup. Voici le code que j’utilise pour cela :

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

#(define-public (char-punctuation? ch)
   (char-set-contains? char-set:punctuation ch))

#(define-public char-set:dynamics
   (char-set #\f #\m #\p #\r #\s #\z))

#(define-markup-command
  (dynamic-string layout props str) (string?)
  (let ((composite-chars (char-set-union
                          char-set:dynamics
                          char-set:whitespace
                          char-set:punctuation))
        (split (lambda (s) (string-index s #\sp )))
        (str-list '())
        (dyn-markup (lambda (s)
                       (make-dynamic-markup s)))
        (text-markup (lambda (s)
                        (make-normal-text-markup
                         (make-italic-markup s)))))
    (do ((current-str (string-append str " ")))
      ((not (split current-str)))
      (begin
       (set! str-list
             (append str-list
               (list
                (string-take current-str
                  (split current-str)))))
       (set! current-str
             (string-drop current-str
               (+ (split current-str) 1)))))
    (interpret-markup layout props
      (make-line-markup
       (map (lambda (word)
              (if (string-every composite-chars word)
                  (if (string-every char-set:dynamics word)
                      (dyn-markup word)
                      (let ((word-lst (string->list word)))
                        (make-concat-markup
                         (map
                          (lambda (ch)
                            (let ((print-ch (string ch)))
                              (if (char-punctuation? ch)
                                  (text-markup print-ch)
                                  (dyn-markup print-ch))))
                          word-lst))))
                  (text-markup word)))
         str-list)))))

nuance =
#(define-event-function (arg) (markup?)
   (let ((d (make-music 'AbsoluteDynamicEvent)))
     (ly:music-set-property! d 'text
       (cond
        ((string? arg)
         (if (string-every char-set:dynamics arg)
             arg
             (markup #:dynamic-string arg)))
        (else arg)))
     d))

%% Quelques exemples :

{ b1\nuance pp }
{ b1\nuance "pp sub." }
{ b1\nuance "più pp (ma non troppo)" }

%% On peut même y mettre des markups (mais
%% cela reste de vraies nuances) :
{ b1\nuance \markup { \hspace #-3 \normal-text \italic più pp} }

%% Ou même dans une variable :
moltoF = \nuance "molto f"
{b1\moltoF }

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

Donc si j’étais vous (faites une sauvagarde au préalable) :
- je remplacerais tous les _\quelquechose par \quelquechose
- je redéfinierais les nuances faites-maison en tant que vraies
nuances, pas que markups.

Bon courage !

V.

---

From: <[email-masked]>
Date: Mon, 11 Nov 2019 16:47:21 +0100

Merci Valentin pour votre réponse. Je vais examiner ces nouvelles fonctions et essayer de corriger ma partition proprement. 
Pour ces fonctions n'y connaissant rien en Scheme je n'y comprends rien. Donc je dois étudier Scheme. J'ai déjà commencé plusieurs fois mais j'ai dû abandonner pour plus urgent et ce n'est pas évident à comprendre même pour un ancien IBMer.
Bien amicalement,
Daniel Bernair       

-----Message d'origine-----
De : lilypond-user-fr <lilypond-user-fr-bounces+daniel.bernair=[email-masked]> De la part de Valentin Villenave
Envoyé : lundi 11 novembre 2019 10:49
À : [email-masked]
Cc : [email-masked]
Objet : Re: nom des variables utilisant des chiffres ?

On 11/11/19, [email-masked] <[email-masked]> wrote:
> Voici l'ensemble de mes fichiers d'encodage. C'est loin d'être 
> terminé. Le fichier maître est La-Fiancée-vendue_orch.ly

Bonjour,

- attention juste au début (mesure 6), vous avez un _sf auquel il manque une barre oblique (_\sf).

- dans certaines fonctions vous utilisez encore l’ancienne syntaxe #(define-music-function (parser location blablabla alors qu’aujourd’hui on n’a plus besoin de "parser location" :
#(define-music-function (blablablabla

- je remarque que vous utilisez presque systématiquement la syntaxe _\nuance au lieu de mettre \nuance toute seule ; non seulement cela vous permettrait d’économiser un caractère mais cela offre aussi plus de souplesse (par défaut toutes les nuances se placeront en-dessous donc ça ne changera rien, mais cela vous permettra de changer tous les placements de nuances en une seule fois avec \dynamicUp et \dynamicDown).

- de surcroît, si vous avez besoin d’utiliser mes commandes de nettoyage automatique des nuances, elles reposent précisément sur cette astuce : les nuances indiquées tout simplement sont enlevées, mais celles qui incluent une direction explicite (donc un signe _ ou
^) sont conservées ! Pas étonnant que ça ne marche pas dans votre code, du coup…

- je remarque que vous avez défini beaucoup de nuances supplémentaires en tant que markups. Si vous voulez pouvoir les utiliser directement sans avoir besoin du caractère "_", il suffit d’ajouter celui ci dans la définition :

{ c' d' e'2\fsF }

… cependant, ce n’est pas idéal car ce ne seront toujours pas de vraies nuances (et du coup elles seront ignorées par \enleverNuances etc.). En fait, il y a une autre solution encore meilleure : utiliser de _vraies_ nuances (dont on trafique le contenu), plutôt qu’un markup. Voici le code que j’utilise pour cela :

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

#(define-markup-command

nuance =

%% Quelques exemples :

{ b1\nuance pp }
{ b1\nuance "pp sub." }

%% On peut même y mettre des markups (mais %% cela reste de vraies nuances) :
{ b1\nuance \markup { \hspace #-3 \normal-text \italic più pp} }

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

Donc si j’étais vous (faites une sauvagarde au préalable) :
- je remplacerais tous les _\quelquechose par \quelquechose
- je redéfinierais les nuances faites-maison en tant que vraies nuances, pas que markups.

Bon courage !

V.

---

From: <[email-masked]>
Date: Wed, 13 Nov 2019 10:54:36 +0100

Bonjour Valentin,
J'ai une petite incompréhension avec la fonction enlever nuances et tags .
J'ai enlevé le "not"  dans la définition garderNuances que j'ai complétée
Dans la fonction que vous m'avez envoyée. 
#(define (dynamic? x)
   (let ((name (ly:music-property x 'name)))
     (or
      (eq? name 'DynamicEvent)
      (eq? name 'AbsoluteDynamicEvent)
      (eq? name 'CrescendoEvent)
      (eq? name 'DecrescendoEvent)
      (eq? name 'SpanDynamicEvent))))

enleverNuances =

garderNuances =
               (memq 'ici tags)
              (null? dir)))))
    m))

musique = { c'1\< c'\f c'_\pp c'\fff c' -\tag #'ici \sfz }

{
  \enleverNuances \musique
}
{
  \garderNuances \musique
}
Avec comme résultat voir le png joint. La fonction "garderNuances"( tout ce qui n'est pas marqué) garde quand même le _\pp de c'_\pp
Un paramètre fait défaut ? 
Amicalement,
Daniel Bernair

---

From: Valentin Villenave <[email-masked]>
Date: Wed, 13 Nov 2019 13:07:49 +0100

> J'ai enlevé le "not"  dans la définition garderNuances que j'ai complétée

C’est normal : vous n’avez enlevé que le "not" qui cherche le tag, pas
celui qui vérifie si la direction est indéfinie ("null?").

Tout dépend de ce que vous cherchez à obtenir. Le principe que
j’utilise pour enleverNuances est d’enlever toutes les nuances SAUF
celles qui ont une direction explicite OU un certain tag.

Du coup, dans enleverNuances, le "and" est en trois critères :
    (not ; objets à enlever :
        (and ; si toutes les conditions suivantes sont réunies
              (dynamic? x) ; c’est bien une nuance
              (not (memq 'ici tags)) ; elle n’a pas le tag
              (null? dir))) ; sa direction n’est pas définie

Alors certes, on pourrait faire le contraire exact dans garderNuances,
comme vous avez commencé à faire :
    (not ; objets à enlever :
        (and ; si toutes les conditions suivantes sont réunies
              (dynamic? x) ; c’est bien une nuance
              (memq 'ici tags) ; elle possède bien le tag
              (not (null? dir))))  ; sa direction n’est PAS indéfinie

Toutefois cela voudrait dire que pour qu’une nuance soit enlevée il
faudrait À LA FOIS qu’elle soit taggée et qu’elle ait une direction
explicite. Ce qui n’est pas très pratique.

Donc inversement, garderNuances va enlever les nuances seulement SI
elles ont SOIT une direction explicite SOIT un certain tag. En fait,
nous allons avoir besoin d’un "or" quelque part:
    (not ; objets à enlever :
        (and ; si toutes les conditions sont réunies
              (dynamic? x) ; c’est bien une nuance ET
              (or ; l’une ou l’autre des conditions suivantes :
                  (memq 'ici tags) ; soit elle a le tag
                  (not (null? dir))))) ; ou sa direction est définie

C’est un principe de logique booléenne, ou même tout simplement de
langage : si quelqu’un vous demande
-- "veux-tu des pommes et des poires?"
 et que vous lui répondez
-- "non merci",
votre réponse reste ambigüe ; il faudra lui indiquer plus spécifiquement
-- "je ne veux pas À LA FOIS des pommes ET des poires, l’un des deux me suffit",
ou
-- "je ne veux NI des pommes NI des poires".

Cordialement,
V. V.

---

From: <[email-masked]>
Date: Wed, 13 Nov 2019 16:54:07 +0100

Merci Valentin?
J'avais bien essayé de rajouter un or mais au mauvais endroit, ne comprenant pas les instructions.
De plus le premier "(not ; objets à enlever" me perturbait un peu comme quand je dois reculer en voiture avec une remorque où tout est à l'envers pour la direction à donner au volant.    
Maintenant j'ai ajouté "or" à la bonne place et "(not (null? dir))" .
Ok cela marche.
Décidément il faut que j'étudie Schème. 
Bien amicalement, 
Daniel Bernair

-----Message d'origine-----
De : lilypond-user-fr <lilypond-user-fr-bounces+daniel.bernair=[email-masked]> De la part de Valentin Villenave
Envoyé : mercredi 13 novembre 2019 13:08
À : [email-masked]
Cc : lilypond-user-fr <[email-masked]>
Objet : Re: nom des variables utilisant des chiffres ?

> J'ai enlevé le "not"  dans la définition garderNuances que j'ai 

C’est normal : vous n’avez enlevé que le "not" qui cherche le tag, pas celui qui vérifie si la direction est indéfinie ("null?").

Tout dépend de ce que vous cherchez à obtenir. Le principe que j’utilise pour enleverNuances est d’enlever toutes les nuances SAUF celles qui ont une direction explicite OU un certain tag.

Alors certes, on pourrait faire le contraire exact dans garderNuances, comme vous avez commencé à faire :

Toutefois cela voudrait dire que pour qu’une nuance soit enlevée il faudrait À LA FOIS qu’elle soit taggée et qu’elle ait une direction explicite. Ce qui n’est pas très pratique.

Donc inversement, garderNuances va enlever les nuances seulement SI elles ont SOIT une direction explicite SOIT un certain tag. En fait, nous allons avoir besoin d’un "or" quelque part:

C’est un principe de logique booléenne, ou même tout simplement de langage : si quelqu’un vous demande
-- "veux-tu des pommes et des poires?"
 et que vous lui répondez
-- "non merci",
votre réponse reste ambigüe ; il faudra lui indiquer plus spécifiquement
-- "je ne veux pas À LA FOIS des pommes ET des poires, l’un des deux me suffit", ou
-- "je ne veux NI des pommes NI des poires".

Cordialement,
V. V.