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

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

Re: Comment éviter une collision pareil ?


From: Jean Abou Samra
Subject: Re: Comment éviter une collision pareil ?
Date: Mon, 12 Jul 2021 15:35:55 +0200 (CEST)

> Le 11/07/2021 14:08, Francisco Uberto <franciscouberto@gmail.com> a écrit :
> 
> 
> C'est que j'allais dire : dans le code il faut considerer qu'il y a un quart 
> de ton, et c'est ça qui produit la collision.
> La question est : comment déplacer un petit peu vers le haut le crochet du 
> triolet ?
> 
> \relative c' {
> \tuplet 3/2 {
> f8-.\f\<
> \once \override Accidental.glyph-name-alist = #'((0 . 
> "accidentals.natural.arrowup"))
> e'!4~
> }
> e8-.\f
> }


Bonjour,

À part Y-offset, on peut aussi écrire du code Scheme
pour que le crochet de n-olet évite vraiment l'altération.
En fait, il s'agit d'un petit souci connu :

https://gitlab.com/lilypond/lilypond/-/issues/3766

Ma proposition :

\version "2.22.1"

\layout {
  \context {
    \Voice
    \consists
      #(lambda (context)
         (let ((brackets (make-hash-table))
               (ending-brackets '())
               (accidentals '()))
           (make-engraver
             (acknowledgers
               ((tuplet-bracket-interface engraver grob source-engraver)
                  (hashq-set! brackets grob #t))
               ((accidental-interface engraver grob source-engraver)
                  (set! accidentals (cons grob accidentals))))
             (end-acknowledgers
               ((tuplet-bracket-interface engraver grob source-engraver)
                  (set! ending-brackets (cons grob ending-brackets))))
             ((stop-translation-timestep engraver)
                (hash-for-each
                  (lambda (bracket dummy)
                    (for-each
                      (lambda (accidental)
                        (ly:pointer-group-interface::add-grob
                          bracket
                          'scripts
                          accidental))
                      accidentals))
                  brackets)
                (for-each
                  (lambda (bracket)
                    (hashq-remove! brackets bracket))
                  ending-brackets)
                (set! accidentals '())))))
    \override Accidental.Y-extent =
      #(grob-transformer 'Y-extent
         (lambda (grob original)
           (let* ((alteration (ly:grob-property grob 'alteration))
                  (glyph-name-alist (ly:grob-property grob 'glyph-name-alist))
                  (glyph-name (assv-ref glyph-name-alist alteration)))
             (or
               (assoc-ref
                 '(
                    ("accidentals.natural.arrowup" . (-1.4 . 2.5))
                    ; On peut ajouter d'autres entrées ici.
                  )
                 glyph-name)
               original))))
  }
}

%% Pour ajuster les dimensions pour un glyphe :
%\markup
%\box
%\with-dimensions #'(-5 . 5) #'(-1.4 . 2.5)
%\musicglyph "accidentals.natural.arrowup"

\relative c' {
  \tuplet 3/2 {
        f8-.\f\<
         \once \override Accidental.glyph-name-alist =
                 #'((0 . "accidentals.natural.arrowup"))
         e'!4~
  }
  e8-.\f
}


Inutile de dire que cela reste laborieux, et
probablement pas plus simple que de modifier
le Y-offset manuellement si le nombre de
cas reste limité dans la partition (mais cela
donne des idées pour résoudre le bug, ce qui m'a
poussé à fouiller un peu…).

Cordialement,
Jean



reply via email to

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