4.3.3. Midi Input und Output in Echtzeit

Echtzeit Ein- Ausgabe von Midiereignissen wird über Streams und Ports abgewickelt6:

In incudine werden dafür die Klassen jackmidi:output-stream bzw. jackmidi:input-stream bereitgestellt. Es handelt sich dabei

um direkte Assoziationen eines Streams mit einem in Jack sichtbaren Port.

In common music existieren zwei vordefinierte Symbole, *midi-out1* bzw. *midi-in1*, die als Standardports für die elementare Midi-Anbindung vorgesehen sind.

Funktionen zum Öffnen und Schließen der Standardports:

;;; Öffnen des Standard Output Streams (gebunden an das Symbol *midi-out1*):

(midi-open-default :direction :output)

;;; Öffnen des Standard Input Streams (gebunden an das Symbol *midi-in1*):

(midi-open-default :direction :input)

Nach Evaluation dieser Funktionen sollten bei jack unter JACK-MIDI bei input und output jeweils ein Eintrag mit Namen "incudine" erscheinen.

Hinweis: Bei Laden des Pakets "cm-all" mit dem Befehl ql:quickload "cm-all") werden automatisch die Midi In- und Output Streams geöffnet.

Ein Aufklappen dieser Einträge zeigt, dass der Name der Midi Ports "midiout-1" bzw. "midi_in-1" ist. Wie man erkennen kann, ist dieser Name _nicht identisch mit den Symbolen dieser Ports in Common Music (*midi-out1* bzw. *midi-in1*).

Anschließend muss in jack (mit Hilfe von QjackCtl oder JackPilot) der Midi Output von incudine mit dem Midi input des Softwaresynthesizers verbunden werden, damit man auch etwas hören kann.

incudine jack midi

Anschließend sollte die Evaluation des folgenden Ausdrucks einen Ton erzeugen:

(output (new midi) :to *midi-out1*)

Neue Streams/Ports werden mit der Funktion jackmidi:open erzeugt. Der Rückgabewert der Funktion sollte dabei an ein Symbol gebunden werden, das benötigt wird, wenn man Midiereignisse über diesen Stream ausgeben möchte:

(defparameter *midi-out2* nil)

(setf *midi-out2* (jackmidi:open :direction :output :port-name "midi_out-2"))

Nach der Evaluation sollte in JACK-MIDI ein zweiter Port mit Namen "midi_out-2" zu sehen sein.

incudine jack midi2

Wenn dieser Port mit einem Softwaresynthesizer verbunden wird (wie in der Abildung dargestellt), kann man die Ausgabe auf diesen Stream/Port in common musics output Funktion durch das Keywort :to spezifizieren:

(output (new midi) :to *midi-out2*)
6: Es ist schwierig, eine genaue Unterscheidung von Stream und Port zu treffen. Konzeptionell versteht man unter einem Port am ehesten etwas, das einem Hardwareanschluss, wie einer Kopfhörerbuchse entspricht, während ein Stream als geöffnete Verbindung betrachtet wird, über die Daten an den Port übertragen werden. Im Zusammenhang von incudine und Common Music kann man beide Begriffe im Grunde synonym verwenden. In diesem Text wird der Ausdruck Port für die in Jack sichtbaren Anschlüsse verwendet, während die softwareseitige Verwendung mit dem Begriff des Streams beschrieben wird.

results matching ""

    No results matching ""