lilypond-user
[Top][All Lists]
Advanced

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

Re: Issue on vertical spacing of a TupletBracket


From: Paolo Prete
Subject: Re: Issue on vertical spacing of a TupletBracket
Date: Fri, 10 Dec 2021 18:53:54 +0100

Thank you too for the tip,

Unfortunately, it seems to produce weird results in some cases, For example: I can't set the 'padding' property in a consistent way. See the snippet below (and please, give me a feedback, so the gitlab page can be updated, if needed).
It appears to me that there is a conceptual contradiction in the TupletBracket itself: it is defined as a non-outside-staff object as default, but it requires the avoid-collision props of the outside-staff objects as well. I can understand that there are scores in which brackets are inside staves (I don't like this choice TBH, I think it visually messes up the score), but in case the notation doesn't require this constraint, like my case, putting the bracket outside the score, with a proper barrier around it, seem to solve all the issues.
Note that a TupletBracket should have an unbalanced barrier (no space or few space above it, some space below it), which is not possible with outside-staff-padding but it is possible with the function that Aaron wrote some time ago (just create a white box):

https://lists.gnu.org/archive/html/lilypond-user/2020-02/msg00202.html

Best,
P

%%%%%
(define (Tuplet_accidental_support_engraver 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 '())))))

\layout {
   \context {
     \Voice
     \consists #Tuplet_accidental_support_engraver
   }
}


%%%%%
{
\time 5/4
\override TupletBracket.direction = #UP
\override TupletBracket.padding = 0
\tuplet 3/2 { a'' a'' a''}
\revert TupletBracket.padding
s
\tuplet 3/2 { \once \hide Accidental a'' a'' ais''}

\override TupletBracket.padding = 0
\tuplet 3/2 { a'' a'' a''}
s
\tuplet 3/2 { \once \hide Accidental a'' a'' a''}
}
%%%%%


On Fri, Dec 10, 2021 at 10:09 AM Jean Abou Samra <jean@abou-samra.fr> wrote:
Le 10/12/2021 à 01:13, Paolo Prete a écrit :
> Hello,
>
> please look at this snippet (tested with 2.22.0):
>
> %%%%%
> {
> \time 5/4
> \override TupletBracket.direction = #UP
> \tuplet 3/2 { a'' a'' ais''-.}
> s
> \tuplet 3/2 { \once \hide Accidental a'' a'' ais''}
> }
> %%%%%
>
> As you can see, the vertical gap between the staccato dot and the
> tuplet bracket is shorter than the gap between the same bracket and
> the accidental; however, this is not taken into account and the result
> is visually faulty.
> Is there a way to fix this?


Try the workaround given here:

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


\version "2.22.1"

#(define (Tuplet_accidental_support_engraver 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 '())))))

\layout {
   \context {
     \Voice
     \consists #Tuplet_accidental_support_engraver
   }
}


%%%%%
{
\time 5/4
\override TupletBracket.direction = #UP
\tuplet 3/2 { a'' a'' ais''-.}
s
\tuplet 3/2 { \once \hide Accidental a'' a'' ais''}
}
%%%%%


Best,
Jean

reply via email to

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