Am Fr., 26. Okt. 2018 um 23:52 Uhr schrieb David Sumbler <da...@aeolia.co.uk>:
> But as things are the break here is still unsatisfactory > because the semiquaver just after the break has 2 long beams stretching > back to the start of the line, whereas one would ideally want 1 long > beam and a short one. I haven't managed to figure out how this can be > changed: any ideas would be welcome. A minimal would be: \paper { indent = 0 ragged-right = ##t } { \override Beam.breakable = ##t s2. s8 c'8[ \break c'16] } Not sure I'd call it a bug. But I'd love to have a method to change this behaviour easily, currently there's none. Though, you can dive into Beam deeply and reset 'beam-segments with custom values. Leading to: \version "2.19.81" \paper { indent = 0 ragged-right = ##t } shortenBrokenBeams = #(define-music-function (amount)(number-list?) " Shorten broken Beams after line-break. We get the 'beam-segments, rebuilding it modified. The 'beam-segments-property is an alist of type: '(((vertical-count . 0) (horizontal 3.865018 . 5.93)) ((vertical-count . 1) (horizontal 3.865018 . 5.93))) `vertical-count' is the beam-count. `horizontal' is the X-extent relative to 'System's 'line-width. Applying it only if the left-bound of the 'Beam is 'NonMusicalPaperColumn, i.e after a line-break. Affecting a broken Beam at line-end is possible, too, but not yet coded. " #{ \override Beam.beam-segments = #(lambda (grob) (let* ((beam-segments (ly:beam::calc-beam-segments grob)) (rebuild-beam-segments-proc (lambda (vertical-count horizontal shorten) (cons (cons 'vertical-count vertical-count) (list (cons 'horizontal (cons (- (car horizontal) shorten) (cdr horizontal)))))))) (if (eq? (grob::name (ly:spanner-bound grob LEFT)) 'NonMusicalPaperColumn) (begin (let* ((horizontals (map (lambda (x) (assoc-get 'horizontal x)) beam-segments)) (vertical-counts (map (lambda (x) (assoc-get 'vertical-count x)) beam-segments)) (new-beam-segments (map rebuild-beam-segments-proc vertical-counts horizontals amount))) ;;;; If you want to compare the default and the changed ;;;; settings, uncomment the following lines. ; (let* ((new-horizontals ; (map ; (lambda (x) (assoc-get 'horizontal x)) ; new-beam-segments))) ; (display "\n\thorizontals \t")(write horizontals) ; (display "\n\tnew-horizontals ")(write new-horizontals)) new-beam-segments)) beam-segments))) #}) { \override Beam.breakable = ##t s2. s8 \shortenBrokenBeams #'(-2.239194 0) c'8[ \break c'16] } HTH, Harm _______________________________________________ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user