# MIDI-Ausgabe

Zusätzlich zum Empfangen von MIDI-Ereignissen können wir auch MIDI-Ereignisse 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-Signale wie z. B:

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

Es gibt noch eine Menge weiterer MIDI-Signale, die unterstützt werden – sieh dir in der API-Dokumentation alle weiteren Funktionen an, die mit `midi_` beginnen.

## Mit einem MIDI-Gerät verbinden

Um ein MIDI-Signal an ein externes Gerät zu senden, muss es zunächst angeschlossen sein. Für weitere Details sieh dir den Unterabschnitt ‘Anschließen eines MIDI-Controllers’ in Abschnitt 11.1 an. Beachte, dass, wenn du dich über USB mit einem Gerät verbindest, an das du sendest (anstatt zu empfangen) die Prozedur jeweils die gleiche ist. Wenn du jedoch die klassischen DIN-Anschlüsse verwendest, stelle sicher, dass du es mit dem MIDI-Ausgang deines Computers verbindest. Du solltest dein MIDI-Gerät in den Einstellungen sehen.

## MIDI-Ereignisse senden

Die vielen `midi_*`-Funktionen arbeiten ebenso wie `play`, `sample` und `synth`, indem sie ein Signal zur aktuellen (logischen) Zeit schicken . Um zum Beispiel Aufrufe an die `midi_*`-Funktionen zu verteilen, musst du `sleep` in der gleichen Weise benutzen wie du es bei `play` getan hast. Lass uns das ansehen:

    midi_note_on :e3, 50

Dies sendet ein MIDI-Note-on-Ereignis an das angeschlossene MIDI-Gerät mit Anschlagstärke 50. (Beachte, dass Sonic Pi Noten in der Form von `:e3` automatisch in ihre entsprechenden MIDI-Nummern konvertiert, wie z. B. 52 in diesem Fall.)

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 jedes MIDI-Signal an alle angeschlossenen Geräte auf allen MIDI-Kanälen senden. Auf diese Art ist es leicht mit einem einzelnen verbundenen Gerät zu arbeiten, ohne zuvor etwas einstellen zu müssen. Allerdings kann es sein, dass ein MIDI-Gerät MIDI-Kanäle auf spezielle Art handhabt (möglicherweise hat jede Note einen eigenen Kanal) - und außerdem möchtest vielleicht mehr als ein MIDI-Gerät zur gleichen Zeit anschließen. Und bei etwas komplizierteren Setups, möchtest du wahrscheinlich genauer bestimmen, welches Gerät welche(s) Signal(e) erhält, und auf welchem Kanal.

Wir können festlegen an welches Gerät wir senden, indem wir die `port:`-Option verwenden, in der wir den Gerätenamen verwenden, wie er in den Einstellungen angezeigt wird:

    midi_note_on :e3, port: "moog_minitaur"

Wir können ebenfalls angeben, an welchen Kanal gesendet werden soll, indem 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 zugleich festlegen, um an ein bestimmtes Gerät auf einen bestimmten Kanal zu senden:

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

## MIDI-Studio

Und schließlich ist es eine wirklich spannende Sache, den Audio-Ausgang deines MIDI-Synthesizers mit einem der Audio-Eingänge deiner Soundkarte zu verbinden. So kannst du deinen Synthesizer mit den `midi_*`Funktionen steuern und gleichzeitig die erzeugten Klänge mit `live_audio` und Effekten verändern:

    with_fx :reverb, room: 1 do
      live_audio :moog
    end
    live_loop :moog_trigger do
      midi (octs :e1, 3).tick, sustain: 0.1
      sleep 0.125
    end

(Die `midi`-Funktion ist eine handliche Kurzform, um `note on` - und `note off`-Ereignisse mit einem einzigen Befehl zu senden. Für weitere Informationen wirf einen Blick in ihre Dokumentation).