X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=scm%2Fdefine-music-callbacks.scm;h=de442ba6d643ff9832f6c879b2eb81b0030169ed;hb=32a34dcef0c0041c6d62677487a380b5c8b85712;hp=0cbd96b862658c504841edda2af8fb35cb870ecf;hpb=f41973ff763d5972a85995b6d40c864281ec6714;p=lilypond.git diff --git a/scm/define-music-callbacks.scm b/scm/define-music-callbacks.scm index 0cbd96b862..de442ba6d6 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--2011 Han-Wen Nienhuys +;;;; Copyright (C) 1998--2012 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)))