|
From: | paolo prete |
Subject: | Re: Replace ly:music elements in a Scheme function |
Date: | Mon, 5 Mar 2018 14:12:35 +0100 |
paolo prete <address@hidden> writes:
> in the snippet below I want to replace, while iterating two lists, the
> elements of music1 with the elements of music2.
> The code shows how to do that for pitches, but how can I replace the whole
> element? (for example, a rest or a note with its articulation)
> %%%%%%%%
>
> fun = #(define-music-function (parser location music1 music2) (ly:music?
> ly:music?)
> (let
> (
> (musicList1 (ly:music-property music1 'elements))
> (musicList2 (ly:music-property music2 'elements))
> )
> (map
> (lambda (x y)
> ;iterate notes
> (display "note found\n")
> ;(set! (ly:music-property x 'pitch) #{c'#})
> ;(ly:music-set-property! x 'pitch #{c' #})
> (ly:music-set-property! x 'pitch (ly:music-property y 'pitch))
> )
> musicList1 musicList2
> )
> )
> #{ $music1 #})
>
> {
> \fun {c' d' e'} {f' g' a'}
> }
Something like
I'm fuzzy on what music1 is actually good for at all since only a scant
sketch of its structure is used at all. Probably you need to vary/copy
more from the original. The music-clone function can take additional
arguments: maybe that allows you to do something more useful.
--
David Kastrup
[Prev in Thread] | Current Thread | [Next in Thread] |