X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=scm%2Fauto-beam.scm;h=9ba08705ef0102cab09683c8e2747411f7a23704;hb=8627d767e67258394cd4256740542a36dacd7868;hp=6191017dfe84b9ef40b1c7bd89a4b0e9e2589b79;hpb=47db9a3883d726ca53e2133a3b2298f78dd6a32e;p=lilypond.git diff --git a/scm/auto-beam.scm b/scm/auto-beam.scm index 6191017dfe..9ba08705ef 100644 --- a/scm/auto-beam.scm +++ b/scm/auto-beam.scm @@ -38,12 +38,12 @@ (let ((value (ly:context-property context name))) (if (not (null? value)) value default))) - (define (ending-moments group-list start-beat base-length) - (if (null? group-list) - '() - (let ((new-start (+ start-beat (car group-list)))) - (cons (* new-start base-length) - (ending-moments (cdr group-list) new-start base-length))))) + (define (ending-moments group-list base-length) + (let ((beat 0)) + (map-in-order (lambda (x) + (set! beat (+ beat x)) + (* base-length beat)) + group-list))) (define (larger-setting type sorted-alist) (assoc type sorted-alist <=)) @@ -64,7 +64,7 @@ (time-signature-fraction (get 'timeSignatureFraction '(4 . 4))) (beat-structure (get 'beatStructure '(1 1 1 1))) - (beat-endings (ending-moments beat-structure 0 base-length)) + (beat-endings (ending-moments beat-structure base-length)) (exceptions (sort (map (lambda (a) (if (pair? (car a)) @@ -95,7 +95,7 @@ type)) (exception-moments (and exception-grouping (ending-moments - exception-grouping 0 grouping-moment)))) + exception-grouping grouping-moment)))) (if (= dir START) ;; Start rules -- #t if beam is allowed to start