I made two tremolo utility functions today which may be of interest to some here. Before adding them to LSR I just want a few people to take a look at them.
\tremolos #16 {c4 d8 e f g a4 b c2} expands to \repeat tremolo 4 c16 \repeat tremolo 2 d16 \repeat tremolo 2 e16 \repeat tremolo 2 f16 \repeat tremolo 2 g16 \repeat tremolo 4 a16 \repeat tremolo 4 b16 \repeat tremolo 8 c16 See the attached excerpt from Beethoven Symphony No.3 for an example use case. The other is simply \unfoldTremolos. I usually use the midi to check for errors I don't want to unfold the volta repeats, but not unfolding tremolos sounds strange. \unfoldTremolos does just what it says. Enjoy! -----Jay In use here: <http://github.com/horndude77/open-scores/blob/master/BeethovenSymphony3/defs.lyi> #(define (tremolo-repeat-count dur music) (let* ((elements (ly:music-property music 'elements)) (music-dur (ly:music-property (car elements) 'duration)) (length (ly:duration-log music-dur)) (dots (ly:duration-dot-count music-dur)) (beats (* (- 2 (/ 1 (expt 2 dots))) (/ 4 (expt 2 length))))) (* beats (/ dur 4)))) #(define (make-tremolo dur music) (make-music 'TremoloRepeatedMusic 'elements '() 'repeat-count (tremolo-repeat-count dur music) 'element music)) #(define (tremoloize dur music) (if (eq? (ly:music-property music 'name) 'EventChord) (make-tremolo dur music) music)) %dur is 8, 16, 32, etc. tremolos = #(define-music-function (parser location dur mus) (integer? ly:music?) (music-map (lambda (x) (tremoloize dur x)) mus)) #(define (unfold-tremolos mus) (if (eq? (ly:music-property mus 'name) 'TremoloRepeatedMusic) (unfold-repeats mus) mus)) unfoldTremolos = #(define-music-function (parser location mus) (ly:music?) (music-map unfold-tremolos mus))
<<attachment: beeth_tremolos.png>>
_______________________________________________ lilypond-user mailing list lilypond-user@gnu.org http://lists.gnu.org/mailman/listinfo/lilypond-user