transposer "en masse"

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"
  }

<<
    
 \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

}

 >>    
}

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

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

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))
1 « J'aime »

Merci à vous 3 pour vos réponses rapides.

La solution de Jeanas me va à merveille !