Subject: annotation sur un groupe de silence

From: Christian LE BARS <[email-masked]>
Date: Thu, 9 Sep 2021 22:42:43 +0200

Bonsoir a tous.

ci dessous un très court extrait d'une partition ou le mark\markup est 
trop a gauche comment faire pour le décalé

f'4 c f r
   \mark\markup" D.S. segno al coda"\compressMMRests{R1*12}\bar"||"\break
   des4\coda

par avance merci

---

From: Jean Abou Samra <[email-masked]>
Date: Thu, 9 Sep 2021 22:52:44 +0200

>   \mark\markup" D.S. segno al coda"\compressMMRests{R1*12}\bar"||"\break

Comme ceci :

{
   f'4 c f r
   \once \override Score.RehearsalMark.self-alignment-X = -0.8
   \mark\markup" D.S. al coda"\compressMMRests{R1*12}\bar"||"\break
   des4\coda
}

(« D.S. » veut dire « Dal Segno » donc pas besoin de répéter « segno ».)

Dans la documentation, voir

https://lilypond.org/doc/v2.23/Documentation/notation/aligning-objects.fr.html#using-the-self_002dalignment_002dinterface

Cordialement,
Jean

---

From: Olivier Miakinen <[email-masked]>
Date: Fri, 10 Sep 2021 07:24:31 +0200

Bonjour,

Je voudrais profiter de cette question de Christian et de la réponse de
Jean pour poser une question un peu plus générale.

Le 09/09/2021 à 22:42, Christian LE BARS avait demandé :
>> le mark\markup est trop a gauche comment faire pour le décaler

>    \once \override Score.RehearsalMark.self-alignment-X = -0.8

Ça veut dire qu'en partant de la commande \mark il faut trouver :
1) que l'objet est un RehearsalMark ;
2) qu'il est dans l'objet Score ;
3) que la propriété cherchée est self-alignment-X ;
4) qu'on la modifie par un \override ;
5) et qu'on sépare la propriété de la valeur par un signe « = ».

À moins d'avoir une mémoire d'éléphant, comment faire en pratique
pour retrouver toutes ces infos dans la doc ? Par exemple comment
je fais pour une note, pour une altération, pour une nuance, pour
une indication de tempo, etc., pour changer son aspect, sa
position, son orientation et ainsi de suite ?

Cordialement,
-- 
Olivier

---

From: Christophe Pochon <[email-masked]>
Date: Fri, 10 Sep 2021 09:07:04 +0200

Bonjour,

Il y a pas mal d'explications ici :
http://lilypond.org/doc/v2.22/Documentation/notation/modifying-properties

Bonne journée

Christophe Pochon

---

From: Christian LE BARS <[email-masked]>
Date: Fri, 10 Sep 2021 10:32:50 +0200

Bonjour a tous.

Merci Jean.

C'est parfait .

Quelle rapidité!

---

From: Jean Abou Samra <[email-masked]>
Date: Fri, 10 Sep 2021 11:03:27 +0200

Bonjour Olivier et Christophe,

Le 10/09/2021 à 09:07, Christophe Pochon a écrit :
> <http://lilypond.org/doc/v2.22/Documentation/notation/modifying-properties>

Tout à fait, et aussi une section dédiée dans le tutoriel :

http://lilypond.org/doc/v2.23/Documentation/learning/properties-of-layout-objects

> 1) que l'objet est un RehearsalMark ;

Chaque section du manuel de notation possède des liens vers
la références des propriétés internes. En l'occurrence,
il faut s'intéresser à la documentation de la
commande \mark :

https://lilypond.org/doc/v2.23/Documentation/notation/writing-text#text-marks

À la toute fin, la sous-section « Voir aussi » mentionne
RehearsalMark.

> 2) qu'il est dans l'objet Score ;

Cela se voit en deux temps :

- Sur https://lilypond.org/doc/v2.23/Documentation/internals/rehearsalmark,
   on voit que RehearsalMark est créé par le Mark_engraver,
- En allant voir
https://lilypond.org/doc/v2.23/Documentation/internals/mark_005fengraver,
   on lit que le Mark_engraver fait partie par défaut
   du contexte Score.

> 3) que la propriété cherchée est self-alignment-X ;

Pour cela, on regarde les propriétés de RehearsalMark
(toujours dans la références des propriétés internes)
et on trouve directement self-alignment-X avec une
explication. On peut aussi parcourir la liste des
interfaces et voir si elles n'ajoutent pas des propriétés
intéressantes pour lesquelles le grob n'aurait pas
de valeur par défaut (la page du grob montre
seulement les valeurs par défaut).

> 5) et qu'on sépare la propriété de la valeur par un signe « = ».

Toutes les propriétés de grob se modifient par \override
ou par \tweak. Quant aux propriétés de contexte, elle
se modifient avec \set.

