[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: concatenating notes with a music expression
From: |
David Kastrup |
Subject: |
Re: concatenating notes with a music expression |
Date: |
Tue, 15 May 2018 15:45:41 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) |
Gianmaria Lari <address@hidden> writes:
> On 15 May 2018 at 12:10, David Kastrup <address@hidden> wrote:
>
>> Malte Meyn <address@hidden> 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)
[...]
> David I copied and pasted you code but it didn't compile. I changed
> ly:music-properties to ly:music-property but it doesn't compile anyway.
Well, I used music-clone instead of ly:music-deep-copy for 'elements and
the former cannot deal with a list. Sorry for that. Try
\version "2.19.81"
foo =
#(define-music-function (seq1 seq2) (ly:music? ly:music?)
(set! (ly:music-property seq1 'elements)
(map! (lambda (note)
(music-clone seq2
'elements (cons note
(ly:music-deep-copy (ly:music-property seq2
'elements)))))
(ly:music-property seq1 'elements)))
seq1)
seqI = { c b a }
seqII = { f g }
{\foo \seqI \seqII}
--
David Kastrup