[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Replace ly:music elements in a Scheme function
From: |
David Kastrup |
Subject: |
Re: Replace ly:music elements in a Scheme function |
Date: |
Mon, 05 Mar 2018 13:42:15 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) |
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
fun = #(define-music-function (parser location music1 music2) (ly:music?
ly:music?)
(let*
((pred? (music-type-predicate '(event-chord rhythmic-event)))
(musicList2 (apply circular-list (extract-music music2 pred?))))
(define (get-music)
(let ((elt (music-clone (car musicList2))))
(set! musicList2 (cdr musicList2))
elt))
(map-some-music
(lambda (m) (and (pred? m) (get-music)))
music1)))
{
\fun {c' d' e'} {f' <g' a'>}
}
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
- Replace ly:music elements in a Scheme function, paolo prete, 2018/03/05
- Re: Replace ly:music elements in a Scheme function,
David Kastrup <=
- Re: Replace ly:music elements in a Scheme function, paolo prete, 2018/03/05
- Re: Replace ly:music elements in a Scheme function, David Kastrup, 2018/03/05
- Re: Replace ly:music elements in a Scheme function, paolo prete, 2018/03/05
- Re: Replace ly:music elements in a Scheme function, David Kastrup, 2018/03/05
- Re: Replace ly:music elements in a Scheme function, paolo prete, 2018/03/05
- Re: Replace ly:music elements in a Scheme function, David Kastrup, 2018/03/05