Subject: Re: sheme - ajouter des éléments à une alist

From: Daniel Cartron <[email-masked]>
Date: Sat, 02 May 2015 11:45:22 +0200

Le mercredi 29 avril 2015, 07:01:06 PharoahS a écrit :
> Je ne suggere pas de réécrire des langages persos mais de récupérer ceux de
> lilypond un par un pae une série de défine
> comme dans ma premiere réponse ou par une boucle. puis au moment ou tu
> recuperes le langage qui t'intéresse tu fais un append avec fisarmonica sur
> ce que tu ass récupéré (pas sur la variable gobale de Lilyipond.
> Quand tu as ainsi tout récupéré dans mylist tu peux faire (set! lilypondlist
> mylis)
> Je ne sais pas si c'est aisé dans ce cas précis.

Et surtout je ne sais pas si lilypond ira chercher les noms de notes au bon 
endroit...

Je continue mes tests, et ce matin j'ai fait ça :

(define maliste
  `(
    (langb . (
		   ("b" . "b")
		   ))
    (langc . (
		   ("c" . "c")
		   ))
))

ça c'est facile et ça marche et j'ai maliste qui est égale à 
((langb ("b" . "b")) (langc ("c" . "c")))

Ensuite je me dis qu'un for-each ou map ça ferait peut-petre le boulot...

(for-each 
  (lambda (x)
    (set! x
      (append x
        (list
          `("a" . "a" )
        )
      )
    )
  )
  maliste
)

