]> 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 4046282a93d6328fb5b2993ffaf9d94e35eb9049..d9e62fe1b8c5909b31d25e4954c934a47b98c9c2 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 2009--2011 Carl Sorensen <c_sorensen@byu.edu>
+;;;; Copyright (C) 2009--2012 Carl Sorensen <c_sorensen@byu.edu>
 ;;;;
 ;;;; LilyPond is free software: you can redistribute it and/or modify
 ;;;; it under the terms of the GNU General Public License as published by
@@ -46,9 +46,9 @@
 ;;;     If an exception is specified for a given beam-type, it will apply to all
 ;;;     beams of shorter durations that don't have an individual exception, so
 ;;;     ((1 . 8) . (3 3 2))
-;;;     will cause all primary beams to be broken at 3/8, 5/8, and 8/8.
+;;;     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.
 ;;;
 ;;;     a list of (1 1 1 ...), where the number of entries is the
 ;;;     number of base moments in a measure otherwise.
 ;;;
-;;; If no value is given for beatCombinations, no beats will be combined without
-;;;   beamExceptions rules.
-;;;
 ;;;       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
   '(
     ;;   combine beats 1 and 2, so beam in 2
     ((4 . 8) . ((beatStructure . (2 2))))
 
-    ;; in 4/8 and 4/16 time:
+    ;; in 4/16 time:
     ;;   use defaults, so no entries necessary
 
     ;; in 6 4 time:
              ((beamExceptions . ((end .  (((1 . 16) . (4 4 4 4 4 4))))))))
 
     ;; in 6 8 time:
-    ;;   use defaults, but end beams with 32nd or finer each 1 8 beat
-    ((6 . 8) .
-             ((beamExceptions . ((end .  (((1 . 32) . (4 4 4 4 4 4))))))))
+    ;;   use defaults, so no entries necessary
 
     ;; in 6 16 time:
-    ;;   use defaults, so no entry necessary
+    ;;   use defaults, so no entries necessary
 
     ;; in 9 4 time:
     ;;   use defaults, but end beams with 32nd or finer each 1 4 beat
              ((beamExceptions . ((end . (((1 . 32) . (8 8 8 8 8 8 8 8))))))))
 
     ;; in 9 8 time
-    ;;   use defaults, but end beams with 32nd notes each 1 8 beat
-    ((9 . 8) .
-             ((beamExceptions . ((end . (((1 . 32) . (4 4 4 4 4 4 4 4 4))))))))
+    ;;   use defaults, so no entries necessary
 
     ;; in 9 16 time
-    ;;   use defaults, so no entry necessary
+    ;;   use defaults, so no entries necessary
 
     ;; in 12 4 time:
     ;;   use defaults, but end beams with 32nd or finer notes each 1 4 beat
               ((beamExceptions . ((end . (((1 . 32) . (8 8 8 8 8 8 8 8 8 8 8 8))))))))
 
     ;; in 12 8 time:
-    ;;   use defaults, but end beams with 32nd notes each 1 8 beat
-    ((12 . 8) .
-              ((beamExceptions . ((end . (((1 . 32) . (4 4 4 4 4 4 4 4 4 4 4 4))))))))
+    ;;   use defaults, so no entries necessary
 
     ;; in 12 16 time:
-    ;;   use defaults; no entry needed
+    ;;   use defaults, so no entries necessary
 
     ;; in 5 8 time:
     ;;   default: group (3 2)
     ((5 . 8) .
-             ((baseMoment . (1 . 8))
-              (beatStructure . (3 2))))
+             ((beatStructure . (3 2))))
 
     ;; in 8 8 time:
     ;;   default: group (3 3 2)
     ((8 . 8) .
-             ((baseMoment . (1 . 8))
-              (beatStructure . (3 3 2))))
+             ((beatStructure . (3 3 2))))
 
     ))  ; end of alist definition
 
                              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 @code{time-signature} from
-@code{time-signature-settings}."
+(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 beatStructure value in @code{base-fraction} units
-for @code{time-signature} from
-@code{time-signature-settings}."
-  (define (fraction-divide numerator denominator)
-    (/ (* (car numerator) (cdr denominator))
-       (* (cdr numerator) (car denominator))))
+(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}."
 
   (let ((return-value (get-setting 'beatStructure
                                    time-signature
@@ -222,9 +210,10 @@ for @code{time-signature} from
                                     (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,8 +221,8 @@ for @code{time-signature} from
         return-value)))
 
 (define-public (beam-exceptions time-signature time-signature-settings)
-  "Get beamExceptions value for @code{time-signature} from
-@code{time-signature-settings}."
+  "Get @code{beamExceptions} value for @var{time-signature} from
+@var{time-signature-settings}."
    (get-setting 'beamExceptions time-signature time-signature-settings))
 
 
@@ -242,9 +231,8 @@ for @code{time-signature} from
 
 (define (override-property-setting context property setting value)
   "Like the C++ code that executes \\override, but without type
-checking. "
+checking."
   (begin
-     (revert-property-setting context property setting)
      (ly:context-set-property!
        context
        property
@@ -252,7 +240,7 @@ checking. "
 
 (define (revert-property-setting context property setting)
   "Like the C++ code that executes \revert, but without type
-checking. "
+checking."
 
   (define (entry-count alist entry-key)
     "Count the number of entries in alist with a key of
@@ -275,15 +263,15 @@ 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
           (revert-member current-value setting)))))
 
 (define-public (override-time-signature-setting time-signature setting)
-  "Override the time signature settings for the context in @var{rest},
-with the new setting alist @var{setting}. "
+  "Override the time signature settings for the context in
+@var{time-signature}, with the new setting alist @var{setting}."
     (context-spec-music
       (make-apply-context
         (lambda (c) (override-property-setting