4.5.1. Der Time Slot
Allen Ereignisklassen in Common Music ist gemeinsam, dass sie eine Instanzvariable :time
besitzen. Beim Auswerten der Instanz einer Ereignisklasse (bzw. im Rückgabewert der new
Funktion) wird dieser Slot nicht dargestellt. Man kann ihn allerdings bei Inspektion einer Instanz mit Hilfe der Funktion inspect
(am besten in der REPL) sehen (Hinweis: Um den Inspektor wieder zu verlassen, muss die Taste "q" gefolgt von der Eingabetaste eingegeben werden) 11
CM> (inspect *testevent*) The object is a STANDARD-OBJECT of type MIDI. 0\. TIME: "unbound" 1\. KEYNUM: 65 2\. DURATION: 2 3\. AMPLITUDE: 0.3 4\. CHANNEL: 3 > q ; No value CM>
Ein Defaultwert für den time
Slot ist in Common Music nicht definiert. Wenn der time Slot eines Events bei der Initialisierung nicht spezifiziert wurde, erzeugt Die Abfrage des Wertes von :time
daher eine UNBOUND-SLOT
Condition:
(sv *testevent* :time) ;;; -> The slot COMMON-LISP:TIME is unbound in the object ;;; #i(midi keynum 65 duration 2 amplitude 0.3 channel 3). ;;; [Condition of type UNBOUND-SLOT]
Die Condition kann man durch das Drücken von "q" bzw. "0" beenden und zum Ausgangspunkt zurückkehren. Anschließend kann man mit den oben beschriebenen Methoden den Wert des :time
Slots setzen:
(setf (sv *testevent* :time) 0) ;;; -> 0 (sv *testevent* :time) ;;; -> 0
11: Eine erheblich komfortablere Form der Inspektion bietet Slime unter emacs. Dazu positioniert man den Cursor hinter das letzte Zeichen des zu inspizierenden Ausdrucks und drückt die Tastenkombination "C-c I". Im Minibuffer wird der zu inspizierende Ausdruck noch einmal angezeigt, den man durch Eingabe der Returntaste bestätigen muss. Der Inspektor öffnet sich dann in einem neuen Emacs Buffer. Auch hier verlässt man den Inspektor mit der Taste "q". ↩