Malte Meyn <[email protected]> writes:
> Am 15.05.2018 um 10:27 schrieb Gianmaria Lari:
>> Thank you Gilles!!!! I have yet a problem, how can engrave the foo
>> generated list in a score?
>
> You should make a music-function:
>
> \version "2.19.81"
>
> foo =
> #(define-music-function (seq1 seq2) (ly:music? ly:music?)
> (make-sequential-music
> (map (lambda (note)
> (make-sequential-music
> (cons note (ly:music-property seq2 'elements))))
> (ly:music-property seq1 'elements))))
>
> seqI = { c b a }
> seqII = { f g }
>
> \foo \seqI \seqII
Nope. You need to write
(ly:music-deep-copy (ly:music-property seq2 'elements))
instead of
(ly:music-property seq2 'elements)
here or you'll get surprising results whenever the result is changed in
place (like when transposing the result).
Incidentally, it might make sense to write instead
foo =
#(define-music-function (seq1 seq2) (ly:music? ly:music?)
(set! (ly:music-properties seq1 'elements)
(map! (lambda (note)
(music-clone seq2
'elements (cons note (music-clone (ly:music-property seq2 'elements)))))
(ly:music-property seq1 'elements)))
seq1)
That will take the structure of the respective sequences as templates,
so you can use <<...>> instead of {...} for either and have this
reflected in the result. Also <...> though that will make sense only
for the inner structure.
--
David Kastrup
_______________________________________________
lilypond-user mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/lilypond-user