]> git.donarmstrong.com Git - lilypond.git/commitdiff
Let \parallelMusic flatten sequential music to support using functions better
authorDavid Kastrup <dak@gnu.org>
Wed, 14 Dec 2011 16:28:48 +0000 (17:28 +0100)
committerDavid Kastrup <dak@gnu.org>
Wed, 14 Dec 2011 16:28:48 +0000 (17:28 +0100)
ly/music-functions-init.ly

index 038f2ef6ac89b9a42ac19a9df7d7c3179aaa98fb..02e6b8647e7b55324dbc7faf4dadd07f7df13912 100644 (file)
@@ -763,10 +763,16 @@ Example:
                         (and (not (null? origins)) (car origins)))))))
      ;;
      ;; first, split the music and fill in voices
-     (for-each (lambda (m)
-                    (push-music m)
-                    (if (bar-check? m) (change-voice)))
-                  (ly:music-property music 'elements))
+     ;; We flatten direct layers of SequentialMusic since they are
+     ;; pretty much impossible to avoid when writing music functions.
+     (let rec ((music music))
+       (for-each (lambda (m)
+                  (if (eq? (ly:music-property m 'name) 'SequentialMusic)
+                      (rec m)
+                      (begin
+                        (push-music m)
+                        (if (bar-check? m) (change-voice)))))
+                (ly:music-property music 'elements)))
      (if (not (null? current-sequence)) (change-voice))
      ;; un-circularize `voices' and reorder the voices
      (set! voices (map-in-order (lambda (dummy seqs)