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).