Subject: Re: Marque d'avancement, I ou J

From: Seventies <[email-masked]>
Date: Thu, 16 Apr 2015 13:59:06 -0700 (MST)

Je reviens encore une fois sur ce sujet, car la méthode semble comporter un
bug :
Si je désire donc utiliser la suite (inhabituelle) A B C D E F G H I K (pas
de J), il faut employer l'instruction
  \set Score.markFormatter = #format-mark-box-alphabet      % alphabet
complet
puis remplacer le dixième \mark par \mark 11

De manière globale, ça marche bien (voir premier \score). Mais si on reporte
les graveurs de mark dans un contexte de voix, ça ne fonctionne plus, même
en spécifiant
  \set Voice.markFormatter = #format-mark-box-alphabet      % alphabet
complet

\version "2.18.2"

musicA = \relative c'' {
  \set Score.markFormatter = #format-mark-box-alphabet      % alphabet
complet
  c1
  \mark \default
  \repeat unfold 8 {c1 \mark \default}
  c1
  \mark 11
  c1
}

musicB = \relative c'' {
  \set Voice.markFormatter = #format-mark-box-alphabet      % alphabet
complet
  c1
  \mark \default
  \repeat unfold 8 {c1 \mark \default}
  c1
  \mark 11
  c1
}

staffMusic = \new Staff \with {
  \RemoveEmptyStaves
  \consists "Mark_engraver"
  \consists "Metronome_mark_engraver"
  \consists "Staff_collecting_engraver"
}
\musicB

\score { % exemple normal, OK
  <<
    \new StaffGroup
    <<
      \new GrandStaff
      <<
        \musicA
        \musicA
}

\score { % mark_engraver reporté dans le contexte Voice
  <<
    \new StaffGroup
    <<
      \new GrandStaff
      <<
        \staffMusic
        \musicA
  \layout {
    \context {
      \Score
      \remove "Mark_engraver"
      \remove "Volta_engraver"
      \remove "Metronome_mark_engraver"
      \remove "Staff_collecting_engraver"
    }
  }
}

Alors, erreur de manipulation des variables, ou bug ?
J'ai testé quelques variantes, mais sans succès.

Qui aurait une idée ?

Jean-François

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Marque-d-avancement-I-ou-J-tp7582427p7582804.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

---

From: Calixte Faure <[email-masked]>
Date: Fri, 17 Apr 2015 00:25:50 +0200

Bonjour, bonsoir,

À mon avis ce n’est pas un bug, je pense surtout que markFormatter n’est
pas une propriété de Voice.
J’ai surtout du mal à comprendre le but de mettre les marques dans chaque
voix. Pourquoi ne pas définir une voix de temps vides (s) avec les marques,
et mettre cette voix en parallèle avec les voix de notes ?

Calixte.

Le 16 avril 2015 22:59, Seventies <[email-masked]> a écrit :

> View this message in context:
> http://lilypond-french-users.1298960.n2.nabble.com/Marque-d-avancement-I-ou-J-tp7582427p7582804.html
> _______________________________________________
> liste de diffusion lilypond-user-fr
> [email-masked]
> https://lists.gnu.org/mailman/listinfo/lilypond-user-fr
>

---

From: Seventies <[email-masked]>
Date: Fri, 17 Apr 2015 03:12:23 -0700 (MST)

Bonjour à tous,

L'utilité de cette astuce est de reproduire la mise en page des partitions
orchestrales classiques : tempi, marques d'avancement et boîtes de reprise
- en haut de partition,
- au dessus des cordes
- et enfin en dessous des basses, avec sens inversé.

Je supprime donc les graveurs concernés du contexte \score pour les remettre
dans les \staff de flûte, violon et contrebasse.

Tout fonctionne correctement, sinon que, comme expliqué, dans la partition
que je recopie, le repère J est supprimé au profit du repère I,
contrairement aux conventions habituelles.

Là encore, je place l'instruction
 \set Score.markFormatter = #format-mark-box-alphabet
pour bénéficier de l'alphabet complet, et pour sauter le J, je place
l'instruction
\mark 11 % Correspond au K

Pour les parties séparées, ça fonctionne, de même que pour la partition
d'étude (où les repères restent attachés au score), mais dans la partition
directrice, où les repères sont attachés au Staff, LilyPond refuse de sauter
le repère J

Je sais, c'est un détail, mais je suis un peu maniaque quant à la fidélité à
la partition d'origine ;-)

Pour l'instant, je me tiens à la solution du J avec une remarque éditoriale.
Mais c'était l'occasion de fouiller un peu en profondeur pour comprendre le
fonctionnement de cette fonction.

Cordialement,

Jean-François

Calixte wrote

> lilypond-user-fr@

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Marque-d-avancement-I-ou-J-tp7582427p7582806.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

---

From: Philippe Neyrat <[email-masked]>
Date: Fri, 17 Apr 2015 12:19:34 +0200

Bonjour à tous,

C'est pas possible dans ce cas d'utiliser les \mark \markup{...} ?

My two cents

Philippe

-- 
Propulsé par l'Association Sud-Ouest.org
Plateforme Libre d'hébergement mail à prix libre
    https://www.sud-ouest.org

---

From: Seventies <[email-masked]>
Date: Fri, 17 Apr 2015 04:24:28 -0700 (MST)

C'est la solution la plus logique, mais ...
4 mouvements, 22 portées, et 5 marks au delà du I, ça décourage un peu.

Pourtant, avec Notepad++ et la possibilité de remplacement global,
l'utilisation intelligente des \tag, ça doit être faisable en un temps très
raisonnable.

