|
From: | Pierre Perol-Schneider |
Subject: | Re: Dégroupement de durées |
Date: | Wed, 4 Mar 2015 21:27:57 +0100 |
Le mercredi 4 mars 2015 10:23:00, vous avez écrit :
> Je me suis un peu penché sur le sujet il y a deux jours et je n'ai rien
> trouvé de magique.
> Désolé,
2) $x }, est-ce dû à ma version 2.16.2 ?Merci qd mm d'avoir pris le tps de chercher. J'ai eu une autre réponse en
privé de Nicolas, mais je remet sur la liste.
************************
\version « 2.18.2 »
degroupement =
#(define-music-function
(parser location dur mus)
(number? ly:music?)
(music-map
(lambda (x)
(let (
(dd (ly:music-property x 'duration))
(pp (ly:music-property x 'pitch'))
)
(set! (ly:music-property x 'duration)
(ly:make-duration (log2 dur) 0 1))
#{
\unfoldRepeats { \repeat
tremolo #(/ dur 2) $x }
#}
)
)
mus
)
)
\relative c' {
\degroupement 8 {c2 d4 e4}
}
************************
Il subsiste deux problèmes :
1)
A l’endroit \unfoldRepeats { \repeat tremolo #(/ dur 2) $x }
il faudrait remplacer le 2 par la durée de la note dans l’_expression_ musicale.
Pour \degroupement 8 {c2 d4 e4} c’est 2 puis 4 et encore 4.
Dans mon exemple cette durée est dans la variable dd. Malheureusement c’est
une varibale de type « duration » et je ne sais pas comment la convertir en «
number » pour pouvoir faire la division. Dans l’autre sens conversion "number"
-> « duration » j’ai fait
(ly:make-duration (log2 dur) 0 1)
2) Plus grave : le résultat n’est pas tout-à-fait le résultat escompté…
puisque l’ensemble de l’_expression_ musicale est lui-même répété un certain
nombre de fois.
Ma solution pour la durée :
- extraire les deux premiers chiffres de duration (avec un car ou cdr ou je ne
sais plus bien quelle syntaxe) - appelons le premier l et le second d ;
- exemples :
- une blanche (2) aura une "duration" égaale à (1 0 1), on calcule 2^1=2
et c'est la durée ;
- une ronde (1) aura une "duration" égaale à (0 0 1), on calcule 2^0=1 ;
- une noire (4) : (2 0 1) ->2^2=4.
On divise 8 par la durée et on a le nb de notes à écrire.
Et si j'ai des notes pointées (le nb de points est ce que j'ai nommé d) on
multiplie nbnotes par (2-1/(2^nbpoints)).
Ceci dit j'ai un message d'erreur sur \unfoldRepeats { \repeat tremolo #(/ dur
--
Cordialement, Daniel Cartron
« Les absents ont toujours tort de revenir. »
Jules Renard
_______________________________________________
lilypond-user mailing list
address@hidden
https://lists.gnu.org/mailman/listinfo/lilypond-user
[Prev in Thread] | Current Thread | [Next in Thread] |