Hi Urs, I had a chance to work on the iteration part. This one accepts a note as an argument which is a better approach, following the examples here:
http://lilypond.org/doc/v2.18/Documentation/extending/doubling-a-note-with-slurs-_0028example_0029 http://lilypond.org/doc/v2.18/Documentation/extending/adding-articulation-to-notes-_0028example_0029 The iteration is done with a "named let" (which is just one option) see these docs for Guile and Scheme: https://www.gnu.org/software/mit-scheme/documentation/mit-scheme-ref/Iteration.html https://www.gnu.org/software/guile/manual/guile.html#while-do Cheers, -Paul \version "2.18.0" myNotes = #(define-music-function (parser location note num) (ly:music? number?) "Returns a series of notes. @var{note} is repeated @var{num} times. @var{note} is supposed to be a single note." ;; iteration by named let (let loop ;; two variables/arguments, ;; i is the iteration count ;; nts is the list of notes we're building ((i 0) (nts '())) ;; conditional (cond ((< i num) ;; call the loop again with modified values for i and nts (loop (+ i 1) (append nts (list (ly:music-deep-copy note))))) (else ;; when done, return the music (make-music 'SequentialMusic 'elements nts))))) { \myNotes g'16 #8 } -- View this message in context: http://lilypond.1069038.n5.nabble.com/Help-with-music-function-generating-music-tp160833p160867.html Sent from the User mailing list archive at Nabble.com. _______________________________________________ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user