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:
midi_note_on
midi_note_off
midi_cc
midi_pitch_bend
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.
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.
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
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
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_audio
und 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).