lilypond-user
[Top][All Lists]
Advanced

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

Re: Tuplet number direction


From: Richard Shann
Subject: Re: Tuplet number direction
Date: Thu, 14 Apr 2016 20:03:24 +0100

On Thu, 2016-04-14 at 18:01 +0100, Richard Shann wrote:
> This looks very nice, thank you!
> I'll have to see how it interacts with the graphical slur shape tweaking
> code in Denemo.

Denemo will need some tweaking to make those shapes respond to graphical
editing, but I've added it to the Tuplets menu in Denemo as it works so
well. That way it won't get forgotten.
Once more thanks to all on the list.

Richard


> 
> Richard
> 
> On Thu, 2016-04-14 at 08:20 -0700, tisimst wrote:
> > Richard,
> > 
> > On Thu, Apr 14, 2016 at 1:53 AM, Richard Shann-2 [via Lilypond]
> > <[hidden email]> wrote:
> >         On Wed, 2016-04-13 at 23:28 +0200, Thomas Morley wrote: 
> >         > 2016-04-13 15:06 GMT+02:00 Richard Shann <[hidden email]>: 
> >         > > Thanks Abraham, that's most informative. 
> >         > > Thinking about it, I wonder if I've missed something: is
> >         there a way to 
> >         > > say typeset the tuplet bracket like a slur, with the
> >         tuplet number 
> >         > > inside? 
> >         > 
> >         > I once made the attached code. 
> >         > Maybe you can adapt it to fit your needs. 
> >         
> >         Hmm, quite a battle to get that I see! In fact your code does
> >         something 
> >         extra-fancy compared with the commonplace examples I see in
> >         old prints, 
> >         namely the tuplet number cuts into the slur. Typically the
> >         tuplet number 
> >         is inside the slur, which happened by default in LilyPond once
> >         I set the 
> >         direction. I was hoping it might be possible just to set the
> >         tuplet 
> >         number direction to be the same as a slur would be - I don't
> >         mind adding 
> >         the slur manually.
> > 
> > 
> > Here's a customized variant of Harm's function that does more of what
> > you want by moving the slur outside the TupletNumber without cutting
> > it in half. Like Simon eluded to, though, it would need some work to
> > be robust enough to be incorporated into LilyPond core. Anyway, here's
> > the function for your enjoyment:
> > 
> > 
> > %%%%%%%%%%%%%%%%
> > 
> > 
> > \version "2.18.2"
> > 
> > 
> > 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, maybe
> > 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 = #'()
> > 
> > }
> > 
> > 
> > %%%%%%%%%%%%%%%%%%% Example %%%%%%%%%%%%%%%%%%%%%
> > 
> > 
> > 
> > music = \relative c'' {
> >   \tuplet 3/2 4 { a8 b c a b c' a, b c, a' b, c }
> >   \tuplet 5/4 2 { a' b c d e a,, b c' d e }
> >   \tuplet 5/4 2 { a b c, d e a b, c d, e }
> >   \break
> > }
> > 
> > 
> > \layout {
> >   indent = 0
> >   \tupletBracketToSlur
> >   \omit Staff.TimeSignature
> > 
> >   \omit Score.BarNumber
> > }
> > 
> > 
> > 
> > \score {  
> >   { \music }
> >   \header { piece = "Default" }
> > }
> > 
> > 
> > \score {  
> >   { \tupletUp \music }
> >   \header { piece = "TupletBracket forced UP" }
> > }
> > 
> > 
> > \score {  
> >   { \tupletDown \music }
> >   \header { piece = "TupletBracket forced DOWN" }
> > }
> > 
> > 
> > \score {  
> > 
> >   { \voiceOne \music }
> >   \header { piece = "All forced UP (\voiceOne)" }
> > }
> > 
> > 
> > \score {  
> >   { \voiceTwo \music }
> >   \header { piece = "All forced DOWN (\voiceTwo)" }
> > }
> > 
> > 
> > %%%%%%%%%%%%%%%%
> > 
> > 
> > 
> > It does a pretty good job and follows the slope of the stems/beam,
> > though there are likely to be cases where the curve is not perfect
> > (like one or two in my example).
> > 
> > 
> > HTH,
> > Abraham 
> > 
> > 
> > ______________________________________________________________________
> > View this message in context: Re: Tuplet number direction
> > Sent from the User mailing list archive at Nabble.com.
> > _______________________________________________
> > lilypond-user mailing list
> > address@hidden
> > https://lists.gnu.org/mailman/listinfo/lilypond-user
> 
> 
> 
> _______________________________________________
> 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]