4.6.1. output

Die direkteste Form wird durch die Funktion output bereitgestellt. output gibt immer genau ein Ereignis aus, das der Funktion als Argument übergeben werden muss. Wird die Funktion im top-level evaluiert, wird der :time Slot des Ereignisses von der Funktion ignoriert und das Ereignis direkt ausgegeben. Über das Keywort :to besteht die Möglichkeit, den output-stream zu spezifizieren. Wenn das Keywort :to nicht verwendet wird, erfolgt die Ausgabe auf den Stream, der an das Symbol *rts-out* gebunden ist.

Zusätzlich besteht die Möglichkeit, die Ausgabe mit dem Keywort :at zu verzögern. Der Wert von at wird in Sekunden angegeben, die auf den Moment, an dem der Ausdruck evaluiert wird, bezogen sind. Negative Werte für :at sollten vermieden werden.

;; realtime output einer Note:

(output (new midi))

(output (new midi :keynum 62 :duration 4))

(output (new midi :keynum (+ 48 (random 24)) :duration 4))

;; Ausgabe 1 Sekunde nach Auswertung:

(output (new midi) :at 1)

(* 3 4 5) ;;; -> 60

(sprout
 (process repeat 10 output (new midi :time (now))
          wait 0.2))

Sollen mehrere Ereignisse ausgegeben werden, ist es möglich, mehrere Aufrufen von output mit der special form progn zu einem Block zusammenzufassen. Sämtliche output Ausdrücke in dem progn Block werden dabei simultan ausgeführt. Rhythmen lassen sich durch die Verwendung des Keyworts :at realisieren:

;; Ausgabe eines simultanen Durdreiklangs mit output:

(progn
  (output (new midi :keynum 60))
  (output (new midi :keynum 64))
  (output (new midi :keynum 67)))

;; Ausgabe eines Arpeggios mit output:

(progn
  (output (new midi :keynum 60))
  (output (new midi :keynum 71) :at 0.5)
  (output (new midi :keynum 66) :at 2))

results matching ""

    No results matching ""