Je tente ça ce soir.

Cordialement,

Jean-François

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Marque-d-avancement-I-ou-J-tp7582427p7582808.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

---

From: Philippe Neyrat <[email-masked]>
Date: Fri, 17 Apr 2015 15:02:12 +0200

Et surtout, les marks seront les mêmes sur le conducteur et les
partitions séparées.

---

From: Gilles <[email-masked]>
Date: Fri, 17 Apr 2015 19:43:57 +0200

> les graveurs de mark dans un contexte de voix, ça ne fonctionne plus,

Dans le fichier Lilypond "music-function-init.ly" la fonction \mark est  
définit de la manière suivante :

mark =
#(define-music-function
    (parser location label) ((scheme? '()))
   "Make the music for the \\mark command."
   (let* ((set (and (integer? label)
		   (context-spec-music (make-property-set 'rehearsalMark label)
				      'Score)))
	 (ev (make-music 'MarkEvent
			 'origin location)))

     (if set
	(make-sequential-music (list set ev))
	(begin
	  (set! (ly:music-property ev 'label) label)
	  ev))))

Il y a l'instruction
   (context-spec-music ...  'Score).
Il suffit de la changer par :
   (context-spec-music ...  'Staff)
en redefinissant une fonction appelée \markStaff par exemple :

%%%%%%%%%%%%%%
\version "2.18.2"
markStaff =
#(define-music-function
    (parser location label) ((scheme? '()))
   "Make the music for the \\mark command."
   (let* ((set (and (integer? label)
		   (context-spec-music (make-property-set 'rehearsalMark label)
				      'Staff)))
	 (ev (make-music 'MarkEvent
			 'origin location)))

     (if set
	(make-sequential-music (list set ev))
	(begin
	  (set! (ly:music-property ev 'label) label)
	  ev))))

musicA = \relative c'' {
   c1
   \mark \default
   %%\mark 11
   c1
}

musicB = \relative c'' {
   c1
   \mark \default
   \markStaff 11
   c1
}

   markFormatter = #format-mark-box-alphabet
}
\musicB

\score { % mark_engraver reporté dans le contexte Staff
   <<
     \new StaffGroup
     <<
       \new GrandStaff
       <<
         \staffMusic
         \musicA
   \layout {
     \context {
       \Score
       \remove "Mark_engraver"
       \remove "Volta_engraver"
       \remove "Metronome_mark_engraver"
       \remove "Staff_collecting_engraver"
     }
   }
}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

-- 
Gilles

---

From: Christophe Pochon <[email-masked]>
Date: Fri, 17 Apr 2015 21:54:49 +0200

Waow ! c'est où qu'on peut cliquer "J'aime" ?

Merci Gilles, ton message m'ouvre des perspectives insoupçonnées !

Christophe

Christophe Pochon
http://www.christophe-pochon.com

---

From: Pierre Perol-Schneider <[email-masked]>
Date: Fri, 17 Apr 2015 22:20:04 +0200

+1

Gilles, ton code a l'évidence - et la beauté -  d'un prélude de Bach.
Un grand merci pour cette leçon.
Pierre

Le 17 avril 2015 21:54, Christophe Pochon <[email-masked]> a

---

From: Seventies <[email-masked]>
Date: Sat, 18 Apr 2015 09:58:57 -0700 (MST)

Magnifique, voici une solution tout à fait élégante. Que demander de mieux.

Grand merci, Gilles

Jean-François

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Marque-d-avancement-I-ou-J-tp7582427p7582814.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

---

From: Seventies <[email-masked]>
Date: Sat, 18 Apr 2015 12:12:06 -0700 (MST)

J'ajoute que ça fonctionne du premier coup avec un minimum de modifications :
simplement le \mark 11 qui devient \markStaff 11
Notepad++ fait cela en un clin d'œil sur tous les fichiers ouverts.

Juste une remarque : il est nécessaire de garder le \mark 11 si le repère
est tantôt dans le contexte \score, tantôt dans le contexte \staff

Par exemple, un fichier de note utilisé pour la directrice et la partie
séparée.

On écrit donc
\markStaff 11
\mark 11

ou mieux encore
markK = { \markStaff 11
                \mark 11
              }

Cordialement,

Jean-François

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Marque-d-avancement-I-ou-J-tp7582427p7582815.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

---

From: Gilles THIBAULT <[email-masked]>
Date: Mon, 20 Apr 2015 00:38:37 +0200

Le samedi 18 avril 2015, 12:12:06 Seventies a écrit :
> J'ajoute que ça fonctionne du premier coup avec un minimum de modifications
> : simplement le \mark 11 qui devient \markStaff 11
Ah, désolé, j'avais en fait trouvé qu'on pouvait aussi le faire d'une autre  
manière (je ne pensais pas que ça pouvais être utile) :
  utiliser toujours \mark quelque soit le context ('Score ou 'Staff), mais 
initialiser une variable appelée markContext avec
  markContext = 'Staff.
La définition de \mark deviendrait :

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\version "2.18.2"

mark =
#(define-music-function
                      (if (defined? 'markContext) markContext 'Score))))

%%%%%%%%%%%%%%

%%% si on commente la ligne ci dessous, le context
%%% pour \mark devient 'Score
markContext = #'Staff

musicA = \relative c'' {
   c1
   \mark \default

musicB = \relative c'' {
   c1
   \mark \default

[etc ...]

%%%%%%%

Avec cette définition, on n'a plus besoin de doubler les \Mark, pour différents 
arrangements.

-- 
Gilles