Am 4. September 2016 19:30:02 MESZ, schrieb "Оксана Крымина" 
<ocrim...@gmail.com>:
>Great! It works! It works!
>Thank You!
>

The first thing is you had to use define-music-function  because that returns 
*music*.

Then you can return a *list* of music expressions with something like

@(map
   (lambda (len)
    #{ \repeat unfold #len ... #})
       llen)

(completely untested, on the phone)
This iterates over your input list and produces the music using regular syntax. 

HTH
Urs



>2016-09-04 20:15 GMT+03:00, Simon Albrecht <simon.albre...@mail.de>:
>> Hi Oxana,
>>
>> I _guess_ the reason it doesn’t work is because the parser doesn’t
>> accept a Scheme expression instead of the number after \repeat
>unfold.
>> The solution is creating music via Scheme. As a first step, you can
>> always use something like
>>
>> %%%%%%%
>> \version "2.19.47"
>> \displayMusic { \repeat unfold 2 { c'1 } }
>> %%%%%%%
>>
>> to see what the music looks like on the Scheme level:
>>
>> ;;;;;;;;;;;;;;;;;;;;;
>> (make-music
>>    'SequentialMusic
>>    'elements
>>    (list (make-music
>>            'UnfoldedRepeatedMusic
>>            'elements
>>            '()
>>            'repeat-count
>>            2
>>            'element
>>            (make-music
>>              'SequentialMusic
>>              'elements
>>              (list (make-music
>>                      'NoteEvent
>>                      'duration
>>                      (ly:make-duration 0)
>>                      'pitch
>>                      (ly:make-pitch 0 0)))))))
>> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
>>
>> Now I built a music function using that information:
>>
>> %%%%%%%%%%%%%%%
>> \version "2.18.2"
>>
>> createRepeats =
>> #(define-music-function (parser location nums mus end) (list?
>ly:music?
>> ly:music?)
>>     (let ((repeater (lambda (n) (make-music
>>                                  'SequentialMusic
>>                                  'elements
>>                                  (list (make-music
>>                                  'UnfoldedRepeatedMusic
>>                                  'elements
>>                                  '()
>>                                  'repeat-count
>>                                  n
>>                                  'element
>>                                  mus)
>>                                    end)))))
>>     (make-sequential-music (map repeater nums))))
>> \createRepeats #'(2 3 7) { c'1 } { \bar "||" }
>> %%%%%%%%%%%%%%%%
>>
>> If you have further questions, feel free to ask back.
>>
>> Best, Simon
>>
>> PS. In recent development versions, one may use nicer syntax:
>>
>> %%%%%%%%%%%%%%%%
>> \version "2.19.47"
>>
>> createRepeats =
>> #(define-music-function (nums mus end) (list? ly:music? ly:music?)
>>     (let ((repeater (lambda (n) (make-music
>>                                  'SequentialMusic
>>                                  'elements
>>                                  (list (make-music
>>                                  'UnfoldedRepeatedMusic
>>                                  'elements
>>                                  '()
>>                                  'repeat-count
>>                                  n
>>                                  'element
>>                                  mus)
>>                                    end)))))
>>     (make-sequential-music (map repeater nums))))
>> \createRepeats 2,3,7 { c'1 } { \bar "||" }
>> %%%%%%%%%%%%%%%%
>>
>> On 04.09.2016 18:52, Оксана Крымина wrote:
>>> hello all!
>>>
>>> please, help me to write a function to convert several numbers like
>(5
>>> 7 10 8) to musical string like
>>>   \repeat unfold 5 {c2} \bar ""
>>>   \repeat unfold 7 {c2} \bar ""
>>>   \repeat unfold 10 {c2} \bar ""
>>>   \repeat unfold 8 {c2} \bar ""
>>>
>>> my code produces errors only:
>>> \version "2.18.2"
>>> musSpisok = #(define-scheme-function (parser location llen)(list?)
>>>              (if (not (null? llen))
>>> #{
>>>                        \repeat unfold $(car llen) {c2} \bar ""  (
>>> \musSpisok #'(cdr llen))  )
>>>                      #})
>>>
>>> thanx,
>>> Oxana
>>>
>>> _______________________________________________
>>> lilypond-user mailing list
>>> lilypond-user@gnu.org
>>> https://lists.gnu.org/mailman/listinfo/lilypond-user
>>
>>
>
>_______________________________________________
>lilypond-user mailing list
>lilypond-user@gnu.org
>https://lists.gnu.org/mailman/listinfo/lilypond-user

-- 
Diese Nachricht wurde von meinem Android-Mobiltelefon mit K-9 Mail gesendet.
_______________________________________________
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user

Reply via email to