X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=scm%2Ftime-signature-settings.scm;h=d9e62fe1b8c5909b31d25e4954c934a47b98c9c2;hb=94345c6367d9e6a7dac6711cbb81845e8e889db5;hp=1b20103ee6b8c6cd1106597bc59e6dc3b2a112dc;hpb=6d451df53791b15dc4707694deb3622b33299997;p=lilypond.git diff --git a/scm/time-signature-settings.scm b/scm/time-signature-settings.scm index 1b20103ee6..d9e62fe1b8 100644 --- a/scm/time-signature-settings.scm +++ b/scm/time-signature-settings.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 2009--2011 Carl Sorensen +;;;; Copyright (C) 2009--2012 Carl Sorensen ;;;; ;;;; 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. ;;; @@ -61,12 +61,10 @@ ;;; 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 '( @@ -119,7 +117,7 @@ ;; 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: @@ -128,12 +126,10 @@ ((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 @@ -141,12 +137,10 @@ ((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 @@ -154,24 +148,20 @@ ((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 @@ -190,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 @@ -221,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) '())) @@ -243,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 @@ -274,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