[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: problems trying to write a conditional \transpose
From: |
Mark Polesky |
Subject: |
Re: problems trying to write a conditional \transpose |
Date: |
Mon, 19 Aug 2013 21:46:11 -0700 (PDT) |
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