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

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

Re: Ajout de paroles à une partition


From: Jean Abou Samra
Subject: Re: Ajout de paroles à une partition
Date: Sun, 24 Jul 2022 23:36:32 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.11.0

Le 24/07/2022 à 19:12, Valentin Villenave a écrit :
On 7/24/22, Gerard <survoje@free.fr> wrote:
C'est la première fois que je propose du code (d'après ce que m'a fourni
la liste !).
Bon, puisqu’on me qualifie de sorcier, je me sens poussé à ajouter mon
grain de sel...


Joli, Valentin ! Je n'aurais pas pensé à ce que les tirés et
poussés soient carrément indiqués par ^ ou _ .

Juste une petite question :


Déjà bravo Gérard pour ce code, j’ai quelques suggestions à ajouter :
- pour que le soulignement soit également de la couleur souhaitée, il
suffit de mettre le #:with-color avant le #:underline
- pas la peine d’indiquer une direction directement dans la fonction à
mon avis, cela permet de changer toutes les directions une fois pour
toutes avec \override TextScript.direction = #DOWN ou ce qu’on veut.
- il y a moyen de se passer des guillemets après \tire et \pousse en
lui demandant d’attendre un nombre, plutôt qu’un markup :

tire =
#(define-music-function (parser location button) (integer?)
    (make-music 'TextScriptEvent
                'text (markup #:with-color darkgreen
                              #:underline (number->string button)
                              )))

- et d’ailleurs on peut utiliser l’objet Fingering plutôt que
TextScript, mais ça devient très vite assez tordu :
https://lists.gnu.org/archive/html/lilypond-user/2010-03/msg00418.html

Ça marche mais le souligné n'est pas en couleur et ce n'est pas aligné !
Voici ce que je ferais, de façon à ne pas avoir à indiquer \tire et
\pousse mais uniquement utiliser ^ et _ dans la saisie :

%%%%

\version"2.20.0"

musique =
{
   c'^1
   d'_2
   e'_3
   f'^3
   g'_4
}

\layout {
   \context {
     \Voice
     \remove New_fingering_engraver
     \remove Fingering_engraver
   }
   \context {
     \Lyrics
     \consists Note_heads_engraver
     \consists Pitch_squash_engraver
     squashedPosition = #0
     \override NoteHead.stencil = ##f
     \override Fingering.stencil =
     #(lambda (grob)
        (let* ((ev (event-cause grob))
               (txt (fingering::calc-text grob))
               (dir (ly:event-property ev 'direction)))
          (ly:grob-set-property! grob 'direction 0)
          (grob-interpret-markup
           grob
           (case dir
             ((1) (markup #:with-color darkgreen #:underline txt))
             ((-1) (markup #:with-color darkred txt))
             ('() txt)))))


Vu que '() est un raccourci pour (quote ()), cette branche s'exécute
si dir est soit la liste vide, soit le symbole 'quote… C'est voulu ?
J'aurais mis

((()) txt)

Et sinon, comme le signale Gérard, il y a un petit ennui qui se
profile en 2.22 car l'absence de direction provoque un avertissement
dans le Y-offset (avertissement que j'ai d'ailleurs supprimé en 2.23).
On peut arranger ça avec

\version "2.22.2"

\layout {
  \context {
    \Voice
    \override Fingering.before-line-breaking =
    #(lambda (grob)
       (ly:grob-set-property! grob 'Y-offset -5.5))
    \override Fingering.stencil =
    #(lambda (grob)
       (let* ((ev (event-cause grob))
              (txt (fingering::calc-text grob))
              (dir (ly:event-property ev 'direction)))
         (grob-interpret-markup
          grob
          (case dir
            ((1) (markup #:with-color darkgreen #:underline txt))
            ((-1) (markup #:with-color darkred txt))
            ((()) txt)))))
  }
}


{
  c'^1
  d'_2
  e'_3
  f'^3
  g'_4
}


(Au passage, j'ai simplifié d'une manière qui se passe
du Lyrics.)


Cordialement,
Jean





reply via email to

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