;;;; 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
;;; ((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.
;;;
;;; 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
(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)
'()))
"Like the C++ code that executes \\override, but without type
checking."
(begin
- (revert-property-setting context property setting)
(ly:context-set-property!
context
property
;; 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