|
From: | Gilles THIBAULT |
Subject: | Re: Scheme : récupérer des valeurs de pro priété |
Date: | Thu, 23 Sep 2010 18:55:14 +0200 |
Pour la version 2.13 je sais
pas.
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 )
2- l'erreur d'étourderie :
Tu appelles p le (ly:music-property result-note 'pitch), puis dans les lignes suivantes tu l'appelles pitch !
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.
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
|
[Prev in Thread] | Current Thread | [Next in Thread] |