Subject: Quelle est la différence entre '\context' et '\new' ?

From: simdax <[email-masked]>
Date: Mon, 3 Jan 2011 10:58:31 +0100

> Le vendredi 24 décembre 2010 à 01:16 +0100, Valentin Villenave a écrit :
> > 2010/12/24 simdax <[email-masked]>:
> > > \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.
> 

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

---

From: Xavier Scheuer <[email-masked]>
Date: Mon, 3 Jan 2011 11:15:50 +0100

> pas une sorte de \new camouflé ?

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

-- 
Xavier Scheuer <[email-masked]>

---

From: Jean-Christophe D <[email-masked]>
Date: Sun, 9 Jan 2011 02:42:27 -0800 (PST)

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

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

---

From: "j-f.lucarelli" <[email-masked]>
Date: Sun, 9 Jan 2011 12:54:17 +0100

=================================
  
== En réponse au message du 09-01-2011, 11:42:44 ==

>http://lilypond.org/doc/v2.13/Documentation/notation/creating-contexts)...

Petite correction pour le lien :
http://lilypond.org/doc/v2.13/Documentation/notation/creating-contexts

>_______________________________________________
>liste de diffusion lilypond-user-fr
>[email-masked]
>http://lists.gnu.org/mailman/listinfo/lilypond-user-fr
>

========================================

---

From: simdax <[email-masked]>
Date: Sun, 30 Jan 2011 12:34:16 +0100

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 ?

---

From: Jean-Charles Malahieude <[email-masked]>
Date: Sun, 30 Jan 2011 12:50:00 +0100

> conducteur d'orchestre on répète toujours le nom des instruments au

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

---

From: simdax <[email-masked]>
Date: Sun, 30 Jan 2011 13:19:19 +0100

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

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

---

From: simdax <[email-masked]>
Date: Sun, 30 Jan 2011 18:11:02 +0100

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"

---

From: simdax <[email-masked]>
Date: Sun, 30 Jan 2011 20:00:15 +0100

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

---

From: Jean-Charles Malahieude <[email-masked]>
Date: Sun, 30 Jan 2011 20:43:06 +0100

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.
>
> 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. }
>
> partieUn={ \context Staff = "sax" {\maMusique} } partieDeux={
> \context Staff "autre instrument"{\deLamusique} } %% etc etc.
>
> \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. } }
>
> %% 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??
>

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

---

From: simdax <[email-masked]>
Date: Sun, 30 Jan 2011 21:35:22 +0100

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

---

From: Xavier Scheuer <[email-masked]>
Date: Sun, 30 Jan 2011 21:42:48 +0100

> 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

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

> s1*tant de mesures qu'a duré \deuxiemetruc

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

> 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

---

From: simdax <[email-masked]>
Date: Sun, 30 Jan 2011 22:50:49 +0100

> http://lilypond.org/doc/v2.13/Documentation/notation/keeping-contexts-alive
ahlala, je savais que j'avais vu cette chose dans la documentation!

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

> silences (cf. ci-dessus).

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 =)