groupstaff et variable

Bonjour à tous,

voilà mon dernier problème en date. J'aimerais mettre dans une seule
variable un groupement de portées, comme cela:

rythmiqueUn={

\new StaffGroup
  <<
    \new Staff{
      \relative c'{
        \GuitareLickA}
    }
    \new Staff{
      \clef bass
      \relative c,{
        \repeat unfold 2 {\basseUn}
      }
    }
    \new DrumStaff{
      \batterieUn
    }
  >>
}

et je le placerai dans mon score.ly principal, mais voilà cekimdi:

/home/simdax/lilypond/usr/share/lilypond/current/ly/init.ly:37:0:
Erreur : syntax error, unexpected SCM_TOKEN, expecting \addlyrics

#(if (and (ly:get-option 'old-relative)

!!

Si je remplace ma variable directement par le code ça marche nickel...
Pourquoi est-ce que comme ça ça bugue?? on a pas le droit de mettre des
" << >> " dans une variable ??

Merci d'avance

PS: cela fait plusieurs fois que je poste ici et j'ai toujours eu des
réponses qui m'ont aidé mais je n'ai jamais remercié les gens parce que
je consulte mes mails 3 jours après leur réponse, alors merci pour les
autres fois =)

Bonjour !
Euh... ton exemple marche très bien chez moi...
Es-tu sûr de bien définir tes variables GuitareLickA, basseUn et batterieUn avant de les utiliser dans rythmiqueUn ?
Pour info, mon test :

GuitareLickA = { a b c }
basseUn = { d d d }
batterieUn = { s s s }

rythmiqueUn={
% identique au tien, rien changé
}

\score {
\rythmiqueUn
\layout {}
\midi {}
}

Bonne journée !
Cécile

Merci beaucoup!

En fait il fallait mettre bien un bloc \score, et là ça marche...
Il faut quand même dire que l'erreur que j'avais était fort peu
indicative...

···

Le dimanche 19 décembre 2010 à 14:12 +0100, Cécile Huneau a écrit :

Bonjour !
Euh... ton exemple marche très bien chez moi...
Es-tu sûr de bien définir tes variables GuitareLickA, basseUn et
batterieUn avant de les utiliser dans rythmiqueUn ?
Pour info, mon test :

GuitareLickA = { a b c }
basseUn = { d d d }
batterieUn = { s s s }

rythmiqueUn={
    % identique au tien, rien changé
}

\score {
    \rythmiqueUn
    \layout {}
    \midi {}
}

Bonne journée !
Cécile

Le 19/12/2010 13:09, simdax a écrit :
> Bonjour à tous,
>
> voilà mon dernier problème en date. J'aimerais mettre dans une seule
> variable un groupement de portées, comme cela:
>
>
> rythmiqueUn={
>
> \new StaffGroup
> <<
> \new Staff{
> \relative c'{
> \GuitareLickA}
> }
> \new Staff{
> \clef bass
> \relative c,{
> \repeat unfold 2 {\basseUn}
> }
> }
> \new DrumStaff{
> \batterieUn
> }
> >>
> }
>
> et je le placerai dans mon score.ly principal, mais voilà cekimdi:
>
> /home/simdax/lilypond/usr/share/lilypond/current/ly/init.ly:37:0:
> Erreur : syntax error, unexpected SCM_TOKEN, expecting \addlyrics
>
> #(if (and (ly:get-option 'old-relative)
>
> !!
>
> Si je remplace ma variable directement par le code ça marche nickel...
> Pourquoi est-ce que comme ça ça bugue?? on a pas le droit de mettre des
> " << >> " dans une variable ??
>
> Merci d'avance
>
> PS: cela fait plusieurs fois que je poste ici et j'ai toujours eu des
> réponses qui m'ont aidé mais je n'ai jamais remercié les gens parce que
> je consulte mes mails 3 jours après leur réponse, alors merci pour les
> autres fois =)
>
>
>
> _______________________________________________
> liste de diffusion lilypond-user-fr
> lilypond-user-fr@gnu.org
> http://lists.gnu.org/mailman/listinfo/lilypond-user-fr
_______________________________________________
liste de diffusion lilypond-user-fr
lilypond-user-fr@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-user-fr

Bonjour,

