From: David Kastrup Date: Fri, 25 Jan 2013 13:41:03 +0000 (+0100) Subject: Replace base-fraction with base-length to simplify calculations X-Git-Tag: release/2.17.12-1~18 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=bc59971f08eb0119c14f7641fa1d25777bbf356f;p=lilypond.git Replace base-fraction with base-length to simplify calculations --- diff --git a/scm/define-music-callbacks.scm b/scm/define-music-callbacks.scm index de442ba6d6..723ed130ec 100644 --- a/scm/define-music-callbacks.scm +++ b/scm/define-music-callbacks.scm @@ -92,11 +92,11 @@ to be used by the sequential-iterator" (lambda (context) (let* ((time-signature-settings (ly:context-property context 'timeSignatureSettings)) - (my-base-fraction - (base-fraction fraction time-signature-settings)) + (my-base-length + (base-length fraction time-signature-settings)) (my-beat-structure (if (null? structure) - (beat-structure my-base-fraction + (beat-structure my-base-length fraction time-signature-settings) structure)) @@ -106,7 +106,7 @@ to be used by the sequential-iterator" (ly:context-set-property! context 'timeSignatureFraction fraction) (ly:context-set-property! - context 'baseMoment (fraction->moment my-base-fraction)) + context 'baseMoment (ly:make-moment my-base-length)) (ly:context-set-property! context 'beatStructure my-beat-structure) (ly:context-set-property! diff --git a/scm/time-signature-settings.scm b/scm/time-signature-settings.scm index 6beae72e60..d9e62fe1b8 100644 --- a/scm/time-signature-settings.scm +++ b/scm/time-signature-settings.scm @@ -180,26 +180,25 @@ beat-structure beam-exceptions) (list - (cons 'baseMoment base-fraction) + (cons 'baseMoment (if (pair? base-fraction) + (/ (car base-fraction) (cdr base-fraction)) + base-fraction)) (cons 'beatStructure beat-structure) (cons 'beamExceptions beam-exceptions))) -(define-public (base-fraction time-signature time-signature-settings) - "Get @code{baseMoment} fraction value for @var{time-signature} from +(define-public (base-length time-signature time-signature-settings) + "Get @code{baseMoment} rational value for @var{time-signature} from @var{time-signature-settings}." (let ((return-value (get-setting 'baseMoment time-signature time-signature-settings))) (if (null? return-value) - (cons 1 (cdr time-signature)) + (/ (cdr time-signature)) return-value))) -(define-public (beat-structure base-fraction time-signature time-signature-settings) - "Get @code{beatStructure} value in @var{base-fraction} units +(define-public (beat-structure base-length time-signature time-signature-settings) + "Get @code{beatStructure} value in @var{base-length} units for @var{time-signature} from @var{time-signature-settings}." - (define (fraction-divide numerator denominator) - (/ (* (car numerator) (cdr denominator)) - (* (cdr numerator) (car denominator)))) (let ((return-value (get-setting 'beatStructure time-signature @@ -211,9 +210,10 @@ for @var{time-signature} from @var{time-signature-settings}." (zero? (remainder numerator 3))) 3 1)) - (beat-length (cons (* group-size (car base-fraction)) - (cdr base-fraction))) - (beat-count (fraction-divide time-signature beat-length))) + (beat-count (/ (car time-signature) + (cdr time-signature) + base-length + group-size))) (if (integer? beat-count) (make-list beat-count group-size) '()))