MIDI Ausgabe

Neben dem Empfang von MIDI-Events können wir auch MIDI-Events aussenden, um externe Hardware-Synths, Keyboards und andere Geräte zu triggern und zu steuern. Sonic Pi bietet einen vollständigen Satz von Funktionen zum Senden verschiedener MIDI-Nachrichten wie z.B:

  1. Note an - midi_note_on
  2. Note aus - midi_note_off
  3. Controllerveränderung - midi_cc
  4. Tonhöhenveränderung - midi_pitch_bend
  5. Taktgeber - midi_clock_tick

Es gibt auch noch viele weitere MIDI-Meldungen – schau in der API-Dokumentation nach all den anderen Funktionen, die mit midi_anfangen.

Mit einem MIDI-Gerät verbinden

Um eine MIDI-Nachricht an ein externes Gerät zu senden, müssen wir es zuerst angeschlossen haben. Schau Dir den Unterabschnitt ‘Anschließen eines MIDI-Instruments’ in Abschnitt 11.1 für weitere Details an. Beachte, dass bei Verwendung von USB der Anschluss an ein Gerät, an das Du sendest (und nicht von dem Du empfängst), die gleiche Prozedur ist. Wenn Du jedoch die klassischen DIN-Anschlüsse verwendest, stell sicher, dass Du den MIDI-Ausgang Deines Computers verwendest. Du solltest Dein MIDI-Gerät in den Einstellungen sehen.

MIDI-Ereignisse senden

Die verschiedenen midi_* Funktionen verhalten sich genauso wie play :

midi_note_on :e3, 50

Dieser sendet eine MIDI-Note auf Event an das angeschlossene MIDI-Gerät mit Velocity 50. (Beachte, dass Sonic Pi Noten in der Form :e3 automatisch in ihre entsprechende MIDI-Nummer wie z.B. 52 in diesem Fall konvertiert).

Wenn Dein MIDI-Gerät ein Synthesizer ist, solltest Du hören können, wie er eine Note spielt. Um dies zu deaktivieren, verwende midi_note_off:

midi_note_off :e3

Auswahl eines MIDI-Gerätes

Standardmäßig wird Sonic Pi jede MIDI Nachricht an alle verbundenen Geräte auf allen MIDI Kanälen senden, sodass es einfacher ist, mit einem einzelnen verbundenen Gerät zu arbeiten, ohne etwas einstellen zu müssen. Allerdings kann es sein, dass ein MIDI Gerät Nachrichten auf verschiedenen Kanälen unterschiedlich handhabt (zum Beispiel könnte jede Note einen eigenen Kanal haben), oder Du möchtest mehr als ein MIDI Gerät anschließen. Bei etwas umfangreicheren Setups, möchtest du wahrscheinlich genauer bestimmen können, welches Gerät welche Nachricht auf welchem Kanal erhält.

Wir können das Gerät, welches angesprochen werden soll mit der port: Option angeben, indem wir den Gerätenamen verwenden, der in den Einstellungen angezeigt wird:

midi_note_on :e3, port: "moog_minitaur"

Wir können auch angeben, an welchen Kanal gesendet werden soll, in dem wir die Option channel: (mit einem Wert im Bereich 1-16) verwenden:

midi_note_on :e3, channel: 3

Natürlich können wir auch beides zur gleichen Zeit festlegen, um an ein bestimmtes Gerät auf einen bestimmten Kanal zu senden:

midi_note_on :e3, port: "moog_minitaur", channel: 5

MIDI-Studio

Schlussendlich ist es auch sehr spannend, den Audio-Ausgang deines MIDI Synthesizers mit einem deiner Audio-Eingänge deiner Soundkarte zu verbinden. Dann kannst du deinen Synthesizer mit den midi_*Funktionen steuern und auch die erzeugten Sounds mit live_audiound Effekten verändern:

reverb,

(Die Funktion midi ist eine handliche Vereinfachung um note on und note off Events mit einem einzigen Befehl zu senden. Für weitere Informationen schaue einfach in die Dokumentation).