4.8.2. Verschachtelte Prozesse
Besonders hervorzuheben ist die Möglichkeit, Prozesse als Bestandteile anderer Prozesse zu verwenden.
Das oben definierte Arpeggio lässt sich beispielsweise als Bestandteil eines Prozesses definieren, der eine wiederholte Repetition von Arpeggios erzeugt.
(defun arpeggio-repeat (chord numrepeats dtime) (process repeat numrepeats sprout (arpeggio chord dtime) wait (* (length chord) dtime))) ;; Abspielen dieses Prozesses mit sprout bzw. events: (sprout (arpeggio-repeat '(60 66 71 77) 4 0.2))
Diese Funktion wiederum kann in einer Funktion verwendet werden, die eine rhythmisierte Akkordfolge arpeggiert.
(defun arpeggio-akkordfolge (akkordfolge wiederholungen dtime) (process for chord in akkordfolge for repeats in wiederholungen sprout (arpeggio-repeat chord repeats dtime) wait (* (length chord) repeats dtime))) ;; Abspielen dieses Prozesses: (sprout (arpeggio-akkordfolge '((60 66 71 77) (60 65 73) (62 68 73 81) (61 69 71 74 77 83) (55 61 66 72 67 63 57) (41 43 47 51 57 63 65 71 74 80 82)) '(4 2 3 1 1 1) 0.1)) (sprout (arpeggio-akkordfolge '((60 64 67 72 76 67 72 76) (60 62 69 74 77 69 74 77) (59 62 67 74 77 67 74 77) (60 64 67 72 76 67 72 76)) '(2 2 2 2) 0.12))