lilypond-user-fr
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: colorer l'armure suite


From: address@hidden
Subject: Re: colorer l'armure suite
Date: Wed, 5 Oct 2011 10:04:53 +0200

On Oct 4, 2011, at 11:25 PM, Schermann Colette wrote:



De : "address@hidden" <address@hidden>
À : address@hidden
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 à
    address@hidden

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 à
    address@hidden

Vous pouvez contacter l'administrateur de la liste à l'adresse
    address@hidden

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 (address@hidden)
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
address@hidden
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

_______________________________________________
liste de diffusion lilypond-user-fr
address@hidden
https://lists.gnu.org/mailman/listinfo/lilypond-user-fr

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)
    (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))
           (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 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
}

reply via email to

[Prev in Thread] Current Thread [Next in Thread]