Subject: Compréhension structure dans /score

From: sksbir <[email-masked]>
Date: Sun, 19 Jun 2011 19:25:56 -0700 (PDT)

Bonjour

J'ai commencé à m'intéresser à lilypond depuis environ 1 mois, et déja écrit
quelques partitions (très) simples.

Mais depuis 1 semaine, je bloque sur la rédaction d'un chant pour une
chorale, et je sens qu'il me manque quelques données sur les imbrications
des blocs sémantiques.

Par exemple, ici :
http://lilypond.org/doc/v2.13/Documentation/notation/multiple-voices#automatic-part-combining
: Le 2eme exemple montre 3 façons de combiner 2 voix. Dans le code source,
je n'arrive pas à comprendre pourquoi l'écriture des 3 staffs doit être
insérée dans DEUX couples "<<" et ">>" .
Pourquoi ça n'est pas { << .... >> }   au lieu de << << .... >> >> ?

J'ai pourtant relu plusieurs fois cet extrait :
http://lilypond.org/doc/v2.14/Documentation/learning/introduction-to-the-lilypond-file-structure
mais je n'arrive pas à faire le lien.

Pour en revenir à mes travaux en cours, j'ai réussi à écrire une version qui
se compile correctement, puis j'ai voulu passer de \partcombine vers de la
polyphonie standard , obtenir la sortie midi , et les choses ont commencé à
aller de mal en pis.

Voici le code qui fonctionne : 
\version "2.12.3"

\include "italiano.ly"

\header {
title = "Chant de la Paix"
composer = "Ziad Rahbani"
}

<<

% --------------------  portée Soprano et alti
\new Staff
<<
 \partcombine
\relative la' {
\time 4/4 
\key la \major 
\mark \markup { \musicglyph #"scripts.segno" }
la2 si4 ( dod4 ) re4 dod si la r4 la4 sold la si4. ( dod8 ) si2 r4 la4 si
dod re dod si ( la ) fad ( la ) sold si la1
}
\relative do' {
\time 4/4 
\key la \major 
dod2 re si4 dod re dod dod2 dod4 dod re2 re2 dod4 mi4 mi la sold la fad (
fad ) re2 re4 dod dod1
}

\new Lyrics \lyricmode { 
tou2 ba2 li4 sa i na i2 la4 sa4 la2 mi2 fa4 a4 i4 na4 hom4 ab4 na4 a4 la2
hi4 youd4 aoun1
}

% --------------------  portée ténor et basse
\new Staff
<<
 \partcombine

\relative do {
\time 4/4 
\key la \major
\clef bass 
mi2 fad mi4 mi mi mi la2 la4 la fad2 sold mi4 dod' dod dod si la si ( dod )
la2 sold4 sold mi1 
}

\relative do {
\time 4/4 
\key la \major
\clef bass 
la2 la sold4 la si la fad'2 mi4 mi si2 mi,2 la4 la' sold fad mid fad re ( re
) si2 mi,4 mi la1
}

%------------------------------------- FIN 1ere ligne 
<<
\new Staff 
% \with { \consists "Mark_engraver" }

\relative do' {
\time 4/4 
\key la \major
r4 re4 re re | mi4. ( fad8 ) mi2 | mi4 re4 dod8 re4 mi8 | re1 | r4 re4 mi4
fa4 ( si4. ) si8 si4. si8 |
la4 la8 ( si8 ) sold4 sold8 ( la8 ) fad1 r4 la8 si8 dod8 si8 la8 si8 la4.
sold8 la4 fa4 r4 fa8 fa re'4 dod re2 dod2 
si4 ( la ) sold ( fad )
\mark \markup { \musicglyph #"scripts.segno" }
si1
\bar "||"
}

\addlyrics {
sa la mou la hi yah faz kou lou ba kom 
oua af ka ra kom bel ma si hi ya souh
a sa la ha mou la kom ja mi han
an tou mou la zi na fi lma sih }

<<
\new Staff 
\relative do' {
\time 4/4 
\key la \major
r8 mi8 mi4 mi mi8 mi8 mi4 mi4 la4 mi4 r4 mi8 mi si' si mi,4 fad4 sold4 la si
la2 dod2
\mark \markup { \musicglyph #"scripts.segno" }
mi1
\bar "||"
}
\addlyrics {
li yas fah ba dou kom an ba den
ka ma sa fa ha la hou an kom fi lma sih
}

