Subject: [LilyPond] [Général] arranger.ly et globalizeMusic.ly \repeat volta \alternative

From: Gilles Thibault via LilyPond <[email-masked]>
Date: Fri, 08 Dec 2023 10:36:15 +0000

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 utiliser :

```
   \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 :
  http://gillesth.free.fr/Lilypond/globalizeMusic/

Il vous faudra bien-sûr comme pour les versions précédentes, du fichier extractMusic.ly qui se trouve dans ce répertoire :
  http://gillesth.free.fr/Lilypond/extractMusic/

Bonne réception et bonne journée à tous.

---
Pour poster dans ce sujet, visitez la [page du sujet](https://lilypond.community/t/arranger-ly-et-globalizemusic-ly-repeat-volta-alternative/5465/4).

Pour créer un nouveau sujet, écrivez à [[email-masked]](mailto:[email-masked]) ou visitez la [page d'accueil de lilypond.community](https://lilypond.community).

---

From: Raphael Hardy via LilyPond <[email-masked]>
Date: Fri, 08 Dec 2023 16:11:53 +0000

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:

[details="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
}
```
[/details]

Par contre des volta consécutifs donnent un résultat inattendu:

[details="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
}
```
[/details]

Et si je ne me trompe pas les imbrications comme ce Da capo semblent aussi esquiver des répétitions:

[details="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
}
```
[/details]

J’espère que ce n'est pas une trop grande galère :innocent:

---
Pour poster dans ce sujet, visitez la [page du sujet](https://lilypond.community/t/arranger-ly-et-globalizemusic-ly-repeat-volta-alternative/5465/5).

---

From: Gilles Thibault via LilyPond <[email-masked]>
Date: Fri, 08 Dec 2023 18:40:32 +0000

Merci de tes testes.
Je regarderai ça.
Bonne soirée

---
Pour poster dans ce sujet, visitez la [page du sujet](https://lilypond.community/t/arranger-ly-et-globalizemusic-ly-repeat-volta-alternative/5465/6).

---

From: Gilles Thibault via LilyPond <[email-masked]>
Date: Sun, 10 Dec 2023 16:21:59 +0000

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 quelle `\repeat volta` et `segno`, même les `\repeat volta` imbriqués  (non testé)...
Le code est aussi 2 fois moins lourd !

Tout se trouve dans ce répertoire !

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)

---
Pour poster dans ce sujet, visitez la [page du sujet](https://lilypond.community/t/arranger-ly-et-globalizemusic-ly-repeat-volta-alternative/5465/7).

---

From: Raphael Hardy via LilyPond <[email-masked]>
Date: Sun, 10 Dec 2023 19:28:07 +0000

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 {}
}
```

---
Pour poster dans ce sujet, visitez la [page du sujet](https://lilypond.community/t/arranger-ly-et-globalizemusic-ly-repeat-volta-alternative/5465/8).

---

From: Gilles Thibault via LilyPond <[email-masked]>
Date: Mon, 11 Dec 2023 04:12:43 +0000

Bonjour Raphaël.
Merci pour tous ces tests.
Pour l'exemple de arranger.ly 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 poster dans ce sujet, visitez la [page du sujet](https://lilypond.community/t/arranger-ly-et-globalizemusic-ly-repeat-volta-alternative/5465/9).

---

From: Gilles Thibault via LilyPond <[email-masked]>
Date: Mon, 11 Dec 2023 04:41:27 +0000

[quote="gillesth, post:9, topic:5465"]
Une musique simultanée est transformée en un `\skip`
[/quote]
pour être plus précis, une musique simultanée se trouvant dans une copie de la musique contenant la structure à dupliquer.

---
Pour poster dans ce sujet, visitez la [page du sujet](https://lilypond.community/t/arranger-ly-et-globalizemusic-ly-repeat-volta-alternative/5465/10).