En règle générale, on peut utiliser soit \override,
soit \tweak. Avec \override, il faut mettre un signe
« = », mais pas avec \tweak, qui est une commande beaucoup
plus raccourcie puisque l'on peut même omettre le nom de
l'objet. En l'occurrence, \tweak aurait tout aussi bien
fonctionné :

{
   f'4 c f r
   \tweak self-alignment-X -0.8 \mark\markup" D.S. al coda"
   \compressMMRests{R1*12}\bar"||"\break
   des4\coda
}

Je l'accorde, la différence entre \override et \tweak
peut porter à confusion. Ce sont des commandes assez
différentes. \override porte sur une étape temporelle
entière, pour tous les objets créés lors de cette étape,
par exemple toutes les notes d'un accord. \tweak agit
sur tous les grobs qui ont été créés à partir d'un
certain événement dans la musique, ce qui permet entre
autres de retoucher une note individuelle au milieu
d'un accord.

Si on ne veut pas s'embêter avec la question du signe
égale ou pas, une option est de se passer de \tweak
en la remplaçant par \single \override, qui agit
en fait comme \tweak, mais avec la syntaxe de \override.

\relative c' {
   \override NoteHead.color = red
   <c e g>
   <c e g>
   \once \override NoteHead.color = blue
   <c e g>
   <c e g>
   <c \single \override NoteHead.color = green e g>
}

> position, son orientation et ainsi de suite ?

La bonne nouvelle, c'est que toute cette procédure sert
essentiellement aux cas les plus complexes. Un bon nombre
de retouches courantes sont regroupées dans ces deux
sections :

https://lilypond.org/doc/v2.23/Documentation/notation/useful-concepts-and-properties
https://lilypond.org/doc/v2.23/Documentation/notation/advanced-tweaks

En l'occurrence, on trouve des exemples de self-alignment-X ici :

https://lilypond.org/doc/v2.23/Documentation/notation/aligning-objects#using-the-self_002dalignment_002dinterface

Même si cela ne s'applique pas à ce cas particulier,
on trouve souvent ce que l'on veut par une simple
recherche dans la LSR (https://lsr.di.unimi.it/LSR/Search).

J'espère que ceci éclaire la question.

Cordialement,
Jean

---

From: Christian LE BARS <[email-masked]>
Date: Fri, 10 Sep 2021 11:14:38 +0200

Bonjour à tous.

et oui olivier nous n'avons plus notre mémoire de 20 ans!

nous sommes de la même génération. et en plus, Jean nous explique 
comment il faut chercher dans la doc.

Nous avons la chance de l'avoir, profitons en.

Mais il y a d'autres avantages à nos ages, que Jean connaîtra plus tard.

Merci également à Christophe ces remarques sont toujours justes et 
pertinentes.

Le 10/09/2021 à 11:03, Jean Abou Samra a écrit :
> - Sur 
> https://lilypond.org/doc/v2.23/Documentation/internals/rehearsalmark,

---

From: Jean Abou Samra <[email-masked]>
Date: Fri, 10 Sep 2021 21:40:27 +0200

> 1) que l'objet est un RehearsalMark ;

Au fait, encore une chose : dans Frescobaldi, on peut
compiler depuis Tools > Viewers > Layout Control Options
et il y a une option pour afficher les noms des grobs
sur la partition.

C'est un peu limité, car cela ne fonctionne que dans Voice.
Je joins une version à ma sauce qui annote tous les
grobs et affiche avec chacun le nom du contexte dans lequel
il a été créé (ce code devrait aussi être plus robuste pour…
les RehearsalMark, justement). De plus, elle permet de
se restreindre aux grobs d'une étape temporelle (commande à
placer juste avant le code qui cloche) pour éviter de surcharger
excessivement la partition. Voici comment s'en servir :

\version "2.22.1"

\include "display-grob-names.ly"

\markup \vspace #10

{
   R1
   \once \showGrobNames
   \mark \default
   c4 d e8 f g a
}

Qu'en pensez-vous ? Car si c'est jugé utile, je peux
éventuellement l'affiner et en faire un patch pour
l'ajouter à LilyPond.

Cordialement,
Jean

> et oui olivier nous n'avons plus notre mémoire de 20 ans!

Vous savez, si vous voyiez la mémoire que j'ai dans
la vie courante… :D

---

From: Olivier Miakinen <[email-masked]>
Date: Sat, 11 Sep 2021 12:53:12 +0200

Bonjour,

Le 10/09/2021 07:24, j'écrivais :
> 
> comment faire en pratique pour retrouver toutes ces infos dans la doc ?

J'ai l'habitude de lire et comprendre complètement les réponses qui me
sont faites avant d'y répondre et de remercier, mais là il y a tellement
de choses à lire que j'ai peur de paraitre impoli si j'attends de tout
assimiler.

Alors d'avance merci à Christophe et à Jean, et je répondrai de nouveau
plus tard (en particulier à propos de \showGrobNames qui me semble
effectivement être une bonne idée).

Cordialement,
-- 
Olivier