Je me rends compte que je n'ai jamais rien compris à lilypond...

Je vous explique ce que j'aimerais:

Imaginons une partition pour orchestre, qui ne serait constitué que
d'interventions de blocs d'instruments séparément. Pendant 15 mesures,
disons le hautbois et les percus jouent ensemble, puis s'arrêtent car
pendant 10 mesures cela ne va être que les bassons et les trompettes
(j'invente l'exemple hein) etc. etc.

Comme tout cela est linéaire j'aimerais bien pouvoir écrire quelque
chose comme

\partieUn={
  \new StaffGroup{
    \new Staff{ \hautbois}
    \new Staff{ \percus}
    }
  }
etc.

\score{

<<
  \partieUn
  \partieDeux
  \partieTrois

}

Mais j'aimerais que cela soit linéaire, or là, il me met toutes mes
parties en même temps. Comment je peux lui dire de d'abord traiter la
partieUn, puis la partieDeux etc. ??

Merci d'avance

\score{

<<
\partieUn
\partieDeux
\partieTrois

}

Mais j'aimerais que cela soit linéaire, or là, il me met toutes mes
parties en même temps. Comment je peux lui dire de d'abord traiter la
partieUn, puis la partieDeux etc. ??

La construction << >> indique précisément des évènements simultanés !
Essayez plutôt ceci ;

