Quand
tu m'écris : "Toutes les fonctions de
pitch (sauf ly:make-pitch) commence par ly:pitch", en fait, j'aimerais
avoir la liste de ces fonctions de pitch, parce que
c'est pas évident à inventer!
Pour la version 2.13 je
sais pas.
Houlla, ça, ça veut dire que je trouverai jamais .... :'(
Il y a 3 petites erreurs, dont 1 d'étourderie
1-
Si tu fais :
\ajouteundegre \displayMusic c4
tu obtiens :
(make-music
'EventChord
'elements
(list (make-music
'NoteEvent
'duration
(ly:make-duration 2 0 1 1)
'pitch
(ly:make-pitch -1 0 0))))
Tu n'obtiens pas une note ( 'NoteEvent ), mais un 'EventChord. Donc l'extraction du pitch
est un peu moins direct
(voir ci-dessous )
ZE piège... je m'emmelle les pinceaux dans les niveaux... c'est le
but de mes exercices...
2- l'erreur d'étourderie :
Tu appelles p le (ly:music-property result-note 'pitch), puis dans les lignes suivantes tu
l'appelles pitch !
Et c'est parti pour 2 heures de flagellation avec nerf de boeuf
clouté... c'est le tarif à la maison !
:-P
3-
En scheme, dans une instruction let, chaque
"variable" doivent être indépendante les unes des autres. Si
tu veux utiliser le resultat d'une ligne1 dans la ligne 2, tu
dois utiliser let* à la place.
Ah ça aussi il va falloir que je creuse : les !, les *, et quand il
n'y a rien. J'ai survolé le tuto scheme de lily, donc punition !
Nerf de boeuf + 1 heure...
Donc ça donne un truc comme ça :
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
ajouteundegre =
#(define-music-function (parser location note)(ly:music?)
"augmente d'un degré une note en ajoutant 1 au
pitch-notename"
(let*
(
(result-chord (ly:music-deep-copy note))
(result-note (car (ly:music-property result-chord
'elements)))
(p (ly:music-property result-note 'pitch))
(o (ly:pitch-octave p))
(n (ly:pitch-octave p))
(a (ly:pitch-alteration p))
)
(set! p (ly:make-pitch o (+ 1 n) a))
(set! (ly:music-property result-note 'pitch) p)
result-note
)
)
\score{
\ajouteundegre c'4
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Bon courage.
Gilles
Champion du monde ! En plus j'ai bien tout compris ! 8-)
Merci pour tout, je viens de faire un grand pas
dans le monde souterrain de lilyScheme...
JMarc