[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: doigté en couleur
From: |
Valentin Villenave |
Subject: |
Re: doigté en couleur |
Date: |
Mon, 25 Jul 2022 10:09:07 +0200 |
On 7/25/22, Gerard <survoje@free.fr> wrote:
> j'ose faire un petit pas en intégrant des variables
Très bonne idée ! Mais depuis quelques années (2.16 ?) on peut même
définir les variables Scheme avec la syntaxe LilyPond toute simple :
ColorFingerT = #darkblue
> J'oserai bien une petite question : comment ^ et _ sont détournés de
> leur fonction première et modifient dir ? que font ev, event-cause... ?
Reprenons la fonction pas par pas :
> \override Fingering.stencil =
> #(lambda (grob)
Ici lambda signifie : ce qui va suivre décrit une opération, qui va
s’appliquer à quelque chose que nous baptiserons "grob".
> (let* ((ev (event-cause grob))
> (txt (fingering::calc-text grob))
> (dir (ly:event-property ev 'direction)))
Ici on définit trois petites variables temporaires :
- le "grob" lui-même n’est qu’un objet graphique, si nous voulons
obtenir la direction spécifiée il faut remonter à ce qui le cause
(l’événement) dans le code Lily.
- le texte du grob lui-même, qui est calculée par la fonction
fingering::calc-text.
- la direction, liée à l’événement en question (j’ai utilisé let*
plutôt que let parce que cela me permet d’utiliser une de mes
variables temporaires dans la définition d’une variable temporaire
subséquente.
> (grob-interpret-markup
> grob
On crée un markup à l’endroit du "grob" en question.
> (case dir
> ((1) (markup #:with-color ColorFingerP #:underline #:fontsize
> Taille txt))
> ((-1) (markup #:with-color ColorFingerT #:fontsize Taille
> txt))
> ((()) txt)))))
En fonction de la valeur de "dir" (la propriété qu’on a récupérée de
l’événement qui cause le "grob", on va traiter le texte différemment.
Je ne sais pas si cela aide !
Cordialement,
-- V.