|
From: | tisimst |
Subject: | Re: always set beam outside of staff |
Date: | Thu, 8 Sep 2016 11:04:41 -0700 (MST) |
On Thu, Sep 8, 2016 at 7:26 AM, David Nalesnik <[hidden email]> wrote:
>
> \version "2.19.46"
>
> #(define my-positions
> (lambda (grob)
> (let* ((stems (ly:grob-object grob 'stems))
> (first-stem (ly:grob-array-ref stems 0))
> (dir (ly:grob-property first-stem 'direction)))
> (if (eq? dir UP)
> (cons 3.5 3.5)
> (cons -3.5 -3.5)))))
>
> {
> \override Beam.positions = #my-positions
> d'16 [ r16 d'8 ] d'16 [ r16 d'8 ]
> d'16 [ r16 d'8 ] d''16 [ r16 d''8 ]
> d''16 [ r16 d''8 ] d'16 [ r16 d''8 ]
> d''16 [ r16 d''8 ] d'''16 [ r16 d'''8 ]
>
> r16[d'' d'' d'']
> r16[d' d' d']
> }
The above sets positions to an arbitrary height outside of the staff.
We need to consider that setting might be too low/high:
\version "2.19.46"
#(define my-positions
(lambda (grob)
(let* ((default-pos (beam::place-broken-parts-individually grob)) (stems (ly:grob-object grob 'stems))
(left-pos (car default-pos))
(right-pos (cdr default-pos))
(first-stem (ly:grob-array-ref stems 0))
(dir (ly:grob-property first-stem 'direction))
(new-pos
(if (eq? dir UP)
(max 3.5 left-pos right-pos)
(min -3.5 left-pos right-pos))))
(cons new-pos new-pos))))
{
\override Beam.positions = #my-positions
d'16 [ r16 d'8 ] d'16 [ r16 d'8 ]
d'16 [ r16 d'8 ] d''16 [ r16 d''8 ]
d''16 [ r16 d''8 ] d'16 [ r16 d''8 ]
d''16 [ r16 d''8 ] d'''16 [ r16 d'''8 ]
r16[d'' d'' d'']
r16[d' f' a']
f'' d'' b' g'
\stemUp f'' d'' b' g'
\stemUp f''' d''' b'' g''
}
[Prev in Thread] | Current Thread | [Next in Thread] |