Désolé Daniel, je t'ai un peu oublié. Donc voilà : \version "2.16.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 } } Avec mention spécial à Nicolas qui a eu l'idée géniale d'utiliser le trémolo (j'avoue humblement ne pas y avoir du tout pensé). Cordialement, Pierre Le 4 mars 2015 10:36, Daniel Cartron <m...@cartron.xyz> a écrit : > 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 > > _______________________________________________ > lilypond-user mailing list > lilypond-user@gnu.org > https://lists.gnu.org/mailman/listinfo/lilypond-user >
_______________________________________________ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user