Bonjour!
J'utilise souvent arranger.ly, et j'ai aussi trouvé globalizeMusic.ly. Ce dernier permet d'appliquer la structure repeat volta trouvée dans \global à l'ensemble des musiques qui constituent l'arrangement. Toutes ces musiques réagissent alors à \unfoldRepeats, et c'est bien pratique pour générer du midi.
La dernière version de globalizeMusic.ly a une petite dizaine d'années et est écrite pour lilypond 2.16. Gilles T son auteur va peut-être lire ce mail?
Elle marche toujours bien pour des \repeat volta sans alternatives, mais elle ne produit pas le résultat attendu quand le \repeat en contient. Je joins un exemple!
Ca fait un bout de temps que je me suis fixé l'objectif de fouiner moi même mais j'avoue patauger dans les parentheses et j'ai pensé demandé de l'aide sur la liste 
À ce que j'en comprends, un des problèmes est déjà lié à la possibilité pour le bloc \alternative d'être à l'intérieur ou à l’extérieur du bloc \repeat. Cette dernière manière est la plus encouragée, globalizeMusic ne prend en compte que l'ancienne, mais échoue dans tous les cas. J'ai aussi tenté un convert-ly sur le code scheme, sans succès.
Ca serait super si globalizeMusic pouvait fonctionner avec les \repeat segno, fine et autres ajouts récents des "Long repeats"! Ou il y a peut être une autre manière que je ne connais pas d'arriver au même résultat?
A bientôt!
Raphael H
small-example.ly (660 Bytes)
Le 2023-10-13 13:59, Raphael HARDY a écrit :
Bonjour!
J'utilise souvent arranger.ly, et j'ai aussi trouvé globalizeMusic.ly.
Ce dernier permet d'appliquer la structure repeat volta trouvée dans
\global à l'ensemble des musiques qui constituent l'arrangement. Toutes
ces musiques réagissent alors à \unfoldRepeats, et c'est bien pratique
pour générer du midi.
La dernière version de globalizeMusic.ly a une petite dizaine d'années
et est écrite pour lilypond 2.16. Gilles T son auteur va peut-être lire
ce mail?
Hum, c'est vrai que je ne l'ai pas mis à jour depuis très longtemps.
Je suis un peu pris jusqu'à mi-novembre. Àprès j'essaierai de regarder.
Je ne maîtrise pas du tout encore les nouveautés de \repeat
--
Gilles
Merci ! J'ai remarqué que pas mal de choses ont été ajoutées.
En ce qui concerne les expressions, l'unique VoltaRepeatedMusic de la 2.16 a de nouveaux voisins: VoltaRepeatStartEvent, VoltaRepeatEndEvent VoltaSpanEvent VoltaSpeccedMusic, DalSegnoEvent, SegnoRepeatedMusic, SegnoMarkEvent, FineEvent j'en loupe peut être.
Et c'est aussi plus fourni au niveau des classes et des propriétés, bref j'espère que ce n'est pas une trop grande galère. C'est encore au dessus de ma compréhension de scheme et de Lilypond, je retourne au tutoriel de Jean que je scrolle parfois dans le train avant de me rendre compte que j'ai loupé mon arrêt
Bon weekend
Raphael
Bonjour à tous.
J'ai à nouveau mis à jour globalizelMusic.ly
Cette version prend en compte les \repeat volta
, les \repeat segno
, et même les \section
, \sectionlabel
et \fine
(qui influent d'après ce que j'ai constaté sur le texte des \repeat segno
).
En plus de la fonction \globalizeMusic
, il y a un certain nombre de fonctions plus basiques qui peuvent être utilisées :
\copySections
\copySegnoRepeats
\copyVoltaRepeats
\copyStructure
\deleteStructure
Toutes ces fonctions sont montrées en action dans le pdf suivant :
http://gillesth.free.fr/Lilypond/globalizeMusic/globalizeMusicTest.pdf
La nouvelle version de globalizeMusic.ly et le code source du pdf ci-dessus se trouvent dans le répertoire suivant :
Index of /Lilypond/globalizeMusic
Il vous faudra bien-sûr, comme pour les versions précédentes, le fichier extractMusic.ly qui se trouve dans ce répertoire :
Index of /Lilypond/extractMusic
Bonne réception et bonne journée à tous.
1 « J'aime »
Merci Gilles! Bien pratique le pdf explicatif et les fonctions simples. J'ai commencé à tester. Effectivement les mélanges de volta et segno fonctionnent, comme celui ci:
Mélange volta et segno
\version "2.25.7"
\include "arranger.ly"
\include "globalizeMusic.ly"
global = {
\repeat volta 2 {
s1 s1
}
\repeat segno 2 {
s1 s1
}
}
music = \relative c' { c1 d e f }
\score {
\new Staff << \global \music >>
}
\score {
\unfoldRepeats \globalizeMusic \new Staff \music
}
Par contre des volta consécutifs donnent un résultat inattendu:
Volta consécutifs
\version "2.25.7"
\include "arranger.ly"
\include "globalizeMusic.ly"
global = {
\repeat volta 2 {
s1 s1
}
\repeat volta 2 {
s1 s1
}
}
music = \relative c' { c1 d e f }
\score {
\new Staff << \global \music >>
}
\score {
\unfoldRepeats \globalizeMusic \new Staff \music
}
Et si je ne me trompe pas les imbrications comme ce Da capo semblent aussi esquiver des répétitions:
Da capo
\version "2.25.7"
\include "arranger.ly"
\include "globalizeMusic.ly"
global = {
\repeat segno 2 {
\repeat volta 2 {
s1 s1
}
s1 s1
}
}
music = \relative c' { c1 d e f }
\score {
\new Staff << \global \music >>
}
\score {
\unfoldRepeats \globalizeMusic \new Staff \music
}
J’espère que ce n'est pas une trop grande galère 
Merci de tes tests.
Je regarderai ça.
Bonne soirée
Bon. Il y a des fois où on se complique la vie.
J'essayais de copier la structure d'une musique source vers les notes d'une musique destination alors qu'il est beaucoup plus aisé de copier les notes de la musique destination vers les structures de la source !
Du coup, \globalizeMusic
devrait marcher maintenant avec n'importe quel \repeat volta
et segno
, y compris même pour des \repeat volta
imbriqués (non testé)...
Le code est aussi 2 fois moins lourd !
Tout se trouve dans ce répertoire !
Index of /Lilypond/globalizeMusic
NB
Les fonctions \copySections \copySegnoRepeats et \copyVoltaRepeats ont disparu dans cette nouvelle version. Seules \copyStructure
, \deleteStructure
, et \globalizeMusic
bien-sûr, restent.
J'ai renommé l'ancienne version en globalizeMusic-old.ly si vous voulez récupérer ces anciennes fonctions.
(J'étais quand même arrivé à les faire marcher avec les tests de Raphaël mais certainement d'autre tests auraient révélé d'autre failles)
Bonjour Gilles, c'est super je teste dans tous les sens et pour l'instant tout va bien!
J'ai remarqué un détail: cette version de globalizeMusic.ly semble ne pas apprécier quand la variable global contient une SimultaneousMusic.
C'est le cas notamment dans un exemple de la doc arranger.ly, l'exemple 5 avec la fonction volta-repeat->skip
Voilà un bout de code qui montre le problème. Ce n'est pas gênant pour moi car j'écris toujours les \repeat directement dans la variable global mais j'ai pensé que cela aiderait de le signaler.
\version "2.25.7"
\include "arranger.ly"
\include "globalizeMusic.ly"
global = { s1 * 4 }
all = #'(instrument)
#(begin
(init all)
(rm 'instrument 1 (rel #{ c1 d e f #}))
; Ajout d'un repeat volta à la manière de la doc arranger.ly Exemple 5
(def! 'structure) ; Même longeur que \global
(rm 'structure 2 (volta-repeat->skip 2)) ; On ajoute les reprises
(def! 'global (sim global structure)) ; global = << \global \structure >>
)
\score {
\new Staff << \instrument \global >>
\layout {}
}
\markup "Unfolding fails.."
\score {
\unfoldRepeats \globalizeMusic \new Staff \instrument
\layout {}
}
Bonjour Raphaël.
Merci pour tous ces tests.
Pour l'exemple de arranger.ly, il suffit de remplacer la ligne :
(def! 'global (sim global structure)) ; global = << \global \structure >>
par
(def! 'global (copy-structure structure global))
qui copie la structure de \structure
dans \global.
Une musique simultanée est transformée en un \skip
de même longueur.
J'ai beaucoup hésité à le faire mais franchement ça risquerait si ce n'était pas le cas, de créer des notes en doubles (et pas forcément de la même longueur). On se demanderait qu'est ce qui se passe.
Il y a peut-être une approche plus fine que je ne vois pas pour le moment.
Bonne journée à tous.
Pour être plus précis, une musique simultanée se trouvant dans une copie de la musique contenant la structure à dupliquer.