X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=scm%2Fdefine-music-callbacks.scm;h=06d616f8b014e3cfbb4e57da6811315af3020f07;hb=692c8fc63214ea5aa541b5610f4b63d740a1e665;hp=a691c0066d7676f883b7e35361e2a373d0442c1f;hpb=9158bc17904d4dd930a1f776cfe3226f1ad84092;p=lilypond.git diff --git a/scm/define-music-callbacks.scm b/scm/define-music-callbacks.scm index a691c0066d..06d616f8b0 100644 --- a/scm/define-music-callbacks.scm +++ b/scm/define-music-callbacks.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 1998--2010 Han-Wen Nienhuys +;;;; Copyright (C) 1998--2011 Han-Wen Nienhuys ;;;; Jan Nieuwenhuizen ;;;; Neil Puttock ;;;; Carl Sorensen @@ -34,6 +34,34 @@ to be used by the sequential-iterator" (make-music 'BarCheck 'origin location)))) +(define (make-volta-set music) + (let* ((alts (ly:music-property music 'elements)) + (lalts (length alts)) + (times (ly:music-property music 'repeat-count))) + (map (lambda (x y) + (make-music + 'SequentialMusic + 'elements + ;; set properties for proper bar numbering + (append + (list (make-music 'AlternativeEvent + 'alternative-dir (if (= y 0) + -1 + 0) + 'alternative-increment + (if (= 0 y) + (1+ (- times + lalts)) + 1))) + (list x) + (if (= y (1- lalts)) + (list (make-music 'AlternativeEvent + 'alternative-dir 1 + 'alternative-increment 0)) + '())))) + alts + (iota lalts)))) + (define (make-ottava-set music) "Set context properties for an ottava bracket." (let ((octavation (ly:music-property music 'ottava-number)))