lilypond-user
[Top][All Lists]
Advanced

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

Re: Tuplets curved brackets?


From: Ben
Subject: Re: Tuplets curved brackets?
Date: Tue, 14 Nov 2017 06:25:24 -0500
User-agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.4.0

On 11/14/2017 5:02 AM, Menu Jacques wrote:
Hello folks,

MusicXML has the notion of curved tuplets brackets:

          <tuplet bracket="yes" line-shape="curved" number="1" type=« start"/>

Didn’t find anything in the doc nor snippets. How can that be achieved with LilyPond?

Thanks for your help!

JM




Hi,

Is this what you mean?
(see attached)

Also, what version are you using?

Here is a 2.19 option:

\version "2.19.80"


tupletBracketToSlur = {
  % Use slur-stencil
  \override TupletBracket.stencil = #ly:slur::print
  %% Use 'thickness from Slur
  \override TupletBracket.thickness = #1.2
  %% 'control-points need to be set
  \override TupletBracket.control-points =
    #(lambda (grob)
      (let* ((x-pos (ly:grob-property grob 'X-positions))
             (pos (ly:grob-property grob 'positions))
             (x-ln (interval-length x-pos))
             (dir (ly:grob-property grob 'direction))
             ;; read out the height of the TupletBracket, may be
             ;; negative!
             (height (- (cdr pos) (car pos)))
             ;; height-corr is introduced because sometimes the shape
             ;; of the slur needs to be adjusted.
             ;; It is used in the 2nd/3rd control-point.
             ;; The value of 0.3 is found by trial and error
             (height-corr (* 0.3 dir height))
             (edge-height (ly:grob-property grob 'edge-height
                           '(0.7 . 0.7)))
             (pad 1.0))
        (list
          ;; first cp
          (cons
            (+ (car x-pos) 0.5)
            (- (+ (* dir pad) (+ (car pos) (* -1 dir
                     (car edge-height))))
              (if (= dir -1)
                  (if (> height 3)
                    (/ dir 2.0)
                    0.0)
                  (if (< height -3)
                    (/ dir 2.0)
                    0.0))))
          ;; second cp
          (cons
            (+ (car x-pos) (* x-ln 1/4))
            (+ (* dir pad) (+ (car pos) (* dir (+ 0.5 height-corr)))))
          ;; third cp
          (cons
            (+ (car x-pos) (* x-ln 3/4))
            (+ (* dir pad) (+ (cdr pos) (* dir (- 0.5 height-corr)))))
          ;; fourth cp
          (cons
            (- (cdr x-pos) 0.5)
            (+ (* dir pad) (+ (cdr pos) (* -1 dir (cdr edge-height)))))
        )))
  \override TupletBracket.staff-padding = #'()
  #(define (invert-direction x) (if (eq? UP
(ly:tuplet-bracket::calc-direction x)) DOWN UP))
\override TupletBracket.direction = #invert-direction
}


\layout { \tupletBracketToSlur }

{ a a \tuplet 3/2 { a8 a a }  a4 }

Attachment: curved.png
Description: PNG image


reply via email to

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