[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Dégroupement de durées
From: |
Daniel Cartron |
Subject: |
Re: Dégroupement de durées |
Date: |
Wed, 04 Mar 2015 10:36:38 +0100 |
User-agent: |
KMail/4.13.3 (Linux/3.13.0-46-generic; KDE/4.13.3; x86_64; ; ) |
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é,
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
2) $x }, est-ce dû à ma version 2.16.2 ?
--
Cordialement, Daniel Cartron
« Les absents ont toujours tort de revenir. »
Jules Renard
- Re: Dégroupement de durées,
Daniel Cartron <=