[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
Re: Comment éviter une collision pareil ?, Olivier Miakinen, 2021/07/11