(define (make-time-signature-set music)
"Set context properties for a time signature."
- (let* ((arguments (ly:music-property music 'time-signature-arguments))
- (num (car arguments))
- (den (cadr arguments))
- (rest (caddr arguments))
+ (let* ((num (ly:music-property music 'numerator))
+ (den (ly:music-property music 'denominator))
+ (structure (ly:music-property music 'beat-structure))
(fraction (cons num den)))
(list (descend-to-context
(context-spec-music
(my-base-fraction
(base-fraction fraction time-signature-settings))
(my-beat-structure
- (if (null? rest)
+ (if (null? structure)
(beat-structure my-base-fraction
fraction
time-signature-settings)
- rest))
+ structure))
(beaming-exception
(beam-exceptions fraction time-signature-settings))
(new-measure-length (ly:make-moment num den)))
(new-line->lily-string))))
(define-display-method TimeSignatureMusic (expr parser)
- (let* ((arguments (ly:music-property expr 'time-signature-arguments))
- (num (car arguments))
- (den (cadr arguments))
- (rest (caddr arguments)))
- (if (null? rest)
+ (let* ((num (ly:music-property expr 'numerator))
+ (den (ly:music-property expr 'denominator))
+ (structure (ly:music-property expr 'beat-structure)))
+ (if (null? structure)
(format #f
"\\time ~a/~a~a"
num den
(new-line->lily-string))
(format #f
- "#(set-time-signature ~a ~a ~a)~a"
- num den rest
+ "#(set-time-signature ~a ~a '~a)~a"
+ num den structure
(new-line->lily-string)))))
;;; \melisma and \melismaEnd
(new-line->lily-string))
#f))))
-;;; \time
-;(define-extra-display-method ContextSpeccedMusic (expr parser)
-; "If `expr' is a time signature set, return \"\\time ...\".
-;Otherwise, return #f. Note: default grouping is not available."
-; (with-music-match
-; (expr (music
-; 'ContextSpeccedMusic
-; element (music
-; 'ContextSpeccedMusic
-; context-type 'Timing
-; element (music
-; 'SequentialMusic
-; elements ?elts))))
-; (and
-; (> (length ?elts) 2)
-; (with-music-match ((cadr ?elts)
-; (music 'PropertySet
-; symbol 'baseMoment))
-; #t)
-; (with-music-match ((caddr ?elts)
-; (music 'PropertySet
-; symbol 'measureLength))
-; #t)
-; (with-music-match ((car ?elts)
-; (music 'PropertySet
-; value ?num+den
-; symbol 'timeSignatureFraction))
-; (if (eq? (length ?elts) 3)
-; (format
-; #f "\\time ~a/~a~a"
-; (car ?num+den) (cdr ?num+den) (new-line->lily-string))
-; (format
-; #f "#(set-time-signature ~a ~a '(<grouping-specifier>))~a"
-; (car ?num+den) (cdr ?num+den) (new-line->lily-string)))))))
-
;;; \bar
(define-extra-display-method ContextSpeccedMusic (expr parser)
"If `expr' is a bar, return \"\\bar ...\".
(back-slashed number).")
(bass ,boolean? "Set if this note is a bass note in a chord.")
+ (beat-structure ,list? "A beatStructure to be used in autobeaming.")
(bracket-start ,boolean? "Start a bracket here.
TODO: Use SpanEvents?")
in a part.")
(tempo-unit ,ly:duration? "The unit for the metronome count.")
(text ,markup? "Markup expression to be printed.")
- (time-signature-arguments ,list? "The arguments to a time-signature call.")
(to-relative-callback ,procedure? "How to transform a piece of music
to relative pitches.")
(tonic ,ly:pitch? "Base of the scale.")
(define-public (make-time-signature-set num den)
"Set properties for time signature NUM/DEN."
(make-music 'TimeSignatureMusic
- 'time-signature-arguments
- (list num den '())))
+ 'numerator num
+ 'denominator den
+ 'beat-structure '()))
;;; Used for calls that include beat-grouping setting
(define-public (set-time-signature num den . rest)
@code{beatStructure}."
(ly:export
(make-music 'TimeSignatureMusic
- 'time-signature-arguments
- (list num den (if (null? rest) rest (car rest))))))
-
-(define-public (make-beam-rule-time-signature-set num den rest)
- "Implement settings for new time signature. Can be
-called from either make-time-signature-set (used by \time
-in parser) or set-time-signature (called from scheme code
-included in .ly file)."
-
- (let ((m (make-music 'ApplyContext)))
- (define (make-time-settings context)
- (let* ((fraction (cons num den))
- (time-signature-settings (ly:context-property context 'timeSignatureSettings))
- (my-base-fraction (base-fraction fraction time-signature-settings))
- (my-beat-structure (if (null? rest)
- (beat-structure my-base-fraction
- fraction
- time-signature-settings)
- (car rest)))
- (beaming-exception
- (beam-exceptions fraction time-signature-settings))
- (new-measure-length (ly:make-moment num den)))
- (ly:context-set-property! context 'timeSignatureFraction fraction)
- (ly:context-set-property!
- context 'baseMoment (fraction->moment my-base-fraction))
- (ly:context-set-property! context 'beatStructure my-beat-structure)
- (ly:context-set-property! context 'beamExceptions beaming-exception)
- (ly:context-set-property! context 'measureLength new-measure-length)))
- (set! (ly:music-property m 'procedure) make-time-settings)
- (descend-to-context
- (context-spec-music m 'Timing)
- 'Score)))
-
+ 'numerator num
+ 'denominator den
+ 'beat-structure (if (null? rest) rest (car rest)))))
(define-public (make-mark-set label)
"Make the music for the \\mark command."