Subject: colorer l'armure suite

From: Schermann Colette <[email-masked]>
Date: Tue, 4 Oct 2011 22:25:39 +0100 (BST)

________________________________
De : "[email-masked]" <[email-masked]>
À : [email-masked]
Envoyé le : Mardi 4 Octobre 2011 18h00
Objet : Lot lilypond-user-fr, Vol 270, Parution 1

----- Mail transféré -----

Envoyez vos messages pour la liste lilypond-user-fr à
    [email-masked]

Pour vous (dés)abonner par le web, consultez
    https://lists.gnu.org/mailman/listinfo/lilypond-user-fr

ou, par email, envoyez un message avec 'help' dans le corps ou dans le
sujet à
    [email-masked]

Vous pouvez contacter l'administrateur de la liste à l'adresse
    [email-masked]

Si vous répondez, n'oubliez pas de changer l'objet du message afin
qu'il soit plus spécifique que "Re: Contenu du digest de
lilypond-user-fr..."

Thèmes du jour :

   1. colorer l'armure (Schermann Colette)
   2. Re: colorer l'armure ([email-masked])

Bonjour à tous!

Est-ce que quelqu'un pourrait me dire comment faire pour avoir les dieses à l'armure chacun d'une couleur différente?

Je peux les avoir tous de la même couleur avec:

\override Staff.KeySignature #'color = # (x11-color 'red)
\key d \major

Mais je ne sais pas comment les mettre en couleur chacun séparément

Peut-être en utilisant:

\set Staff.keySignature = #`((3 . ,SHARP) (0 . ,SHARP))

mais comment définir la couleur de chaque diese?

Merci d'avance

Colette
On Oct 4, 2011, at 2:40 PM, Schermann Colette wrote:

Bonjour à tous!
>
>
>Est-ce que quelqu'un pourrait me dire comment faire pour avoir les dieses à l'armure chacun d'une couleur différente?
>
>
>Je peux les avoir tous de la même couleur avec:
>
>
>\override Staff.KeySignature #'color = # (x11-color 'red)
>\key d \major
>
>
>Mais je ne sais pas comment les mettre en couleur chacun séparément
>
>
>Peut-être en utilisant:
>
>
>\set Staff.keySignature = #`((3 . ,SHARP) (0 . ,SHARP))
>
>
>
>mais comment définir la couleur de chaque diese?
>
>
>Merci d'avance
>
>
>Colette

Bonjour Colette,

C'est un peu approximatif comme solution (l'espacement horizontal ne marche pas pour toutes les armures), mais voilà :

\version "2.14.0"

