Re: Dégroupement de durées

2015-03-04 Thread Daniel Cartron
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


Re: Dégroupement de durées

2015-03-04 Thread Pierre Perol-Schneider
Oups, spéciale.
Bravo encore Nicolas.

Pierre

Le 4 mars 2015 21:27, Pierre Perol-Schneider 
pierre.schneider.pa...@gmail.com a écrit :

 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


Re: Dégroupement de durées

2015-03-04 Thread Pierre Perol-Schneider
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


Re: Dégroupement de durées

2015-03-04 Thread Daniel Cartron
Le mercredi 4 mars 2015 21:27:57, vous avez écrit :
 Désolé Daniel, je t'ai un peu oublié.
 Donc voilà :
 
 \version 2.16.2

.../... 

 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é).

Oui mais il y a toujours les mêmes mais qu'avant :
- le c est dégroupé en 4 croches, comme le d et le e, alors que ça devrait 
être 4 2 2 ;
- le tout est répété 4 fois, ce n'est pas ça le résultat recherché.

En fait ce que je cherche à avoir est encore un peu plus compliqué, alors 
j'explique tout. En reprenant c1 d f2 g d e.

music = {
  \time 4/4
  c1 d f4 g d e
}

et \degroupement doit donner :

{
  c8 r c r c r c r
  d r d r d r d r 
  f r f r g r g r
  d r d r e r e r 
}

la durée de chaque note et silence est la moitié du dénominateur de time, et 
leur nombre dépend de la durée de la note écrite. Et ça doit marcher pour des 
durées pointées, et soyons fous, jusqu'à trois points, la formule est écrite, 
reste à la faire rentrer dans du scheme...

Et ça ne s'arrêtera pas là si j'y arrive, à terme ça devrait être :

  c,8^C r c gc ...

Bien du plaisir en vue, n'est-ce pas ?

-- 
Cordialement, Daniel Cartron
« Les dix meilleures années de la vie d'une femme? Entre vingt-cinq et vingt-
six ans. »
RIP

___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user