Subject: Symboles de silence dans les ChordNames

From: Jean Abou Samra <[email-masked]>
Date: Mon, 6 Jun 2022 14:37:20 +0200

Bonjour Olivier,

Hier en voiture, en rentrant de la fondue Lily, tu demandais s'il
était possible d'afficher de vraies pauses dans les ChordNames
plutôt que « N.C. ». Je ne m'en suis pas rendu compte sur le
moment, mais en fait il suffit tout simplement d'ajouter les graveurs
qui vont bien.

\version "2.22.2"

\layout {
   \context {
     \ChordNames
     noChordSymbol = ##f
     \consists Rest_engraver
     \override Rest.staff-position = 2
     \consists Multi_measure_rest_engraver
     \override MultiMeasureRest.staff-position = 2
   }
}

<<
   \chords { c1:m r4 c4:m7 r8 c4:m7-9 r8 r2 c2 R1 }
   { c'1 1 1 1 }

Cordialement,
Jean

---

From: Vincent Gay <[email-masked]>
Date: Mon, 6 Jun 2022 19:51:30 +0200

> moment, mais en fait il suffit tout simplement d'ajouter les graveurs

Yep, ben justement je me demandais quel(s) graveur il faut pour pouvoir
rajouter un point d'orgue sur un nom d'accord.

Merci d'avance

--
Vincent Gay
Envoyé depuis mon saxo-phone :)
https://myrealbook.vintherine.org/ - http://photos.vintherine.org/

---

From: Jean Abou Samra <[email-masked]>
Date: Mon, 6 Jun 2022 20:08:35 +0200

Le 06/06/2022 à 19:51, Vincent Gay a écrit :
> Yep, ben justement je me demandais quel(s) graveur il faut pour
> pouvoir rajouter un point d'orgue sur un nom d'accord.
>
> Merci d'avance

Le Script_engraver, plus un graveur personnalisé écrit en Scheme :-)

\version "2.22.2"

\layout {
   \context {
     \ChordNames
     \consists Script_engraver
     \consists Text_engraver
     \consists
       #(lambda (context)
          (let ((chord-name #f)
                (scripts '()))
            (make-engraver
             (acknowledgers
              ((chord-name-interface engraver grob source-engraver) ;;
détecte les ChordName
               (set! chord-name grob))
              ((script-interface engraver grob source-engraver) ;;
détecte les Script
               (set! scripts (cons grob scripts))))
             ((stop-translation-timestep engraver)
              (if chord-name
                  (for-each
                    (lambda (s)
                      ;; Le ChordName devient parent du Script...
                      (ly:grob-set-parent! s X chord-name)
                      (ly:grob-set-parent! s Y chord-name)
                      ;; ... et c'est contre lui que le Script se
positionne.
                      (ly:pointer-group-interface::add-grob s
'side-support-elements chord-name))
                    scripts))
              (set! chord-name #f)
              (set! scripts '())))))
     %% Réglage de la distance entre le nom d'accord et le script
     \override Script.padding = 1.2
   }
}

\new ChordNames { c1^"abc" c1\fermata }

Ça te paraît être quelque chose de souhaitable par défaut ?
Je peux l'ajouter comme feature request sur
https://gitlab.com/lilypond/lilypond/-/issues

Cordialement,
Jean

---

From: Vincent Gay <[email-masked]>
Date: Mon, 6 Jun 2022 20:17:07 +0200

> Le Script_engraver, plus un graveur personnalisé écrit en Scheme :-)

Arf, je ne risquais pas d'y arriver tout seul. J'ai rajouté ça à
ChordGrid et c'est nickel. Merci.

---

From: Ya Gloops <[email-masked]>
Date: Mon, 6 Jun 2022 19:37:41 +0000 (UTC)

Le New ChordNames n'est il pas sensé être aussi en \chordmode pour entrer des accords "c1:maj par exemple" ?
Auquel cas le script " c1^"abc" ne fonctionne plus...

\layout {
  \context {
    \ChordNames
    \consists Script_engraver
    \consists Text_engraver
    \consists
      #(lambda (context)
         (let ((chord-name #f)
               (scripts '()))
           (make-engraver
            (acknowledgers
             ((chord-name-interface engraver grob source-engraver) ;; détecte les ChordName
              (set! chord-name grob))
             ((script-interface engraver grob source-engraver) ;; détecte les Script
              (set! scripts (cons grob scripts))))
            ((stop-translation-timestep engraver)
             (if chord-name
                 (for-each
                   (lambda (s)
                     ;; Le ChordName devient parent du Script...
                     (ly:grob-set-parent! s X chord-name)
                     (ly:grob-set-parent! s Y chord-name)
                     ;; ... et c'est contre lui que le Script se positionne.                     
                     (ly:pointer-group-interface::add-grob s 'side-support-elements chord-name))
                   scripts))
             (set! chord-name #f)
             (set! scripts '())))))
    %% Réglage de la distance entre le nom d'accord et le script
    \override Script.padding = 0.5
  }
}

\new ChordNames \chordmode  {c1^"abc"  c1:maj\fermata }

Gilles

Le lundi 6 juin 2022, 20:09:34 UTC+2, Jean Abou Samra <[email-masked]> a écrit : 

\version "2.22.2"

\layout {
  \context {
    \ChordNames

Cordialement,

Jean

---

From: Jean Abou Samra <[email-masked]>
Date: Mon, 6 Jun 2022 21:38:46 +0200

> Auquel cas le script " c1^"abc" ne fonctionne plus...

Ah oui, intéressant. C'est un problème de syntaxe, lié au
fait que le « ^ » et le « - » ont déjà un autre sens en \chordmode.
Par contre, il reste possible d'utiliser « _ » . Pour placer
du texte au-dessus de l'accord, on peut quand même faire

\new ChordNames \chordmode { c1\tweak direction #UP _\markup "abc"
c1:maj\fermata }

Cordialement,
Jean

---

From: Ya Gloops <[email-masked]>
Date: Mon, 6 Jun 2022 19:43:23 +0000 (UTC)

Bravo Jean !

Le lundi 6 juin 2022, 21:38:41 UTC+2, Jean Abou Samra <[email-masked]> a écrit : 

c1:maj\fermata }

Cordialement,
Jean