totoUn =
\context StaffGroup = "mongroupe" <<
  \context Staff = "etDun" { g'1 }
  \context Staff = "etDeDeux" { e'1 }
  \context Staff = "etDeTrois" { c'1 }

totoDeux =
\context StaffGroup = "mongroupe" <<
  \context Staff = "etDun" { a'1 }
  \context Staff = "etDeDeux" { f'1 }
  \context Staff = "etDeTrois" { d'1 }

totoTrois =
\context StaffGroup = "mongroupe" <<
  \context Staff = "etDun" { b'1 }
  \context Staff = "etDeDeux" { g'1 }
  \context Staff = "etDeTrois" { e'1 }

\score {
  {
    \totoUn
    \totoDeux
    \totoTrois
  }
}

Ou bien, vous pouvez faire des blocs \score {} séparés :

\score {
  \totoUn
}

\score {
  \totoDeux
}

\score {
  \totoTrois
}

Cordialement,
V. Villenave.

···

2010/12/24 simdax <****@****>:

Tout d'abord merci de votre réponse un peu en retard...
En fait il fallait que je remplace mes << >> par une accolade.
Mais je n'ai toujours pas compris la différence entre un

\new Staff { c d e}
et
\context Staff {c d e}

\new doit être suivi d'une expression musicale, c'est le sens de \new
n'est-ce pas? Mais \context suivi d'une expression musicale, n'est-il
pas une sorte de \new camouflé ?

Cordialement,

Simon Cornaz

···

Le vendredi 24 décembre 2010 à 01:16 +0100, Valentin Villenave a écrit :
> 2010/12/24 simdax <****@****>:
> > \score{
> >
> > <<
> > \partieUn
> > \partieDeux
> > \partieTrois
> >>>
> > }
> >
> > Mais j'aimerais que cela soit linéaire, or là, il me met toutes mes
> > parties en même temps. Comment je peux lui dire de d'abord traiter la
> > partieUn, puis la partieDeux etc. ??
>
> La construction << >> indique précisément des évènements simultanés !
> Essayez plutôt ceci ;
>
> totoUn =
> \context StaffGroup = "mongroupe" <<
> \context Staff = "etDun" { g'1 }
> \context Staff = "etDeDeux" { e'1 }
> \context Staff = "etDeTrois" { c'1 }
> >>
>
> totoDeux =
> \context StaffGroup = "mongroupe" <<
> \context Staff = "etDun" { a'1 }
> \context Staff = "etDeDeux" { f'1 }
> \context Staff = "etDeTrois" { d'1 }
> >>
>
> totoTrois =
> \context StaffGroup = "mongroupe" <<
> \context Staff = "etDun" { b'1 }
> \context Staff = "etDeDeux" { g'1 }
> \context Staff = "etDeTrois" { e'1 }
> >>
>
> \score {
> {
> \totoUn
> \totoDeux
> \totoTrois
> }
> }
>
> Ou bien, vous pouvez faire des blocs \score {} séparés :
>
> \score {
> \totoUn
> }
>
> \score {
> \totoDeux
> }
>
> \score {
> \totoTrois
> }
>
> Cordialement,
> V. Villenave.

Oui, non, pas tout à fait.

\context requiert _toujours_ un nom : \context Staff = "nom"
C'est une commande plus "avancée" qui permet d'appliquer des réglages
à un contexte déjà créé ou de "reprendre" un contexte déjà créé
"en cours de route".

\new est recommandé pour créé des contextes et pour les débutants.
Valentin avait même suggéré qu'on remplace les \context par des \new
dans la doc où \context n'est pas indispensable (pour ne pas perturber
les nouveaux utilisateurs).

Une explication est disponible dans le manuel de notation,
NR 5.1.2 Creating contexts
http://lilypond.org/doc/v2.13/Documentation/notation/creating-contexts

Cordialement,
Xavier

···

2011/1/3 simdax <****@****>:

Tout d'abord merci de votre réponse un peu en retard...
En fait il fallait que je remplace mes << >> par une accolade.
Mais je n'ai toujours pas compris la différence entre un

\new Staff { c d e}
et
\context Staff {c d e}

\new doit être suivi d'une expression musicale, c'est le sens de \new
n'est-ce pas? Mais \context suivi d'une expression musicale, n'est-il
pas une sorte de \new camouflé ?

--
Xavier Scheuer <****@****>

Xavier Scheuer wrote:

\context requiert _toujours_ un nom : \context Staff = "nom"

Sauf quand il n'est pas obligatoire ! (_le_nom_)
   \context Staff { music }

Et oui ce n'est jamais simple avec LilyPond, mais c'est effectivement dans
la doc (en fin du chapitre cité
http://lilypond.org/doc/v2.13/Documentation/notation/creating-contexts)...

Xavier Scheuer wrote:

\new est recommandé pour créé des contextes et pour les débutants.
Valentin avait même suggéré qu'on remplace les \context par des \new
dans la doc où \context n'est pas indispensable (pour ne pas perturber
les nouveaux utilisateurs).

Ah ça oui, que c'est une bonne idée !!!

Bonne année à tous !!!

Jean-Christophe

···

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/groupstaff-et-variable-tp5851158p5904146.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

Bonjour,

je crois que tout est dit dans le début de mon poste.

Je fais ça parce que je transcris du jazz, mais je me posais la
question : les lois de la typographie musicale diffèrent-elles quand il
s'agit de partition de musique non classique? D'ailleurs dans un
conducteur d'orchestre on répète toujours le nom des instruments au
début des systèmes non ?

Le 30/01/2011 12:34, simdax disait :

Bonjour,

je crois que tout est dit dans le début de mon poste.

Je fais ça parce que je transcris du jazz, mais je me posais la
question : les lois de la typographie musicale diffèrent-elles quand il
s'agit de partition de musique non classique? D'ailleurs dans un
conducteur d'orchestre on répète toujours le nom des instruments au
début des systèmes non ?

Un petit plongeon dans la manuel de notation, notation sur la portée,
à la rubrique « 1.6.3 Écriture de parties séparées »

Bon dimanche,
Jean-Charles

arf, j'avais lu trop vite...
merci

···

Le dimanche 30 janvier 2011 à 12:50 +0100, Jean-Charles Malahieude a écrit :

Le 30/01/2011 12:34, simdax disait :
> Bonjour,
>
> je crois que tout est dit dans le début de mon poste.
>
> Je fais ça parce que je transcris du jazz, mais je me posais la
> question : les lois de la typographie musicale diffèrent-elles quand il
> s'agit de partition de musique non classique? D'ailleurs dans un
> conducteur d'orchestre on répète toujours le nom des instruments au
> début des systèmes non ?
>

Un petit plongeon dans la manuel de notation, notation sur la portée,
à la rubrique « 1.6.3 Écriture de parties séparées »

Bon dimanche,
Jean-Charles

Rebonjour,

Au début de mon code j'ai:

\context StaffGroup ="truc" <<
\context Staff ="autretruc"
(etc. avec d'autre staaff)

quand je veux me référer à un contexte de "truc", on est bien obligé de
taper quelque chose comme ça ? :

\context StaffGroup="truc"
{
\context Staff = "autretruc" {blabla}
}

Parce que je n'arrive pas à m'y référer en faisant directement
\context Staff = "autretruc"

Je suis désolé de reprendre le même problème mais je n'ai toujours pas
bien compris je crois.

Ce que je veux et que je n4arrive pas a faire

Je déclare dans une variable toutes mes portées, qui représente les
instruments qui jouent le morceau.
Bien entendu (ce serait trop simple) ces instruments ne jouent tous pas
en même temps, mais de manière général les uns après les autres.

Je déclare en début de \score une variable qui "instancie" mes portées
debut={
\context Staff = "sax" {%ici des propriétés, genre \set instrumentName
etc.}
\context Staff = "autre instrument"
etc.
}

Ensuite je voudrais simplement m'y référer de cette manière
partieUn={
  \context Staff = "sax" {\maMusique}
  }
partieDeux={
  \context Staff "autre instrument"{\deLamusique}
  }
%% etc etc.

%% on arrive enfin au score

\score{

\debut %% on instancie les portées

\partieUn %% de la musique
\partieDeux %% une autre partie
etc.
}

Or, il me semble que les contextes que j'instancie au début "meurent" à
la fin de la déclaration de \debut, et donc en fait partieUn et les
autres crééent implicitement de nouveaux contextes, mais sans les
propriétés que j'ai mises dans début.

Je comprends bien qu'il faudrait faire un truc du genre
<<
\debut
\mestrucs
\àl'affilé
\etc.

Mais tout va se retrouver ensemble. J'aimerais à ne pas avoir à écrire
devant chacune de mes expressions musicales

<<
\debut
\premiertruc
s1*tant de mesures qu'a duré \premiertruc
\deuxiemetruc
s1*tant de mesures qu'a duré \deuxiemetruc
etc.

Dans la solution que Valentin avait donné, il redéclare à chaque fois le
contexte.
totoUn déclare context StaffGroup "machin" qu'il fait suivre de la
musique, et puis totoDeux redéclare le même contexte StaffGroup "machin"
avec de la musique différente.
Je vois que je pourrais moi aussi faire un truc du genre

\score{

{
  << \debut
     \musiqueUn
  >>
  << \debut
     \musiqueDeux
  >>
etc.
}
}

Mais à chaque fois je redéclare des instruments qui ne jouent pas, et
donc on a aligné toutes les portées déclarés dans \debut, ce qui est
inutile...

Je ne sais pas si mon problème est clairement exposé mais en gros,
comment créé des contextes qui durent toute la durée de l'expression
musicale dans le \score, et puis s'y référer de manière linéaire

\score{

%% tout d'abord
{\context Un \context Deux \context Trois}

%%puis
\musiqueUn \musiqueDeux %% qui utilise chacun des contexts différents
      %% et ceci sans utiliser des << >> pour les
      %% déclarer avec les premiers context

}

Ou bien alors je n'ai rien compris au fonctionnement de lilypond et en
fait on ne peut pas procéder de cette manière??

Merci de la patience de ceux qui seront allés jusqu'au bout du post...

···

Le vendredi 24 décembre 2010 à 01:16 +0100, Valentin Villenave a écrit :

2010/12/24 simdax <****@****>:
> \score{
>
> <<
> \partieUn
> \partieDeux
> \partieTrois
>>>
> }
>
> Mais j'aimerais que cela soit linéaire, or là, il me met toutes mes
> parties en même temps. Comment je peux lui dire de d'abord traiter la
> partieUn, puis la partieDeux etc. ??

La construction << >> indique précisément des évènements simultanés !
Essayez plutôt ceci ;

totoUn =
\context StaffGroup = "mongroupe" <<
  \context Staff = "etDun" { g'1 }
  \context Staff = "etDeDeux" { e'1 }
  \context Staff = "etDeTrois" { c'1 }
>>

totoDeux =
\context StaffGroup = "mongroupe" <<
  \context Staff = "etDun" { a'1 }
  \context Staff = "etDeDeux" { f'1 }
  \context Staff = "etDeTrois" { d'1 }
>>

totoTrois =
\context StaffGroup = "mongroupe" <<
  \context Staff = "etDun" { b'1 }
  \context Staff = "etDeDeux" { g'1 }
  \context Staff = "etDeTrois" { e'1 }
>>

\score {
  {
    \totoUn
    \totoDeux
    \totoTrois
  }
}

Ou bien, vous pouvez faire des blocs \score {} séparés :

\score {
  \totoUn
}

\score {
  \totoDeux
}

\score {
  \totoTrois
}

Cordialement,
V. Villenave.

Le 30/01/2011 20:00, simdax disait :

Je suis désolé de reprendre le même problème mais je n'ai toujours
pas bien compris je crois.

Ce que je veux et que je n4arrive pas a faire

Je déclare dans une variable toutes mes portées, qui représente les
instruments qui jouent le morceau. Bien entendu (ce serait trop
simple) ces instruments ne jouent tous pas en même temps, mais de
manière général les uns après les autres.

Je déclare en début de \score une variable qui "instancie" mes
portées debut={ \context Staff = "sax" {%ici des propriétés, genre
\set instrumentName etc.} \context Staff = "autre instrument" etc. }

Ensuite je voudrais simplement m'y référer de cette manière
partieUn={ \context Staff = "sax" {\maMusique} } partieDeux={
\context Staff "autre instrument"{\deLamusique} } %% etc etc.

%% on arrive enfin au score

\score{

\debut %% on instancie les portées

\partieUn %% de la musique \partieDeux %% une autre partie etc. }

Or, il me semble que les contextes que j'instancie au début
"meurent" à la fin de la déclaration de \debut, et donc en fait
partieUn et les autres crééent implicitement de nouveaux contextes,
mais sans les propriétés que j'ai mises dans début.

Je comprends bien qu'il faudrait faire un truc du genre << \debut
\mestrucs \àl'affilé \etc.

Mais tout va se retrouver ensemble. J'aimerais à ne pas avoir à
écrire devant chacune de mes expressions musicales

<< \debut \premiertruc s1*tant de mesures qu'a duré \premiertruc
\deuxiemetruc s1*tant de mesures qu'a duré \deuxiemetruc etc.

Dans la solution que Valentin avait donné, il redéclare à chaque
fois le contexte. totoUn déclare context StaffGroup "machin" qu'il
fait suivre de la musique, et puis totoDeux redéclare le même
contexte StaffGroup "machin" avec de la musique différente. Je vois
que je pourrais moi aussi faire un truc du genre

\score{

{ << \debut \musiqueUn >> << \debut \musiqueDeux >> etc. } }

Mais à chaque fois je redéclare des instruments qui ne jouent pas, et
donc on a aligné toutes les portées déclarés dans \debut, ce qui est
inutile...

Je ne sais pas si mon problème est clairement exposé mais en gros,
comment créé des contextes qui durent toute la durée de l'expression
musicale dans le \score, et puis s'y référer de manière linéaire

\score{

%% tout d'abord {\context Un \context Deux \context Trois}

%%puis \musiqueUn \musiqueDeux %% qui utilise chacun des contexts
différents %% et ceci sans utiliser des<< >> pour les %% déclarer
avec les premiers context

}

Ou bien alors je n'ai rien compris au fonctionnement de lilypond et
en fait on ne peut pas procéder de cette manière??

Merci de la patience de ceux qui seront allés jusqu'au bout du
post...

Je vous invite à relire attentivement le chapitre 3 du manuel
d'initiation (concepts fondamentaux)
http://lilypond.org/doc/v2.13/Documentation/learning/fundamental-concepts

ainsi que le chapitre 3.1 du manuel de notation
http://lilypond.org/doc/v2.13/Documentation/notation/input-structure

Bon courage,
Jean-Charles

Je dois vous avouer que cela fait un certain nombre de fois que je relis
ces sections et que je ne vois à aucun endroit où il est question de la
durée de vie des contextes.

Ce que je vois dans la doc est tout de même assez laconique

"
Un bloc \score doit contenir une et une seule expression musicale,
exprimée immédiatement à la suite de la commande \score. Rappelez-vous
que cette expression peut être n’importe quoi, d’une note isolée à un
gigantesque
{
  \new StaffGroup <<
    ...collez ici la partition complète d'un opéra de Wagner...
  >>
} "

debut={
  \context Staff = "voix"
  {
    \set Staff.instrumentName=#"voix"
    \set Staff.shortInstrumentName=#"voix"
  }
  \context Staff = "sax"
  {
    \set Staff.instrumentName=#"saxophone"
    \set Staff.shortInstrumentName=#"saxophone"
  }

  \context Staff = "guitare"
  {
    \set Staff.instrumentName=#"guitare"
    \set Staff.shortInstrumentName=#"guitare"
  }

  \context Staff="piano" {\set Staff.instrumentName=#"piano"}
  \context StaffGroup = "rythmique"
  <<
    \context Staff = "basse" % \with{\remove "Note_heads_engraver"
                                % \consists "Completion_heads_engraver"
                                % }
    {\set Staff.instrumentName=#"basse"
     \set Staff.shortInstrumentName=#"basse"
     \clef "bass"}

    \context DrumStaff = "batterie" {
      \set Staff.instrumentName=#"batterie"
      \set Staff.shortInstrumentName=#"batterie"}

}
\version "2.13.46"

\score{

   {
     \debut
  %
% J'ai ici déjà perdu toutes les informations que j'avais mises
                                                                                                                                                   
     \context StaffGroup="rythmique"
     \context Staff = "basse" {c c}
     \context StaffGroup ="rythmique"
     \context DrumStaff ="batterie" {\drummode{sn sn sn}}
     \context Staff = "sax" {c c}
     \context Staff = "basse" {c c}
     \context Staff="sax" {d d}
}
}

Au final il va me crééer d'abord 6 portées vides (dans \debut, sauf les notes de "basse" (??)),
puis successivement quatre nouvelles portées batterie, sax basse et sax, alors que j'aimerais bien entendu que ces informations aillent dans les portées crées spécialement pour elles au début
                                                                                                                                                    
Si quelqu'un est capable de me dire comment corriger ce code, ou alors de me dire si cette manière de penser n'est pas celle de lilypond, je lui en serais
très reconnaissant

Merci d'avance,
Simon Cornaz

···

Le dimanche 30 janvier 2011 à 20:43 +0100, Jean-Charles Malahieude a écrit :

Le 30/01/2011 20:00, simdax disait :
> Je suis désolé de reprendre le même problème mais je n'ai toujours
> pas bien compris je crois.
>
> Ce que je veux et que je n4arrive pas a faire
>
> Je déclare dans une variable toutes mes portées, qui représente les
> instruments qui jouent le morceau. Bien entendu (ce serait trop
> simple) ces instruments ne jouent tous pas en même temps, mais de
> manière général les uns après les autres.
>
> Je déclare en début de \score une variable qui "instancie" mes
> portées debut={ \context Staff = "sax" {%ici des propriétés, genre
> \set instrumentName etc.} \context Staff = "autre instrument" etc. }
>
> Ensuite je voudrais simplement m'y référer de cette manière
> partieUn={ \context Staff = "sax" {\maMusique} } partieDeux={
> \context Staff "autre instrument"{\deLamusique} } %% etc etc.
>
> %% on arrive enfin au score
>
> \score{
>
> \debut %% on instancie les portées
>
> \partieUn %% de la musique \partieDeux %% une autre partie etc. }
>
> Or, il me semble que les contextes que j'instancie au début
> "meurent" à la fin de la déclaration de \debut, et donc en fait
> partieUn et les autres crééent implicitement de nouveaux contextes,
> mais sans les propriétés que j'ai mises dans début.
>
> Je comprends bien qu'il faudrait faire un truc du genre << \debut
> \mestrucs \àl'affilé \etc.
>>>
>
> Mais tout va se retrouver ensemble. J'aimerais à ne pas avoir à
> écrire devant chacune de mes expressions musicales
>
> << \debut \premiertruc s1*tant de mesures qu'a duré \premiertruc
> \deuxiemetruc s1*tant de mesures qu'a duré \deuxiemetruc etc.
>>>
>
> Dans la solution que Valentin avait donné, il redéclare à chaque
> fois le contexte. totoUn déclare context StaffGroup "machin" qu'il
> fait suivre de la musique, et puis totoDeux redéclare le même
> contexte StaffGroup "machin" avec de la musique différente. Je vois
> que je pourrais moi aussi faire un truc du genre
>
> \score{
>
> { << \debut \musiqueUn >> << \debut \musiqueDeux >> etc. } }
>
> Mais à chaque fois je redéclare des instruments qui ne jouent pas, et
> donc on a aligné toutes les portées déclarés dans \debut, ce qui est
> inutile...
>
> Je ne sais pas si mon problème est clairement exposé mais en gros,
> comment créé des contextes qui durent toute la durée de l'expression
> musicale dans le \score, et puis s'y référer de manière linéaire
>
> \score{
>
> %% tout d'abord {\context Un \context Deux \context Trois}
>
> %%puis \musiqueUn \musiqueDeux %% qui utilise chacun des contexts
> différents %% et ceci sans utiliser des<< >> pour les %% déclarer
> avec les premiers context
>
> }
>
> Ou bien alors je n'ai rien compris au fonctionnement de lilypond et
> en fait on ne peut pas procéder de cette manière??
>
> Merci de la patience de ceux qui seront allés jusqu'au bout du
> post...
>

Je vous invite à relire attentivement le chapitre 3 du manuel
d'initiation (concepts fondamentaux)
http://lilypond.org/doc/v2.13/Documentation/learning/fundamental-concepts

ainsi que le chapitre 3.1 du manuel de notation
http://lilypond.org/doc/v2.13/Documentation/notation/input-structure

Bon courage,
Jean-Charles

Je suis désolé de reprendre le même problème mais je n'ai toujours pas
bien compris je crois.

Ce que je veux et que je n4arrive pas a faire

Je déclare dans une variable toutes mes portées, qui représente les
instruments qui jouent le morceau.
Bien entendu (ce serait trop simple) ces instruments ne jouent tous pas
en même temps, mais de manière général les uns après les autres.

Je déclare en début de \score une variable qui "instancie" mes portées
debut={
\context Staff = "sax" {%ici des propriétés, genre \set instrumentName
etc.}
\context Staff = "autre instrument"
etc.
}

Ensuite je voudrais simplement m'y référer de cette manière
partieUn={
       \context Staff = "sax" {\maMusique}
       }
partieDeux={
       \context Staff "autre instrument"{\deLamusique}
       }
%% etc etc.

%% on arrive enfin au score

\score{

\debut %% on instancie les portées

\partieUn %% de la musique
\partieDeux %% une autre partie
etc.
}

Or, il me semble que les contextes que j'instancie au début "meurent" à
la fin de la déclaration de \debut, et donc en fait partieUn et les
autres crééent implicitement de nouveaux contextes, mais sans les
propriétés que j'ai mises dans début.

Oui il "meurent", c'est pourquoi il faut que vous les "gardiez en vie".
C'est expliqué dans le manuel de notation, dans une section appelée
justement "Garder les contextes en vie".
NR 5.1.3 Keeping contexts alive
http://lilypond.org/doc/v2.13/Documentation/notation/keeping-contexts-alive

Je comprends bien qu'il faudrait faire un truc du genre
<<
\debut
\mestrucs
\àl'affilé
\etc.
>>

Non, si vous voulez qu'il soient à l'affilé, il faut les mettre dans des
accolades (cf. lien donnés par Jean-Charles).

<<
  { % XS: accolade, ce qui suit sera évalué l'un après l'autre
    \debut
    \mestrucs
    \etc.
  }

Mais tout va se retrouver ensemble. J'aimerais à ne pas avoir à écrire
devant chacune de mes expressions musicales

<<
\debut
\premiertruc
s1*tant de mesures qu'a duré \premiertruc
\deuxiemetruc
s1*tant de mesures qu'a duré \deuxiemetruc
etc.
>>

Mais pourtant vous voudriez que LilyPond "complète" les parties
manquantes par des silences (quand l'autre instrument ne joue pas
pendant que "sax" joue "premier truc"), non ?

Dans ce cas pour éviter de devoir calculer la durée totale des silences
pour "premier truc", vous pourriez utiliser la technique recommandée
pour les cadences.

#(ly:export (mmrest-of-length premiertruc))

NR 1.2.6 Fonctionnalités rythmiques particulières > Alignement et
cadences
http://lilypond.org/doc/v2.13/Documentation/notation/special-rhythmic-concerns#aligning-to-cadenzas

Je ne sais pas si mon problème est clairement exposé mais en gros,
comment créé des contextes qui durent toute la durée de l'expression
musicale dans le \score, et puis s'y référer de manière linéaire

Comme ceci ?

\version "2.13.47"

debut = {
  <<
    \context Staff = "sax" \with {
      instrumentName = #"Saxophone"
    } {
      s1*4 % durée totale du morceau
    }
    \context Staff = "autre" \with {
      instrumentName = #"Autre"
    } {
      s1*4 % durée totale du morceau
    }
  >>
}

partieUn = \context Staff = "sax" {
  \relative c' {
    c4 d e f |
    g4 a b c
  }
}

partieDeux = \context Staff = "autre" {
  \relative c'' {
    c4 b a g |
    f4 e d c
  }
}

\score {
  <<
    \debut
    {
      \partieUn
      \partieDeux
    }
  >>
}

Mais dans ce cas LilyPond ne "complète" pas les parties vides par des
silences (cf. ci-dessus).

Cordialement,
Xavier

···

2011/1/30 simdax <****@****>:

--
Xavier Scheuer <****@****>

Oui il "meurent", c'est pourquoi il faut que vous les "gardiez en vie".
C'est expliqué dans le manuel de notation, dans une section appelée
justement "Garder les contextes en vie".
NR 5.1.3 Keeping contexts alive
http://lilypond.org/doc/v2.13/Documentation/notation/keeping-contexts-alive

ahlala, je savais que j'avais vu cette chose dans la documentation!

> Mais tout va se retrouver ensemble. J'aimerais à ne pas avoir à écrire
> devant chacune de mes expressions musicales
>
> <<
> \debut
> \premiertruc
> s1*tant de mesures qu'a duré \premiertruc
> \deuxiemetruc
> s1*tant de mesures qu'a duré \deuxiemetruc
> etc.
> >>

Mais pourtant vous voudriez que LilyPond "complète" les parties
manquantes par des silences (quand l'autre instrument ne joue pas
pendant que "sax" joue "premier truc"), non ?

Dans ce cas pour éviter de devoir calculer la durée totale des silences
pour "premier truc", vous pourriez utiliser la technique recommandée
pour les cadences.

#(ly:export (mmrest-of-length premiertruc))

NR 1.2.6 Fonctionnalités rythmiques particulières > Alignement et
cadences
http://lilypond.org/doc/v2.13/Documentation/notation/special-rhythmic-concerns#aligning-to-cadenzas

Super, cette fonction a l'air de faire exactement ce que je veux =)
Quand on lit les premières parties de la doc on passe un peu vite sur
toutes ces lignes compliquées mais en fait il faut les relire quand on a
mieux compris :stuck_out_tongue:

> Je ne sais pas si mon problème est clairement exposé mais en gros,
> comment créé des contextes qui durent toute la durée de l'expression
> musicale dans le \score, et puis s'y référer de manière linéaire

Comme ceci ?

\version "2.13.47"

debut = {
  <<
    \context Staff = "sax" \with {
      instrumentName = #"Saxophone"
    } {
      s1*4 % durée totale du morceau
    }
    \context Staff = "autre" \with {
      instrumentName = #"Autre"
    } {
      s1*4 % durée totale du morceau
    }
  >>
}

partieUn = \context Staff = "sax" {
  \relative c' {
    c4 d e f |
    g4 a b c
  }
}

partieDeux = \context Staff = "autre" {
  \relative c'' {
    c4 b a g |
    f4 e d c
  }
}

\score {
  <<
    \debut
    {
      \partieUn
      \partieDeux
    }
  >>
}

Mais dans ce cas LilyPond ne "complète" pas les parties vides par des
silences (cf. ci-dessus).

Cordialement,
Xavier

Merci beaucoup de cette précieuse aide, je vais essayer tout ça demain.

Juste une petite remarque, c'est assez rigolo cette mentalité
lilypondesque de faire des variables avec des silences dedans pour
suivre en fantôme le fil de la musique. Cette idée fait commme une sorte
"d'allocation de mémoire" un peu bourrine, puisqu'on peut se planter en
précisant un mauvais nombre de mesures, comme une bonne vieille chaine
de caractères en C.

J'aime bien =)