X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=scm%2Fdefine-music-callbacks.scm;h=5cc1db14cd7b12fd22ebc664fe18b5ea1f9ae1c4;hb=HEAD;hp=7e65125cb62c647510bb3bc149f74d4fe240c37c;hpb=d2762a4f1add2bb04d6fc34d3c7ae03eeb7d500f;p=lilypond.git diff --git a/scm/define-music-callbacks.scm b/scm/define-music-callbacks.scm index 7e65125cb6..5cc1db14cd 100644 --- a/scm/define-music-callbacks.scm +++ b/scm/define-music-callbacks.scm @@ -23,16 +23,11 @@ (define (mm-rest-child-list music) "Generate events for multimeasure rests, to be used by the sequential-iterator" - (let ((location (ly:music-property music 'origin)) - (duration (ly:music-property music 'duration))) - (list (make-music 'BarCheck - 'origin location) - (make-event-chord (cons (make-music 'MultiMeasureRestEvent - 'origin location - 'duration duration) - (ly:music-property music 'articulations))) - (make-music 'BarCheck - 'origin location)))) + (ly:set-origin! (list (make-music 'BarCheck) + (make-music 'MultiMeasureRestEvent + (ly:music-deep-copy music)) + (make-music 'BarCheck)) + music)) (define (make-unfolded-set music) (let ((n (ly:music-property music 'repeat-count)) @@ -128,7 +123,24 @@ to be used by the sequential-iterator" context 'measureLength new-measure-length)))) 'Timing) 'Score) - (make-music 'TimeSignatureEvent music)))) + ;; (make-music 'TimeSignatureEvent music) would always + ;; create a Bottom context. So instead, we just send the + ;; event to whatever context may be currently active. If + ;; that is not contained within an existing context with + ;; TimeSignatureEngraver at the time \time is iterated, it + ;; will drop through the floor which mostly means that + ;; point&click and tweaks are not available for any time + ;; signatures engraved due to the Timing property changes + ;; but without a \time of its own. This is more a + ;; "notification" rather than an "event" (which is always + ;; sent to Bottom) but we don't currently have iterators for + ;; that. + (make-apply-context + (lambda (context) + (ly:broadcast (ly:context-event-source context) + (ly:make-stream-event + (ly:make-event-class 'time-signature-event) + (ly:music-mutable-properties music)))))))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Some MIDI callbacks -- is this a good place for them?