From 2592bba9b41edb83f662b0e28d40ba2ed658b659 Mon Sep 17 00:00:00 2001 From: David Kastrup Date: Thu, 28 Nov 2013 17:25:11 +0100 Subject: [PATCH] Add unfold-repeats-fully function which will expand repeats in the data --- scm/music-functions.scm | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) 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. -- 2.39.2