Je voudrais pouvoir saisir quelque chose comme
\truc 8 { do do do re | mi re mi re |}
Et interprété comme :
do8. do16 do8. re16 | mi8. re16 mi8. re16
Aïe !
rien n'est impossible en scheme
mais si je comprends certaines choses pour bidouiller
je ne sais pas encore comment faire ça.
···
--
Martial
Je voudrais pouvoir saisir quelque chose comme
\truc 8 { do do do re | mi re mi re |}
Et interprété comme :
do8. do16 do8. re16 | mi8. re16 mi8. re16
Ceci a l'air de marché :
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\version "2.11.37" %%devrait marcher aussi pour la 2.10
#(define isOdd #f)
#(define (transformEachNote music)
( let ((dur (ly:music-property music 'duration)))
(if (ly:duration? dur)
(begin
(if isOdd
(set! (ly:music-property music 'duration) (ly:make-duration 3 1 1 1)) %% croche pointée
(set! (ly:music-property music 'duration) (ly:make-duration 4 0 1 1)) %% double
)
(set! isOdd (not isOdd))
))
music
))
MakeChrochePointeDouble = #(define-music-function (parser location m) (ly:music?)
(begin
(set! isOdd #t)
(music-map (lambda (x) (transformEachNote x)) m)
))
%%%%%%%%%%%%%
{ \new Staff \relative{
\MakeChrochePointeDouble {c d e f g f e d}
c1
}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Ceci a l'air de marché :
Bon ben, il y a l'ortographe qui ne marche pas trop par contre chez moi 
Gilles
Cette version fonctionne aussi pour les accords ...
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\version "2.11.37" %%devrait marcher aussi pour la 2.10
#(define isOdd #f)
#(define (transformEachNote chordElt)
( let ((dur (ly:music-property chordElt 'duration)))
(if (ly:duration? dur)
(if isOdd
(set! (ly:music-property chordElt 'duration) (ly:make-duration 3 1 1 1)) ;; croche pointée
(set! (ly:music-property chordElt 'duration) (ly:make-duration 4 0 1 1)) ;; double
)
)
chordElt
))
#(define (getChords musicElt)
(begin
(if (eq? 'EventChord (ly:music-property musicElt 'name))
(begin
(map transformEachNote (ly:music-property musicElt 'elements))
(set! isOdd (not isOdd))
)
)
musicElt
))
MakeChrochePointeDouble = #(define-music-function (parser location m) (ly:music?)
(begin
(set! isOdd #t)
(music-map getChords m)
))
%%%%%%%%%%%%%%
{ \new Staff \relative{
\MakeChrochePointeDouble {c d e f g f e d <c e> <d f> <e g> <d f> }
<c e>2
}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Génial, c'est exactement ce qu'il me fallait !
Merci beaucoup.
J'ai d'ailleurs une question qui n'a presque rien à voir.
Bien entendu si l'on veut faire du double-pointée-triple, il suffit de remplacer le 3 par un 4 et le 4 par un 5. C'est élémentaire. Mais, pour quelle raison la notation des durées change-t-elle ? Pourquoi 3 au lieu de 8, 4 au lieu de 16. Bien sûr 8=2^3, 16=2^4, etc. Mais il y a comme un manque d'uniformité, non ?
(set! (ly:music-property chordElt 'duration) (ly:make-duration 3 1 1 1))
;; croche pointée
(set! (ly:music-property chordElt 'duration) (ly:make-duration 4 0 1 1))
;; double
···
--
Nicolas.
P.S. : pour info, où as tu trouvé ce code ? Sur le LSR ? C'est un truc perso ? Encore merci en tout cas. Et effectivement ça fonctionne avec 2.10.x
Ha oui merci
Je ne sais pas si cela me serviras tout de suite , mais je le range dans mes tiroirs "utile.ly"
···
--
Martial
Ça m'évoque http://lsr.dsi.unimi.it/LSR/Item?id=302
Gilles, as-tu changé certains trucs ? Peux-tu poster ta version sur le LSR ?
Cordialement,
Valentin
···
Le 14/02/08, Nicolas Klutchnikoff<****@****> a écrit :
P.S. : pour info, où as tu trouvé ce code ? Sur le LSR ? C'est un truc perso
? Encore merci en tout cas. Et effectivement ça fonctionne avec 2.10.x
Gilles, as-tu changé certains trucs ? Peux-tu poster ta version sur le LSR ?
J'aurai bien voulu rendre la chose beaucoup plus modulable et extensible mais pour le moment je laisse comme ça :
http://lsr.dsi.unimi.it/LSR/Item?u=1&id=386
Gilles
Très bien et merci beaucoup. Je l'ai validé -- après avoir ajouté
quelques "h" à "rhythm" 
Cordialement,
Valentin
···
2008/2/14, Gilles THIBAULT <****@****>:
J'aurai bien voulu rendre la chose beaucoup plus modulable et extensible
mais pour le moment je laisse comme ça :
J'aurai bien voulu rendre la chose beaucoup plus modulable et extensible
mais pour le moment je laisse comme ça :
Ben en fait, j'ai trouvé plus rapidement que prévu une solution.
Ci-joint un fichier "rhythm.ly" (contenant les fonctions schèmes) et un fichier "test.ly" (avec un \include du fichier précédent).Ils sont à mettre dans un même répertoire.
On utilise ici une fonction \makeRhythm.
Dans l'exemple des croches pointées double qui nous occupaient, la syntaxe serait
\makeRhythm music "8. 16"
Si on veut éviter d'avoir à écrire le 2ème paramètre il suffit de se créer une fonction très simple genre:
makeCrochePointeeDouble = #(define-music-function (parser location music) (ly:music?)
#{
\makeRhythm $music "8. 16"
#})
Et la syntaxe devient alors
\makeCrochePointeeDouble music.
On peut mettre, à la place de "8. 16", le rythme que l'on veut en séparant chaque valeur par un espace.
(Dans le test, il y a "8 16 16" , "4 8 8. 16 8" par exemple).
Merci de tester un peu cette fonction pour voir si je peux éventuellement mettre à jour le LSR
Gilles
rhythm.ly (1.94 KB)
test.ly (819 Bytes)
Bonjour,
Alors là Bravo !
Et Merci
je vais utiliser tout de suite sur un morceau avec ritournelle rythmique
Merci de tester un peu cette fonction pour voir si je peux éventuellement mettre à jour le LSR
1er essai impécable
\makeRhythm $music "4 8 8 4 8 8 4 8 8 4 8 8 4 8 8 4 8 8 8 8 8 8 8 8 4"
Attention cependant :
il faut séparer les temps par un espace un et un seul
sinon :
rhythm.ly:38:22: Wrong type argument in position 1(expecting number): #f
···
--
Martial
Pas de problème, fonce (et n'oublie pas le tag "correction-wanted").
Cordialement,
Valentin
···
Le 17/02/08, Gilles THIBAULT<****@****> a écrit :
Merci de tester un peu cette fonction pour voir si je peux éventuellement
mettre à jour le LSR
Attention cependant :
il faut séparer les temps par un espace un et un seul
Effectivement.
J'ai apporté les corrections necessaires (voir fichier ci-joint).
Les espaces en trop, au début, en fin, et entre les nombres ne devraient
plus créer de problèmes :
\makeRhythm music " 8. 16 "
fonctionne.
Gilles
rhythm.ly (2.21 KB)
Pas de problème, fonce (et n'oublie pas le tag "correction-wanted").
Euh je ne peux plus modifier le snippet ( http://lsr.dsi.unimi.it/LSR/Item?u=1&id=386 ).
Il est en lecture seule ...
Gilles
Oui ; il faut poster un nouveau snippet, et le tagger comme
"correction". Ou bien tu peux ajouter "[correction]" dans le titre.
Valentin
···
2008/2/17, Gilles THIBAULT <****@****>:
Euh je ne peux plus modifier le snippet (
Il est en lecture seule ...
Oui ; il faut poster un nouveau snippet, et le tagger comme
"correction". Ou bien tu peux ajouter "[correction]" dans le titre.
Bon j'ai créer un nouveau snippet :
http://lsr.dsi.unimi.it/LSR/Snippet?id=390
L'autre ( http://lsr.dsi.unimi.it/LSR/Item?u=1&id=386 ) est obsolète.
J'ai essayer de m'appliquer pour bien m'exprimer, mais la langue de Shakespeare ne m'est pas trop naturelle.
J'ai mis quelques commentaires dans le code aussi, si tu peux verifier ...
Bonne fin de Week-end à tous.
Gilles
Bonsoir,
Je viens de faire quelques tests et tout à l'air de très bien fonctionner.
Joli travail ! C'est vraiment un outil que je vais utiliser très régulièrement je crois... si, à l'usage, je trouve un petit bug j'envoie un email sur la liste.
Nicolas.
Oui ; il faut poster un nouveau snippet, et le tagger comme
"correction". Ou bien tu peux ajouter "[correction]" dans le titre.
Bon j'ai créé un nouveau snippet :
http://lsr.dsi.unimi.it/LSR/Snippet?id=390
J'ai vraiment du mal: la veritable adresse c'est
http://lsr.dsi.unimi.it/LSR/Item?u=1&id=390

Gilles
Pas grave ; le nombre suffisait 
Merci beaucoup ; c'est en effet beaucoup plus pédagogique.
Cordialement,
Valentin
···
2008/2/17, Gilles THIBAULT <****@****>:
J'ai vraiment du mal: la veritable adresse c'est
http://lsr.dsi.unimi.it/LSR/Item?u=1&id=390