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

Reply via email to