From: David Kastrup Date: Thu, 28 Nov 2013 16:25:11 +0000 (+0100) Subject: Add unfold-repeats-fully function which will expand repeats in the data X-Git-Tag: release/2.19.0-1~112 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=2592bba9b41edb83f662b0e28d40ba2ed658b659;p=lilypond.git Add unfold-repeats-fully function which will expand repeats in the data --- diff --git a/scm/music-functions.scm b/scm/music-functions.scm index 019cee464d..d3d720276b 100644 --- a/scm/music-functions.scm +++ b/scm/music-functions.scm @@ -382,6 +382,28 @@ beats to be distinguished." (unfold-repeats e))) music)) +(define-public (unfold-repeats-fully music) + "Unfolds repeats and expands the resulting @code{unfolded-repeated-music}." + (map-some-music + (lambda (m) + (and (music-is-of-type? m 'unfolded-repeated-music) + (make-sequential-music + (ly:music-deep-copy + (let loop ((n (ly:music-property m 'repeat-count)) + (alts (ly:music-property m 'elements)) + (body (ly:music-property m 'element))) + (cond ((<= n 0) '()) + ((null? alts) + (cons body (loop (1- n) alts body))) + (else + (cons* body (car alts) + (loop (1- n) + (if (pair? (cdr alts)) + (cdr alts) + alts) + body))))))))) + (unfold-repeats music))) + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; property setting music objs.