ne provoque pas d'erreur mais maliste est inchangée (ou bien les changements 
ne sont pas mémorisés ?)

  (map 
  (lambda (x)
    (set! x
      (append x
        (list
          `("a" . "a" )
        )
      )
    )
  )
  maliste
)

me renvoit :
(#<unspecified> #<unspecified>)

Erreur de syntaxe ?

Merci

-- 
Cordialement, Daniel Cartron
« Le beau moment d'une dette, c'est quand on la paie.  »
Proverbe russe

---

From: Daniel Cartron <[email-masked]>
Date: Fri, 15 May 2015 16:28:56 +0200

Je me permet aussi de faire remonter ça, encore un des rares trucs qui me 
manquent (pour l'instant ;-) )

(define-public language-pitch-names
  `(
    (nederlands . ( 
.../...

je voudrais ajouter deux notes au langage courant, ou à tous les langages si 
on ne peut pas déterminer lequel est le courant.

J'arrive pas à trouver comment ajouter ça.

-- 
Cordialement, Daniel Cartron
« Les femmes nous donnent leurs corps en croyant que cela devrait nous suffire, 
alors que justement cela pourrait nous suffire. »
Sacha Guitry

---

From: PharoahS <[email-masked]>
Date: Sun, 17 May 2015 02:28:49 -0700 (MST)

De retour de vacances je reviens sur la question.
Je vais rester dans guile qui me semble plus facile pour les tests.

Partons de 
                   (ceses . (1 2 3))
                   (ceh . (4 5 6))
                   (ces . (7 8 9))                   
                   ))
    (catalan . (
                (dobb . (10 11 12))
                (dob . (13 14 15))
                (do . (16 17 18))
                 ))))

et
(define fisarmonica 
 '( (i . (8 0 0)) (o . (8 0 1))))

Le plus simple est d'ajouter fisarmonica à tous les languages avec la
fonction map.
pour voir d'abord si çà marche sur le premier (hollandais) je fais
(define x (car language-pitch-names))
puis
(append (list (car x)) (append (cdr x) fisarmonica))
Si çà correspond à ce que tu veux tu fais un map:
(map 
 (lambda (x) (append (list (car x)) (append (cdr x)      fisarmonica)))
 language-pitch-names)
En fait ceci donne simplement une copie de ce qu'on veut pour remplacer
language-pitch-names il faut le redefinir:
(define language-pitch-names
   (map 
     (lambda (x) (append (list (car x)) (append (cdr x)      fisarmonica)))
     language-pitch-names))

En résumé ce qu'il faut écrire dans lilypond c'est le define fisarmonica
comme plus haut et cette redefinition de language-pitch-names avec le map.

J'espere que çà te conviendra.
Cordialement

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/sheme-ajouter-des-elements-a-une-alist-tp7582834p7583002.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

---

From: Daniel Cartron <[email-masked]>
Date: Sun, 17 May 2015 12:03:47 +0200

> comme plus haut et cette redefinition de language-pitch-names avec le map.

NIckel ! Je n'ai testé que dans guile moi aussi mais c'est exactement ça,donc 
j'avais bien vu quand je me disais que map était une possible solution. Mais 
je maitrise encore très mal.

Bon cet aprèm je met ça dans le code principal et je vois ce que ça donne.

Mais amha encore un point de fixé. Il me reste mes pbs d'alignement de markup 
et la gestion des accords. Ça dégage, ça dégage, comme disait Georges 
Descrières dans De doux dingues (mais c'était en 72, je ne sais pas si ça va 
parler à qqun ;-) )

-- 
Cordialement, Daniel Cartron
« Si l'Administration militaire faisait correctement son travail, il n'y 
aurait pas de Soldat inconnu. »
François Cavanna - Le saviez-vous ?

---

From: Daniel Cartron <[email-masked]>
Date: Sun, 17 May 2015 12:13:29 +0200

> En résumé ce qu'il faut écrire dans lilypond c'est le define fisarmonica

À ce propos, je me disais que ce serait pas mal de permettre de définir ça 
comme ça :
(define manote1 "i")
(define manote2 "o")

et d'adapter 
(define fisarmonica 
 '( (i . (8 0 0)) (o . (8 0 1))))
en ramplaçant les i et o par la valeur de manote1, mais je ne sais pas si ça 
marcherait. Parce que ce serait parfaitement versatile et bien plus puissant.

-- 
Cordialement, Daniel Cartron
« Perdre l'un de ses parents peut être regardé comme un malheur. Perdre les 
deux ressemble à de la négligence. »
Oscar Wilde - Il importe d'être constant

---

From: Daniel Cartron <[email-masked]>
Date: Sun, 17 May 2015 16:55:50 +0200

> J'espere que çà te conviendra.

À moi oui mais pas à la lily :-(

Dans quite tout marche mais pas dans lily. Pourtant j'ai mis ça en toute 
première ligne de mon code, mais non. 

Et je pense avoir trouvé mais il nous faudra un gourou du code pour 
dépatouiller ça.

Ton append marche bien mais c'est le contenu de fisarminica qui va pas. 

si je liste mon pseudo fichier que j'utilise dans le bac à sable guile, j'ai 
des trucs genre 
language-pitch-names
((nederlands (ceses . #<Pitch ceses >)

Si je liste fisarmonica j'ai
((o unquote (ly:make-pitch 8 0 DOUBLE-SHARP)) (i unquote (ly:make-pitch 8 0 
DOUBLE-FLAT)))

Il y a donc qq part qq chose qui transforme (ceses . ,(ly:make-pitch -1 0 
DOUBLE-FLAT))  en  (ceses . #<Pitch ceses > et je trouve pas comment faire ça. 
J'ai fait plusieurs essais et rien à faire il y a une primitive derrière que 
je ne sais pas utiliser :-(

Je ne sais si c'est ça la bonne piste mais c'est rageant je pensais qu'on y 
était arrivé...

-- 
Cordialement, Daniel Cartron
« Un seul être vous manque et tout est dépeuplé.
  Moralité : Concentrique! »
Boris Vian

---

From: Daniel Cartron <[email-masked]>
Date: Sun, 17 May 2015 17:03:36 +0200

Le dimanche 17 mai 2015, 16:55:50 Daniel Cartron a écrit :
> si je liste mon pseudo fichier

Si ça peut servir

(define-public language-pitch-names
  `(
    (nederlands . (
       (ceses . ,(ly:make-pitch -1 0 DOUBLE-FLAT))
       (c . ,(ly:make-pitch -1 0 NATURAL))
       ))

    (catalan . (
    (dobb . ,(ly:make-pitch -1 0 DOUBLE-FLAT))
    (do . ,(ly:make-pitch -1 0 NATURAL))
    ))

    (italiano . (
     (dobb . ,(ly:make-pitch -1 0 DOUBLE-FLAT))
     (do . ,(ly:make-pitch -1 0 NATURAL))
     ))
))

-- 
Cordialement, Daniel Cartron
« Le seul tourment qu'on ne puisse pas oublier en se livrant à la boisson, 
c'est l'envie de pisser. »
François Cavanna - Le saviez-vous ?

---

From: Daniel Cartron <[email-masked]>
Date: Sun, 17 May 2015 17:15:36 +0200

Si ça se trouve c'est encore plus simplissime que je pensais, mais j'ai pas 
fini de tester

(define toto (ly:make-pitch 8 0 1))

donne #<Pitch cisis''''''''' >

ce que je veux ajouter donc à suivre...

-- 
Cordialement, Daniel Cartron
«  Crever gros... crever maigre... La différence est pour les porteurs. »
Francis Blanche - Mon oursin et moi

---

From: PharoahS <[email-masked]>
Date: Mon, 18 May 2015 06:28:54 -0700 (MST)

J'essaie de voir comment tester le code scmeme dans lilypond
au début je mets
 #(define fisarmonica
  '(
    (i . ,(ly:make-pitch 8 0 DOUBLE-SHARP))   ; input note, ie a closing
note
    (o . ,(ly:make-pitch 8 0 DOUBLE-FLAT))    ; output note, ie a drawing
note
  ))
pas de probleme
ensuite je voudrais voir ce que contient fisarmonica. J'ai essayé
\displayMusic mais ma syntaxe ne marche pas
comment faites vous pour tester?

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/sheme-ajouter-des-elements-a-une-alist-tp7582834p7583019.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

---

From: Daniel Cartron <[email-masked]>
Date: Mon, 18 May 2015 16:04:42 +0200

> comment faites vous pour tester?

Je me sert du bac à sable de scheme:  lilypond scheme-sandbox

je rentre 
(define fisarmonica
  '(
fisarmonica
et ça me renvoie

guile> fisarmonica
((i unquote (ly:make-pitch 8 0 DOUBLE-SHARP)) note (o unquote (ly:make-pitch 8 
0 DOUBLE-FLAT)) note)

et on voit bien que c'est pas la mm chose que

guile> (define-public language-pitch-names
  `(
    (nederlands . (
       (ceses . ,(ly:make-pitch -1 0 DOUBLE-FLAT))
       (c . ,(ly:make-pitch -1 0 NATURAL))
       ))

    (catalan . (

    (italiano . (
     (dobb . ,(ly:make-pitch -1 0 DOUBLE-FLAT))
     (do . ,(ly:make-pitch -1 0 NATURAL))
     ))
))
guile> language-pitch-names
((nederlands (ceses . #<Pitch ceses >) (c . #<Pitch c >)) (catalan (dobb . 
#<Pitch ceses >) (do . #<Pitch c >)) (italiano (dobb . #<Pitch ceses >) (do . 
#<Pitch c >)))

-- 
Cordialement, Daniel Cartron
« Il n'y a point de génie sans un grain de folie. »
Aristote - Poétique

---

From: PharoahS <[email-masked]>
Date: Mon, 18 May 2015 11:46:43 -0700 (MST)

Si j'ai bien compris pour ce que tu appelles le bac a sable c'est guile pas
lilypond. je suis en mode commandes sous linux je peus aller sous guile ou
sous lilypond de facon independantes.
J'aimerais aller dans lilypond (et donc pas dans guile) y taper #(define
fisarmonica etc) puis de là voir ce que çà génenre en interne.
si je fais someNote = c' puis \displayMusic \someNote çà me donne dans le
terminal ce qu'a generé someNote
J'aimerais faire de meme avec fisarmonica et language-pitch-names
j'ai tent" \displayMusic \fisarmonica puis \displayMusic {#fisarmonica} et
d'autres trucs en vain.
Comment faire?

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/sheme-ajouter-des-elements-a-une-alist-tp7582834p7583022.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

---

From: PharoahS <[email-masked]>
Date: Tue, 19 May 2015 00:47:14 -0700 (MST)

J'ai vu comment on pouvait utiliser #(display ...) avec lilypond
dans le display de fisarmonica le undot vient du fait que m'on a ". ,"
(point puis vigule) si l'on retire la virgule on n'a plus undotted.
L'autre différence c'est que dans le display de language-pitch-names on a
des #pitch<... 

Dans ce lien 
http://denemo.org/~rshann/gub.bak/target/mingw/root/usr/share/lilypond/current/scm/define-note-names.scm
<http://denemo.org/~rshann/gub.bak/target/mingw/root/usr/share/lilypond/current/scm/define-note-names.scm>  
il n'y a pas de #pitch 
savez vous à quoi il correspond. En gros çà fait quoi #pitch?

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/sheme-ajouter-des-elements-a-une-alist-tp7582834p7583029.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

---

From: Daniel Cartron <[email-masked]>
Date: Tue, 19 May 2015 11:12:46 +0200

> L'autre différence c'est que dans le display de language-pitch-names on a

oui je voulais répodre à l'autre mail mais faire des tests avant et pas eu le 
tps.

> savez vous à quoi il correspond. En gros çà fait quoi #pitch?

le pitch c'est une liste de 3 valeurs : octave, note altération sous forme de 
chiffre. Le do de la 1ere ligne sup sous la portée c'est (0 0 0) et un fa diese 
(0 2 1/2) et c'est ensuite transformé en code de plus haut niveau (je pense 
qu'on appelle ça des primitives mais je ne suis pas spécialiste) par la 
fonction ly:make-pitch (qui curieusement prend en argument d'altérations un 
mot et non un nombre). Et le pb il est là, quand on code les nouvelles notes 
comme dans define-note-names.scm si on les colle à la suite des autres notes ça 
passe très bien c'est comme ça que j'ai fait mais ça impose aux utilisateurs 
d'aller tripoter un fichier système, et en plus c'est écrasé à chaque mise à 
jour.

J'ai bien essayé 
(define fisarmonica
  '(
    ; notes for the tabmode
    (o . #<Pitch cisis''''''''' >)  
    (i . #<Pitch ceses''''''''' >) 
  ))

mais j'ai plein d'erreurs, j'ai aussi essayé un simple define mais si là j'ai 
pas d'erreurs le o et le i ne sont pas considérés comme des notes mais de 
simmples variables.

Bref je n'arrive à rien et c'est dommage, parce sinon tout marche bien...

-- 
Cordialement, Daniel Cartron
« On a beau avoir une santé de fer, on finit toujours par rouiller. »
Jacques Prévert

---

From: PharoahS <[email-masked]>
Date: Tue, 19 May 2015 20:50:57 -0700 (MST)

On m'a répondu sur le forum anglais qu'il de faut pas confondre quote et
backquote

essaie avec (fais un copier coller)
 #(define fisarmonica
     `((i . ,(ly:make-pitch 8 0 DOUBLE-SHARP))
      (o . ,(ly:make-pitch 8 0 DOUBLE-FLAT)))) 
#(define language-pitch-names
   (map
     (lambda (x) (append (list (car x)) (append (cdr x)      fisarmonica)))
     language-pitch-names)) 

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/sheme-ajouter-des-elements-a-une-alist-tp7582834p7583034.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

---

From: Daniel Cartron <[email-masked]>
Date: Wed, 20 May 2015 07:10:10 +0200

> On m'a répondu sur le forum anglais qu'il de faut pas confondre quote et

Ça ne marchait toujours pas dans lilypond alors que dans le bac à sable si.

Et j'ai eu une illumination ! :-)

C'est pas define qu'il faut mettre mais set! et maintenant ça roule ! Ouf !

Un immense merci pour le mal que tu t'es donné.

Encore un todo que je peux retirer de la liste.

-- 
Cordialement, Daniel Cartron
« Les absents ont toujours tort de revenir. »
Jules Renard

---

From: PharoahS <[email-masked]>
Date: Wed, 20 May 2015 01:30:12 -0700 (MST)

çà m'a permis d'apprendre plein de trucs en particulier comment tester dans
lilyponde avec #(display ...) et avec \displayMusic.
ici quand je fais
 #  (define fisarmonica
     `((i . ,(ly:make-pitch 8 0 DOUBLE-SHARP))
       (o . ,(ly:make-pitch 8 0 DOUBLE-FLAT)))) 
#(set! language-pitch-names
   (map
     (lambda (x) (append (list (car x)) (append (cdr x)      fisarmonica)))
     language-pitch-names)) 

\displayMusic { i }
j'ai un message d'erreur
Peux tu me faire un copier coller pour que çà marche.

Bon courage pour la suite

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/sheme-ajouter-des-elements-a-une-alist-tp7582834p7583036.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

---

From: Daniel Cartron <[email-masked]>
Date: Wed, 20 May 2015 10:47:56 +0200

> lilyponde avec #(display ...) et avec \displayMusic.

Moi aussi j'en ai appris des choses depuis que j'ai commencé...

> Peux tu me faire un copier coller pour que çà marche.

#(define fisarmonica ; notes for the tabmode
  `(
    (o . ,(ly:make-pitch 8 0 DOUBLE-SHARP)) ; input note, ie a blowing note
    (i . ,(ly:make-pitch 8 0 DOUBLE-FLAT))  ; output note, ie a drawing note
  )
)
#(set! language-pitch-names
   (map 
     (lambda (x) (append (list (car x)) (append (cdr x) fisarmonica)))
     language-pitch-names))

\language "nederlands"
{
   i4 o o \displayMusic o i
  i o
}

Le truc qu'il faut que je pense à mettre dans la doc c'est qu'il faut inclure 
un langage, y compris si c'est celui par défaut, pour que ça prenne en compte 
les ajouts. En tout cas c'est l'explication que je vois... Et ne me demande 
pas comment j'ai fait pour penser à essayer ça, à mettre sur le compte des 
intuitions fulgurantes :-)

-- 
Cordialement, Daniel Cartron
« Dans la guerre, le courage et l'impétuosité sont de bons serviteurs. Mais ce 
sont de mauvais maîtres... »
Bernard Shaw

---

From: PharoahS <[email-masked]>
Date: Wed, 20 May 2015 02:40:00 -0700 (MST)

Impeccable

Comme tu sembles amateur de citations, connais tu Nasr Eddin Hodja? il a
dit:
La lune est plus utile que le soleil. Elle éclaire quand il fait nuit. Le
soleil éclaire quand il fait déjà jour.

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/sheme-ajouter-des-elements-a-une-alist-tp7582834p7583039.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.