Subject: [LilyPond] transposer "en masse"

From: Marie via LilyPond <[email-masked]>
Date: Fri, 20 Sep 2024 15:58:34 +0000

Bonjour
Dans le cadre d'un projet avec des collègues, j'ai produit un fichier de répertoire avec plein de morceaux. J'ai un fichier global où j'appelle chaque morceau grâce à la fonction "include". 
Chaque morceau est construit de la sorte : 
> \score {
> \header { titre, compositeur, ...}
> <<
> \chords et \relative c''
> >>

Ce qui me permet pour chaque morceau d'avoir le bon titre et le bon compositeur.

Je voudrais avoir une version de ce document transposé un ton plus haut (coucou les clarinettistes :smile: ). Sauf que si je met mon :

> \transpose c d

en debut de fichier, avant d'inclure tous mes morceaux, ça bugue, sûrement à cause du \header inclus dans le \score. 

Existe-il une solution me permettant de transposer tout en une ou 2 lignes de code, ou alors je vais être obligé de transposer tous les morceaux un par un (ça je sais faire, mais il y en a une quarantaine... :confused: ) ?

J'espère être claire !
Merci

________________________________________________
Voici un mini-exemple, le titre et compositeur ne fonctionnent pas, mais dans mon ficher d'origine ça marche (j'ai un fichier de mise en page) :

