Génération de notes aléatoires

Le fragment de code Scheme ci-dessous génère aléatoirement 24 notes (ou autant que nécessaire), à partir de l’heure courante (ou un nombre quelconque donné en argument, afin d’obtenir toujours les mêmes notes aléatoires). Pour obtenir une autre série de notes, il suffit de changer ce nombre.

randomNotes =
#(define-music-function (n from to dur)
   (integer? ly:pitch? ly:pitch? ly:duration?)
   (let ((from-step (ly:pitch-steps from))
         (to-step (ly:pitch-steps to)))
     (make-sequential-music
      (map (lambda (_)
             (let* ((step (+ from-step
                             (random (- to-step from-step))))
                    (pitch (ly:make-pitch 0 step 0)))
               #{ $pitch $dur #}))
           (iota n)))))

\randomNotes 24 c' g'' 8

[image of music]


LilyPond snippets v2.25.12 (branche de développement).