]> git.donarmstrong.com Git - lilypond.git/blobdiff - scm/time-signature-settings.scm
Add warning about using \relative with tagged music (3253)
[lilypond.git] / scm / time-signature-settings.scm
index bdabac88732f1a0a39656c5152df780a1a9f257f..d9e62fe1b8c5909b31d25e4954c934a47b98c9c2 100644 (file)
@@ -48,7 +48,7 @@
 ;;;     ((1 . 8) . (3 3 2))
 ;;;     will cause all primary beams to be broken at 3/8, 6/8, and 8/8.
 ;;;
-;;;     ((1. 32) . (16 8 4 4))
+;;;     ((1 . 32) . (16 8 4 4))
 ;;;     will cause all 1/32, 1/64, and 1/128 beams to be broken at 1/2, 3/4,
 ;;;     7/8, and 8/8.
 ;;;
@@ -64,6 +64,7 @@
 ;;;       NOTE: numerator is kept in beam-type because of
 ;;;             tuplets, e.g. (2 . 24) = (2 . 3) * (1 . 8)
 ;;;             for eighth-note triplets.
+;;;
 
 (define-public default-time-signature-settings
   '(
                              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
@@ -210,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)
               '()))
@@ -232,7 +233,6 @@ for @var{time-signature} from @var{time-signature-settings}."
   "Like the C++ code that executes \\override, but without type
 checking."
   (begin
-     (revert-property-setting context property setting)
      (ly:context-set-property!
        context
        property
@@ -263,7 +263,7 @@ a fresh copy of the list-head is made."
 
   ;; body of revert-property-setting
   (let ((current-value (ly:context-property context property)))
-    (if (> (entry-count current-value setting) 1)
+    (if (> (entry-count current-value setting) 0)
         (ly:context-set-property!
           context
           property