> \version "2.24.3"
> 
> 
> 
> \score {
>   \header { title = "L'aoure de la cambo torta"
>             subtitle = "Valse"
>             composer = "Trad. Auvergne"
>   }
>  \transpose c d  % <----------------ici
> <<
>     
>  \chords 
>   {
>     s2. c g a:m s f s g s s
>     s e:m f c s g s s s s a:m f c   
>   }
>   
> 
>  \relative c'' 
>   {
>   \time 3/4
>   \key c \major
>  
>     \repeat volta 2 {
>     \mark \markup \box "A" g4 a b c2. d4 c b c2. \break c4 d e f2. d4 e f g2. d~ d
>     }
>     \break
>     \repeat volta 2 { 
>     \mark \markup \box "B" d4 e f g2. f4 e d g,2. \break c4 b c d2. 
>     }
>     \alternative {{f4 e c d2.~ d}{f4 e d c2.~c~c}} \bar "|."
>     \break
>    } 
>     
> >>
> }
> 
> 
> 
> %---------------------------------
> 
> 
> \score 
>   {
>   \header {
>     title = "Un soir" 
>     subtitle = "Valse"
>     composer = "Trad.Auvergne"  
>   }
>   
>   
> <<  
> 
>   \relative c''
>     {
>       \time 3/4
>       \key c \major
>       
>       \partial 4 g4
>       \repeat volta 2 {
>         \mark \markup \box "A"
>       c4. b8 c4 d4 a b c2.~ c2 g4 \break e'4. d8 e4 f d f e2.~ e4 e8 d e f \break g4 e d c d e e d2~ d2 d4 \break 
>       } 
>       \alternative {{d4 a b c b c d2.~ d2 g,4}{e'4. d8 e4 fis4 e d g2.~ g2 g4}}
>       
>       \break
>       
>       \repeat volta 2 {
>         \mark \markup \box "B"
>        e4 e8 f g a g2 g4 e4 e8 f g a g2 e4 \break c4 c8 d e f 
>       }
>       \alternative {{d2 b4 g a8 b c d e4 c g'}{d4 a b c2.~ c2. \bar "|."}}
>     }
> 
>    
>      \chords {
> \partial 4 s4
> c2. f c s
> c f c s
> c s g s
> f s g s
> a:m d g s
> 
> c s s s
> c f g c
> f c s
> 
> }
> 
> >>    
> }

---
Pour poster dans ce sujet, visitez la [page du sujet](https://lilypond.community/t/transposer-en-masse/5748/1).

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: Ben via LilyPond <[email-masked]>
Date: Fri, 20 Sep 2024 16:30:51 +0000

Bonjour Marie, 

Je ne saurai pas le faire en lilypond, mais il existe des logiciels ou des scripts gratuits qui permettent de remplacer un texte dans plusieurs fichiers en même temps.

Vous pourriez par exemple remplacer "\relative" par "\transpose c d \relative" de même pour \chords. 

Il vaut mieux dupliquer tous vos fichiers avant de les manipuler de la sorte pour pouvoir facilement revenir en arrière en cas d'erreur.

Au plaisir, 

Ben

> Le 20 sept. 2024 à 17:58, Marie via LilyPond <[email-masked]> a écrit :
> 
> 	Marie <https://lilypond.community/u/mariem> MarieM
> Septembre 20
> Bonjour
> Je voudrais avoir une version de ce document transposé un ton plus haut (coucou les clarinettistes  ). Sauf que si je met mon :
> 
> \transpose c d
> Existe-il une solution me permettant de transposer tout en une ou 2 lignes de code, ou alors je vais être obligé de transposer tous les morceaux un par un (ça je sais faire, mais il y en a une quarantaine...  ) ?
> 
> J'espère être claire !
> Merci
> 
> Pour poster dans ce sujet, visitez la page du sujet <https://lilypond.community/t/transposer-en-masse/5748/1>.
> 
> Pour créer un nouveau sujet, écrivez à [email-masked] <mailto:[email-masked]> ou visitez la page d'accueil de lilypond.community <https://lilypond.community/>.
> 
> 
> 
> Pour vous désabonner de ces e-mails, cliquez ici <https://lilypond.community/email/unsubscribe/f593d88e5e225964f0fbe8e2cb6c61052959d79de1dc85d760fca8da45ed6b2e>.
>

---
Pour poster dans ce sujet, visitez la [page du sujet](https://lilypond.community/t/transposer-en-masse/5748/2).

---

From: Gérard S via LilyPond <[email-masked]>
Date: Fri, 20 Sep 2024 16:39:14 +0000

Bonsoir,

J'ai eu l'occasion de faire un truc comme ça (en 2.23.4) :

dans le fichier maitre (.ly), je définissais 2 variables, D pour départ, 
A pour arrivée :
noteD = c
noteA = d

après j'appelais mes fichiers avec un "\include" dont le code \score 
était par exemple :

\score{
<<
   \context Voice {\transpose \noteD \noteA  \melodie}
}

Si noteD et noteA sont égales, normalement ça ne doit rien faire (je 
n'ai pas pensé à essayer). Mais sinon ça transpose de D à A.

Si ça peut dépanner

Cordialement

Gérard

Le 20/09/2024 à 17:58, Marie via LilyPond a écrit :
> [MarieM] 	Marie <https://lilypond.community/u/mariem> MarieM
> Septembre 20
>
> Bonjour
> Dans le cadre d'un projet avec des collègues, j'ai produit un fichier 
> de répertoire avec plein de morceaux. J'ai un fichier global où 
> j'appelle chaque morceau grâce à la fonction "include".
> Je voudrais avoir une version de ce document transposé un ton plus 
> haut (coucou les clarinettistes :smile: ). Sauf que si je met mon :
>
>     \transpose c d
>
> en debut de fichier, avant d'inclure tous mes morceaux, ça bugue, 
> sûrement à cause du \header inclus dans le \score.
>
> Existe-il une solution me permettant de transposer tout en une ou 2 
> lignes de code, ou alors je vais être obligé de transposer tous les 
> morceaux un par un (ça je sais faire, mais il y en a une 
> quarantaine... :confused: ) ?
>
> J'espère être claire !
> Merci
>
> ------------------------------------------------------------------------
>
> Voici un mini-exemple, le titre et compositeur ne fonctionnent pas, 
> mais dans mon ficher d'origine ça marche (j'ai un fichier de mise en 
> page) :
>
>     \version "2.24.3"
>
>     \score {
>     |\repeat volta 2 { \mark \markup \box "A" g4 a b c2. d4 c b c2.
>     \break c4 d e f2. d4 e f g2. d~ d } \break \repeat volta 2 { \mark
>     \markup \box "B" d4 e f g2. f4 e d g,2. \break c4 b c d2. }
>     \alternative {{f4 e c d2.~ d}{f4 e d c2.~c~c}} \bar "|." \break |
>
>     }
>
>     }
>
>     |\partial 4 g4 \repeat volta 2 { \mark \markup \box "A" c4. b8 c4
>     d4 a b c2.~ c2 g4 \break e'4. d8 e4 f d f e2.~ e4 e8 d e f \break
>     g4 e d c d e e d2~ d2 d4 \break } \alternative {{d4 a b c b c d2.~
>     d2 g,4}{e'4. d8 e4 fis4 e d g2.~ g2 g4}} \break \repeat volta 2 {
>     \mark \markup \box "B" e4 e8 f g a g2 g4 e4 e8 f g a g2 e4 \break
>     c4 c8 d e f } \alternative {{d2 b4 g a8 b c d e4 c g'}{d4 a b c2.~
>     c2. \bar "|."}} } \chords { |
>
>     \partial 4 s4
>     c2. f c s
>     c f c s
>     c s g s
>     f s g s
>     a:m d g s
>
>     c s s s
>     c f g c
>     f c s
>
>     }
>
>     }
>
> ------------------------------------------------------------------------
>
> Pour poster dans ce sujet, visitez la page du 
> sujet <https://lilypond.community/t/transposer-en-masse/5748/1>.
>
> Pour créer un nouveau sujet, écrivez à [email-masked] ou 
> visitez la page d'accueil de lilypond.community 
> <https://lilypond.community>.
>
> 
>
> Pour vous désabonner de ces e-mails, cliquez ici 
> <https://lilypond.community/email/unsubscribe/1fe9e6840436ea770169618df517132bb6c99ad25da1dcfd1a3d9da29cde91a7>.
>

---
Pour poster dans ce sujet, visitez la [page du sujet](https://lilypond.community/t/transposer-en-masse/5748/3).

---

From: Jean Abou Samra via LilyPond <[email-masked]>
Date: Fri, 20 Sep 2024 16:49:19 +0000

Voilà une manière de le faire sans rien toucher au reste. Au début de votre fichier, mettez la ligne

```
#(set! toplevel-music-functions (cons #{ \transpose c d \etc #} toplevel-music-functions))
```

---
Pour poster dans ce sujet, visitez la [page du sujet](https://lilypond.community/t/transposer-en-masse/5748/4).

---

From: Marie via LilyPond <[email-masked]>
Date: Fri, 20 Sep 2024 20:10:17 +0000

Merci à vous 3 pour vos réponses rapides.

La solution de Jeanas me va à merveille !

---
Pour poster dans ce sujet, visitez la [page du sujet](https://lilypond.community/t/transposer-en-masse/5748/5).