Next: Process , Previous: Scheduling in Incudine , Up: Scheduling , Home: Einführung

musikinformatik-wise-24.org

Scheduling in Common Music

Die Funktion #'output gibt ihr Argument –die Instanz eines Common Music Events– über die Audio Ausgänge aus. Der time slot des Events wird dabei ignoriert. Eine mögliche Zeitverzögerung kann mit dem keyword :at erreicht werden.

Hier Beispiele mit einem sfz Event:

(in-package :clamps)

(output (new sfz))

;; Mit einer Zeitverzögerung von 1 Sekunde nach der Evaluation des
;; Ausdrucks:

(output (new sfz) :at 1)

Die Funktion #'sprout bzw. die Methode #'events1 sind Möglichkeiten, mehrere zeitlich strukturierte Ereignisse auszugeben, also z.B. eine Liste, oder einen Prozess. Die Echtzeitausgabe aus den Audio/MIDI/OSC Ausgängen wird dabei in Clamps mit dem scheduler von Incudine realisiert.

Hier vier äquivalente Beispiele einer Echtzeitausgabe 1 Sekunde nach Evaluation des Ausdrucks mit #'sprout und #'events:

(sprout (new sfz :time 1))

(events (new sfz :time 1) *rts-out*)

(sprout (new sfz :time 1) :to *rts-out*)

(sprout (new sfz :time 0) :to *rts-out* :at 1)

Hier das gleiche Ergebnis mit der Funktion #'at:

(at (+ (now) 1) #'output (new sfz))

Fußnoten:

1

Der Unterschied zwischen #'sprout und #'events ist sehr fein und hat historische Gründe: Ursprünglich war #'events für die Ausgabe von Sequenzen, Prozessen oder Eventlisten gedacht, die zumeist in eine Datei (MIDI, Notation, etc.) ausgegeben wurden. #'sprout hingegen wurde im body des #'process Makros als Element von Prozessen verwendet. Mit der Einführung von Echtzeitverarbeitung in CM wurde sprout zunehmend ähnlich, wie #'events in einem Echtzeitkontext verwendet. In CM3 ist der Unterschied verschwunden und es wird ausschließlich #'sprout verwendet. Für Clamps wurde dieses Verhalten angepasst, indem #'sprout mit dem keyword :to syntaktischer Zucker für den Aufruf von #'events bildet. Der Wert von :to entspricht dabei dem zweiten Argument von #'events

Created: 2025-02-12 Mi 20:35

Validate