# Sortie MIDI

En plus de recevoir des événements MIDI, nous pouvons également envoyer des événements MIDI pour déclencher et contrôler des équipements externes comme les synthés, claviers et autres périphériques. Sonic Pi propose un ensemble complet de fonctions pour envoyer des messages MIDI variés comme :

1. Note activée - `midi_note_on`
2. Note désactivée - `midi_note_off`
3. Contrôler le changement - `midi_cc`
4. Amplitude courbée - `midi_pitch_bend`
5. Tic d’horloge - `midi_clock_tick`

Il y a plein d’autres messages MIDI supportés également - jetez un coup d’œil à la documentation de l’API pour toutes les autres fonctions qui débutent par `midi_`.

## Se connecter à un périphérique MIDI

Dans le but d’envoyer un message MIDI à un périphérique externe, nous devons commencer par le connecter. Regardez la sous-section ‘Se connecter à un contrôleur MIDI’ dans la section 11.1 pour plus de détails. Notez que si vous utilisez l’USB, connecter un périphérique à lequel vous envoyez (au lieu de recevoir) est la même procédure. Cependant, si vous utilisez les connecteurs DIN classiques, assurez-vous de connecter le port de sortie MIDI à votre ordinateur. Vous devriez voir votre périphérique MIDI listé dans le panneau des préférences.

## Envoyer des événements MIDI

Les nombreuses fonctions `midi_*` fonctionnent comme `play`, `sample` et `synth` puisqu’elles envoient un message au temps (logique) actuel. Par exemple, pour étaler des appels aux fonctions `midi_*`, vous devez utiliser `sleep` tout comme vous l’avez fait avec `play`. Jetons un coup d’oeil :

    midi_note_on :e3, 50

Cela va envoyer une note MIDI sur l’événement au périphérique MIDI connecté avec une vélocité de 50. ( Notez que Sonic Pi va convertir automatiquement les notes dans le format `:e3` à leur nombre MIDI correspondant comme 52 dans ce cas-ci.)

Si votre périphérique MIDI connecté est un synthétiseur, vous devriez être capable de l’entendre jouer une note. Pour le désactiver, utiliser `midi_note_off` :

    midi_note_off :e3

## Sélectionner un périphérique MIDI

Par défaut, Sonic Pi va envoyer chaque message MIDI à tout les périphériques connectés sur tous les canaux MIDI. Cela est fait dans le but de rendre facile le travail avec un périphérique connecté sans avoir à configurer quoi que ce soit. Cependant, parfois un périphérique MIDI va traiter les canaux MIDI d’une manière particulière ( peut-être que chaque note a un canal séparé) et vous pourriez également vouloir connecter plus d’un périphérique MIDI en même temps. Dans des configurations plus compliquées, vous pouvez vouloir être plus sélectif sur quel périphérique MIDI reçoit quel(s) message(s) et sur quel canal.

On peut spécifier à quel périphérique on veut envoyer en utilisant l’option `port:`, en utilisant le nom du périphérique comme affiché dans les préférences :

    midi_note_on :e3, port: "moog_minitaur"

On peut également spécifier quel canal on veut envoyer en utilisant l’option `channel:` (en utilisant une valeur dans l’intervalle de 1 à 16) :

    midi_note_on :e3, channel: 3

Évidemment, nous pouvons aussi spécifier les deux en même temps pour envoyer à un périphérique spécifique sur un canal spécifique :

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

## Studio MIDI

Finalement, une chose très amusante à faire est de connecter la sortie audio de votre synthétiseur MIDI à l’une des entrées audio de votre carte de son. Vous pouvez alors contrôler votre synthé avec du code en utilisant les fonctions `midi_*` et également manipuler l’audio en utilisant `live_audio` et FX :

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

(La fonction `midi` est disponible en tant que raccourci pratique pour envoyer les événements de notes ouvertes et fermées avec une simple commande. Regarder sa documentation pour davantage d’informations).