Subject: Colorer un bout de partition

From: Bernard Meylan <[email-masked]>
Date: Thu, 22 Dec 2022 13:21:00 +0100

Bonjour!

Un bout de page manquant dans une édition originale, je cherche à rendre 
visible en gris les mesures «complétées» pour reprendre ensuite la 
coloration normale en noir.

J'ai utilisé:

\override Staff.StaffSymbol.color = #(x11-color 'grey60)
   \override Staff.TimeSignature.color = #(x11-color 'grey60)
   \override Staff.Clef.color = #(x11-color 'grey60)
   \override Voice.NoteHead.color = #(x11-color 'grey60)
   \override Voice.Stem.color = #(x11-color 'grey60)
   \override Staff.BarLine.color = #(x11-color 'grey60)

Il en manque encore pour les ligatures, les altérations et les ajouts 
(ficta). Mais est-il possible d'avoir un \override qui colorerait tous 
les éléments d'un coup?

Bernard

---

From: Gerard <[email-masked]>
Date: Thu, 22 Dec 2022 13:29:44 +0100

Bonjour Bernard,

J'ai ça dans mes affaires depuis la 20.0, transmis par Jean ou Valentin...

Pour moi c'est sorcellerie, mais ça marche !

#(define (override-color-for-all-grobs color)
   (lambda (context)
    (let loop ((x all-grob-descriptions))
     (if (not (null? x))
      (let ((grob-name (caar x)))
       (ly:context-pushpop-property context grob-name 'color color)
       (loop (cdr x)))))))

couleur = {\applyContext #(override-color-for-all-grobs (x11-color 'blue))
}
pascouleur = {\applyContext #(override-color-for-all-grobs (x11-color 
'black))
}

Si ça peut te servir, et si ça reste adapté !

Cordialement

Gérard

Le 22/12/2022 à 13:21, Bernard Meylan a écrit :
> Bonjour!
>
> Un bout de page manquant dans une édition originale, je cherche à 
> rendre visible en gris les mesures «complétées» pour reprendre ensuite 
> la coloration normale en noir.
>
> J'ai utilisé:
>

---

From: Jean Abou Samra <[email-masked]>
Date: Thu, 22 Dec 2022 13:29:55 +0100

> (ficta). Mais est-il possible d'avoir un \override qui colorerait tous 

Bonjour,

Il y a des snippets pour cela dans la LSR :

https://lsr.di.unimi.it/LSR/Item?id=443
https://lsr.di.unimi.it/LSR/Item?id=985

À part cela, une autre possibilité apparue en version 2.24, même si
ce n'est pas tout à fait ce que vous demandez au départ :

\version "2.24.0"

{
   c'4 d' e' f'
   \staffHighlight #(x11-color 'grey85)
   g' f' e' d'
   \stopStaffHighlight
   c' d' e' d'
}

Cordialement,
Jean

---

From: Bernard Meylan <[email-masked]>
Date: Thu, 22 Dec 2022 13:44:50 +0100

Bonjour Jean!

> https://lsr.di.unimi.it/LSR/Item?id=985

J'ai essayé le premier (le second ne correspond pas à ce que j'aimerais) 
et avec ma version (2.24) contrairement à ce qui est écrit 
(all-grob-descriptions) et à l'exemple du snippet:

les barres de mesures, les lignes de la portée, l'armure, la métrique et 
la clé

ne sont pas colorées.

Bernard

---

From: Jean Abou Samra <[email-masked]>
Date: Thu, 22 Dec 2022 14:11:52 +0100

Le 22/12/2022 à 13:44, Bernard Meylan a écrit :
> J'ai essayé le premier (le second ne correspond pas à ce que 
> j'aimerais) et avec ma version (2.24) contrairement à ce qui est écrit 
> les barres de mesures, les lignes de la portée, l'armure, la métrique 
> et la clé
>
> ne sont pas colorées.
>

C'est sûrement lié au fait que vous ne mettez pas la commande au
début de la partition. \applyContext s'applique au contexte de plus
bas niveau en cours. Au début, les Staff et Voice ne sont pas encore
créés, mais ensuite, si, donc le \applyContext ne s'applique qu'au
niveau Voice. Pour changer cela, il faut mettre juste devant :
\context Staff.

Pour colorier la portée, il faut aussi créer un nouvel objet de
portée avec \stopStaff \startStaff, sinon on a un seul objet
qui ne peut pas avoir plusieurs couleurs.

\version "2.24.0"

#(define (override-color-for-all-grobs color)
   (lambda (context)
     (for-each
      (lambda (desc)
        (let ((grob-name (car desc)))
          (ly:context-pushpop-property context grob-name 'color color)))
      all-grob-descriptions)))

\relative c' {
   c'1
   \context Staff \applyContext #(override-color-for-all-grobs 
(x11-color 'blue))
   \stopStaff \startStaff
   c4\pp\< d e f
   \break
   \grace { g16[( a g fis]) } g1\ff\!
   \context Staff \applyContext #(override-color-for-all-grobs "black")
   \stopStaff \startStaff
   c'1
}

Cordialement,
Jean

---

From: Bernard Meylan <[email-masked]>
Date: Thu, 22 Dec 2022 14:47:30 +0100

Merci Jean, c'est exactement le résultat escompté. Et merci aussi à 
Gérard: tes raccourcis sont au poil!

Amitiés.

Bernard