lilypond-user
[Top][All Lists]
Advanced

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

Re: Tuplets curved brackets?


From: Jacques Menu Muzhic
Subject: Re: Tuplets curved brackets?
Date: Tue, 14 Nov 2017 12:57:21 +0100

Hello Ben,

Yes, that’s the solution I was looking for, thanks so much!

JM

> Le 14 nov. 2017 à 12:25, Ben <address@hidden> a écrit :
> 
> 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 } 
> <curved.png>_______________________________________________
> lilypond-user mailing list
> address@hidden
> https://lists.gnu.org/mailman/listinfo/lilypond-user




reply via email to

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