David Kastrup wrote: >> I'm trying to write a conditional version of the \transpose >> function, that would work something like this... >> >> input = { >> c c >> \conditionalTransposition c c' { c c } >> } >> >> \input >> => { c c c c } >> >> \processConditionalTransposition \input >> => { c c c' c' } > > conditionalTransposition = > #(define-music-function (parser location from to music) > (ly:pitch? ly:pitch? ly:music?) > (set! music #{ \transpose c' c' #music #}) > (set! (ly:music-property 'from-to music) (cons from to)) > music) > > processConditionalTransposition = > #(define-music-function (parser location music) (ly:music?) > (map-some-music > (lambda (m) > (and (music-is-of-type? m 'transposed-music) > (pair? (ly:music-property m 'from-to music)) > #{ \transpose #(car (ly:music-property m 'from-to-music)) > #(cdr (ly:music-property m 'from-to-music)) > #(ly:music-property m 'element) > #})) > music))
David, sorry for the delayed response. Your solution is excellent! I'm learning so much from you. Thanks again. - Mark _______________________________________________ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user