<<
\new Staff
\relative do'' {
\time 4/4 
\key la \major
la4 la mi dod re8 ( mi8 ) fad ( sold ) la4 la sold fad si4. si8 dod4 la8 la
si4
\mark \markup { \musicglyph #"scripts.segno" }
la4
\bar "||"
}
\addlyrics {
iz hab oua sa leh a kha ka thou ma od oua ka reb kour ba nak
} 

__________   Et voici le code qui ne fonctionne pas :

\version "2.12.3"

\include "italiano.ly"

%------------------------------------------------------------- Macros
refrainsoprano = \relative do'' {
\voiceOne 
\time 4/4 
\key la \major
\mark \markup { \musicglyph #"scripts.segno" }
la2 si4 ( dod4 ) re4 dod si la r4 la4 sold la si4. ( dod8 ) si2 r4 la4 si
dod re dod si ( la ) fad ( la ) sold si la1
}

refrainalti = \relative do' {
\voiceTwo
\time 4/4 
\key la \major
dod2 re si4 dod re dod dod2 dod4 dod re2 re2 dod4 mi4 mi la sold la fad (
fad ) re2 re4 dod dod1
}

texterefrain = \new Lyrics \lyricmode { 
tou2 ba2 li4 sa i na i2 la4 sa4 la2 mi2 fa4 a4 i4 na4 hom4 ab4 na4 a4 la2
hi4 youd4 aoun1
}

refraintenor = \relative do {
\time 4/4 
\key la \major
\clef bass
\voiceOne
mi2 fad mi4 mi mi mi la2 la4 la fad2 sold mi4 dod' dod dod si la si ( dod )
la2 sold4 sold mi1 
}

refrainbasse = \relative do {
\time 4/4 
\key la \major
\clef bass
\voiceTwo
la2 la sold4 la si la fad'2 mi4 mi si2 mi,2 la4 la' sold fad mid fad re ( re
) si2 mi,4 mi la1
}

\header {
title = "Chant de la Paix"
composer = "Ziad Rahbani"
}

\score {

%----------------------------------------------------------------------------------
Refrain
	<<
		\new Staff = "refrainhaut" 
			<<
				\new Voice = "soprane" {  \refrainsoprano } \\
				\new voice = "alti" { \refrainalti}

		\texterefrain
		
		\new Staff = "refrainbas" 
			<<
				\new Voice = "tenor" { \refraintenor } \\
				\new Voice = "basse" { \refrainbasse }

%----------------------------------------------------------------------------------
couplets

\new Staff = "coupletA" << 
% \with { \consists "Mark_engraver" }

\relative do' {
\time 4/4 
\key la \major
r4 re4 re re | mi4. ( fad8 ) mi2 | mi4 re4 dod8 re4 mi8 | re1 | r4 re4 mi4
fa4 ( si4. ) si8 si4. si8 |
la4 la8 ( si8 ) sold4 sold8 ( la8 ) fad1 r4 la8 si8 dod8 si8 la8 si8 la4.
sold8 la4 fa4 r4 fa8 fa re'4 dod re2 dod2 
si4 ( la ) sold ( fad )
\mark \markup { \musicglyph #"scripts.segno" }
si1
\bar "||"
}

\addlyrics {
sa la mou la hi yah faz kou lou ba kom 
oua af ka ra kom bel ma si hi ya souh
a sa la ha mou la kom ja mi han
an tou mou la zi na fi lma sih }

\new Staff = "coupletB" << 
\relative do' {
\time 4/4 
\key la \major
r8 mi8 mi4 mi mi8 mi8 mi4 mi4 la4 mi4 r4 mi8 mi si' si mi,4 fad4 sold4 la si
la2 dod2
\mark \markup { \musicglyph #"scripts.segno" }
mi1
\bar "||"
}

\addlyrics {
li yas fah ba dou kom an ba den
ka ma sa fa ha la hou an kom fi lma sih
}

\new Staff = "coupletC" <<
\relative do'' {
\time 4/4 
\key la \major
la4 la mi dod re8 ( mi8 ) fad ( sold ) la4 la sold fad si4. si8 dod4 la8 la
si4
\mark \markup { \musicglyph #"scripts.segno" }
la4
\bar "||"
}

\addlyrics {
iz hab oua sa leh a kha ka thou ma od oua ka reb kour ba nak
}

}

\layout { }
\midi { }

Alors, j'ai découvert qu'il existe des modèles tout prêts ( ici par exemple
: http://lilypond.org/doc/v2.14/Documentation/learning/vocal-ensembles ) ,
mais ça va me prendre du temps de refondre mon source, et surtout,
j'aimerais comprendre où je me plante.

Merci de m'avoir lu 

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Comprehension-structure-dans-score-tp6494452p6494452.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

---

From: Xavier Scheuer <[email-masked]>
Date: Mon, 20 Jun 2011 10:59:33 +0200

> Pourquoi ça n'est pas { << .... >> }   au lieu de << << .... >> >> ?

Tu as raison, UN seul couple  << ... >>  est suffisant.
Je vais remonter l'info pour que cela soit changé dans la prochaine
version de la doc : inutile de perturber inutilement les nouveaux
utilisateurs.

> polyphonie standard , obtenir la sortie midi , et les choses ont commencé à

Rhaa, je ne comprends pas pourquoi ils ont nommé la construction
  << { ... } \\ { ... } >>  "Standard polyphony" dans ce snippet !
La construction avec le double backslash est susceptible de poser plus
de problèmes (surtout aux nouveaux utilisateurs) que l'instanciation
explicite des voix.  Je te conseille de relire le début de NR 1.5.2
pour bien comprendre cette "instanciation explicite".

> […]

Pourquoi ne pas utiliser des variables pour chaque voix (aussi pour les
notes des couplets) et pour les paroles ?
En général préférer  \new Lyrics \lyristo "laVoix"  à  \addlyrics .
La dernière version stable est la 2.14 (fraîchement sortie !).

> […]

"Refrain" et "couplets" ne sont pas commentés.
Dans "Refrain" (bloc  \score ), il manque une majuscule à  Voice
  \new voice = "alti"  ->  \new Voice = "alti"

Tu as quatre voix différentes pour le refrain mais une seule pour les
couplets ?  Je suppose que tu veux les couplets à la suite du refrain.
Dans un nouveau bloc  \score  ?  Dans le même bloc  \score  mais à la
suite ?  Dans ce cas tu stoppes toutes les portées et tu commences une
nouvelle ?  Avec l'affichage de la métrique ou pas ?
Il faudra régler ton (ou tes) bloc(s)  \score  en conséquence de
comment tu souhaites afficher tout ça.  Le recours à des  \break  et
autres  \stopStaff  sera peut-être nécessaire si tu souhaites passer de
2 portées / 4 voix  à  1 portées / 1 voix.

Cordialement,
Xavier

-- 
Xavier Scheuer <[email-masked]>

---

From: sksbir <[email-masked]>
Date: Sat, 25 Jun 2011 04:01:14 -0700 (PDT)

> 2 portées / 4 voix  à  1 portées / 1 voix.

Bonjour Xavier
Merci pour ta réponse, ça m'a déja bien aidé, mais je bloque toujours. Je
souhaite tout avoir sur une seule page, comme dans mon tout 1er exemple qui
fonctionne, mais pour lequel la structure est implicite. C'est en voulant
expliciter la structure ( avec new Voice, new Staff ,etc...) que je me
plante...

Je n'arrive pas à comprendre comment on utilise les couples { } et << >>
correctement. J'ai tendance à vouloir les utiliser comme les parenthèses
quand on écrit une formule mathématique.
-par exemple, on devrait pouvoir en "empiler" autant qu'on en veut dans un
bloc \score.
exemple :
/\score { { { musique... } } }/
ne devrait-il pas etre identique à 
/\score { musique...  }/
?

De plus, je ne vois pas ce qui m’empêche d'écrire quelque chose du genre
\score {
\new Staff { ..... }
\new Staff { ..... }
etc...
}
Histoire d'avoir plusieurs portées qui se suivent sur une seule page ( j'ai
regardé \stopStaff et \startStaff, mais ça, c'est pour suspendre la gravure
d'une portée en plein milieu de la portée...)

Et comme ma page comporte un regroupement de 2 portées de 2 voix chacune,
suivie de 3 couplets à une seule voix, j'ai donc écris une structure qui
ressemble à ça:
/\score {
%----------- refrain
<< 
new Staff <<
new Voice {}
new Voice {}
new Staff <<
new Voice {}
new Voice {}
%-------- couplets
new Staff <<
new Staff <<
new Staff <<
>>/
Sauf que je plante en compilation sur le 1er couplet : Erreur : syntax
error, unexpected \new
Je n'arrive pas à comprendre pourquoi.

J'ai modifié mon code pour tenir compte de tes remarques. Je le remets
ci-dessous , mais je préfèrerais avoir les billes pour le corriger moi même
après avoir compris où je déraille dans la construction.
Merci à toi. :)

/
\version "2.14.1"

\include "italiano.ly"

coupletA = \relative do' {
\time 4/4 
\key la \major

coupletB = \relative do' {
\time 4/4 
\key la \major
r8 mi8 mi4 mi mi8 mi8 mi4 mi4 la4 mi4 r4 mi8 mi si' si mi,4 fad4 sold4 la si
la2 dod2
\mark \markup { \musicglyph #"scripts.segno" }
mi1
\bar "||"
}

coupletC = \relative do'' {
\time 4/4 
\key la \major
la4 la mi dod re8 ( mi8 ) fad ( sold ) la4 la sold fad si4. si8 dod4 la8 la
si4
\mark \markup { \musicglyph #"scripts.segno" }
la4
\bar "||"
}

%------------------------------------------- FIN DES MACROS

\header {

\score {
%----------------------------------------------------------------------------------
Refrain
	<<
		\new Staff = "refrainhaut" 
			<<
				\new Voice = "soprane" {  \refrainsoprano }
				\new Voice = "alti" { \refrainalti }

		\texterefrain
		
		\new Staff = "refrainbas" 
			<<
				\new Voice = "tenor" { \refraintenor }
				\new Voice = "basse" { \refrainbasse }

\coupletA

\coupletB

\coupletC

\layout { }
\midi { }

}/

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Comprehension-structure-dans-score-tp6494452p6514516.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.