#(define (colorator grob)
  (define (helper stencil colors alts cpos is-cancel padding-pairs gna fm inter padding lastpos lgname)
    (if (null? alts)
        stencil
        (let* ((pos (key-signature-interface::alteration-position (caar alts) (cdar alts) cpos))
               (gname (assoc-get (if is-cancel 0 (cdar alts)) gna))
               (handle (assoc-get (cons gname lgname) padding-pairs #f)))
          (helper (ly:stencil-combine-at-edge
                    stencil
                    X
                    LEFT
                    (stencil-with-color
                      (ly:stencil-translate-axis (ly:font-get-glyph fm gname) (* inter pos) Y)
                      (car colors))
                    (cond
                      (handle
                        (cdr handle))
                      ((and (equal? gname "accidentals.natural") (< lastpos (+ pos 2)) (> lastpos (- pos 6)))
                        (+ padding 0.3))
                      (else padding)))
               (cdr colors) (cdr alts) cpos is-cancel padding-pairs gna fm inter padding pos gname))))
  (let* ((cpos (ly:grob-property grob 'c0-position))
         (is-cancel (grob::has-interface grob 'key-cancellation-interface))
         (padding-pairs (ly:grob-property grob 'padding-pairs))
         (gna (ly:grob-property grob 'glyph-name-alist))
         (alts (ly:grob-property grob 'alteration-alist))
         (colors (map (lambda (x) black) alts))
         (colors (cons red (cdr colors)))
         (fm (ly:grob-default-font grob))
         (inter (* 0.5 (ly:staff-symbol-staff-space grob)))
         (padding (ly:grob-property grob 'padding 0)))
    (helper empty-stencil colors alts cpos is-cancel padding-pairs gna fm inter padding -1000 "")))

\relative c' {
  \override Staff . KeySignature #'stencil = #colorator
  \key f \major fis1 \key des \major des1
}

Il suffit de changer la liste "colors" pour que ça convienne aux couleurs que tu veux utiliser.  Si tu as besoin d'un coup de main avec Scheme, dis moi (nous) et je peux te donner quelques conseils.

Cordialement,
~Mike
_______________________________________________
liste de diffusion lilypond-user-fr
[email-masked]
https://lists.gnu.org/mailman/listinfo/lilypond-user-fr

Mille mercis pour la réponse super rapide!

Ca marche, mais je n'arrive qu'à avoir deux couleurs, je ne sais pas comment ajouter des couleurs dans la liste "colors"
C'est vrai que ça m'intéresserait énormément de savoir faire ça moi-même, mais il faudrait que je vienne à un des WE que vous organisez à Paris. Si je le sais à l'avance je pourrai peut-être m'organiser (plutôt Paris que Lyon pour moi)

En attendant si vous avez des adresses internet où je peux apprendre quelques trucs...

Cordialement,

Colette

---

From: "[email-masked]" <[email-masked]>
Date: Wed, 5 Oct 2011 10:04:53 +0200

> Il suffit de changer la liste "colors" pour que ça convienne aux couleurs que tu veux utiliser.  Si tu as besoin d'un coup de main avec Scheme, dis moi (nous) et je peux te donner quelques conseils.

Bertrand et moi sommes très enthousiasmés par toutes les réponses positives par rapport aux journées de travail à Paris et je me sens un peu con de ne pas avoir anticipé l'intérêt que l'appel à participation continue à générer.  Il y aura certainement plus de journées comme ça, et avec une fréquence plus régulière j'espère, pour que tout le monde puisse s'entraider en direct.

La meilleure adresse Internet est toujours www.lilypond.org.  Si tu parcours la doc sur les tweaks avancés, tu verras plusieurs choses qui pourraient t'être utiles.
Sinon, pour tout ce qui est Scheme, la doc de guile (http://www.gnu.org/s/guile/) est très bien faite.

Pour avoir plus de contrôle sur la gestion des couleurs, il suffit d'emballer la première fonction dans une deuxième qui ne prend qu'une liste de couleurs.  Tu appelles cette fonction lors de l'override, et elle crée la fonction intérieure qui utilisera ta liste.  Par exemple, pour colorer le la bémol dans re bémol majeur, il suffit de passer une liste avec le troisième élément (et donc la troisième altération) en ta couleur préférée et les autres en noir (voir ci-dessous).

Cordialement,
~Mike

\version "2.14.0"

#(define (colorator clist)
  (lambda (grob)
      (helper empty-stencil clist alts cpos is-cancel padding-pairs gna fm inter padding -1000 ""))))

\relative c' {
  \key f \major fis1
  \once \override Staff . KeySignature #'stencil = #(colorator (list black black red black black))
  \key des \major des1
}

---

From: Schermann Colette <[email-masked]>
Date: Wed, 5 Oct 2011 22:24:58 +0100 (BST)

________________________________
De : "[email-masked]" <[email-masked]>
À : Schermann Colette <[email-masked]>
Cc : "[email-masked]" <[email-masked]>
Envoyé le : Mercredi 5 Octobre 2011 10h04
Objet : Re: colorer l'armure suite

Cordialement,
~Mike

\version "2.14.0"

\relative c' {
  \key f \major fis1

_____________________________________________________________________________
Merci pour les adresses et la nouvelle fonction
 Je n'ai pas tout compris, mais ça marche plutôt bien jusqu'à 2 altérations, à partir de 3 elles se mettent sur la clef
(J'utilise la version 2.14.2, je ne sais pas si ça joue?)
si vous voulez jeter un oeil à ces essais:

\relative c' {
  \once \override Staff . KeySignature #'stencil = #(colorator (list 
  (x11-color 'coral)  blue (x11-color 'gold) (x11-color 'DarkOrchid) darkgreen red (x11-color 'MediumTurquoise)))
  \key cis \major des1
}
\relative c' {
\key g \major g'1
  \override Staff . KeySignature #'stencil = #(colorator (list 
  (x11-color 'coral)  blue (x11-color 'gold) (x11-color 'DarkOrchid) darkgreen red (x11-color 'MediumTurquoise)))
  \key cis \major des'1 \break
  \key a \major a

}

\relative c' {
  \override Staff . KeySignature #'stencil = #(colorator (list 
  (x11-color 'coral)  blue (x11-color 'gold) (x11-color 'DarkOrchid) darkgreen red (x11-color 'MediumTurquoise)))
   \key ces \major des1 \break
   \key ges \major f

}

Cordialement, 

Colette