Mini-projet : Conception d’un contrôleur MIDI + DMX

Le but de ce mini-projet est de concevoir son propre contrôleur MIDI et DMX pour faire de la MAO (Musique Assistée par Ordinateur) avec le logiciel Ableton Live et de synchroniser la lumière avec le son. Plusieurs étapes permettront de comprendre le fonctionnement d’un contrôleur MIDI et de la MAO :

Préambule

Le Musical Instrument Digital Interface ou MIDI est un protocole de communication et un format de fichier dédiés à la musique, et utilisés pour la communication entre instruments électroniquescontrôleursséquenceurs, et logiciels de musique.

Apparu dans les années 1980, issu d’une volonté de l’industrie de normaliser les échanges entre les différents instruments, ce protocole est devenu aujourd’hui un standard très répandu dans le matériel électronique de musique.

Wikipédia (MIDI)

Le contrôleur MIDI que l’on va concevoir ici permettra d’envoyer et de recevoir des messages MIDI afin de faciliter l’utilisation d’un logiciel de MAO (Musique Assistée par Ordinateur).

Le logiciel de MAO que l’on utilisera est Ableton Live (version Ableton Live 11 Intro).

Voici une vidéo d’exemple d’une utilisation d’un contrôleur MIDI avec Ableton Live :

Pour comprendre le fonctionnement de la MAO nous allons d’abord nous intéresser à la synthèse sonore et ses différents paramètres. Nous pourrons ensuite apprendre à utiliser le logiciel Ableton Live pour ensuite construire notre propre contrôleur MIDI.

Introduction à la synthèse sonore

https://www.youtube.com/watch?v=QEpk6feHMxQ

https://www.youtube.com/watch?v=0kW6ZMaDhGk

https://classic-intro.net/introductionalamusique/vingtieme3.html

Pour apprendre à utiliser les séquenceurs et les synthétiseurs, Ableton a créé une application en ligne sous forme de tutoriel. Suivre ce tutoriel sur le lien ci-dessous.

Learning music from Ableton

Learning Synths from Ableton

Conception d’un contrôleur MIDI et DMX :

Maintenant que nous savons utilisez Ableton Live il est temps de créer un contrôleur MIDI qui vous facilitera son utilisation.

Le contrôleur que vous allez concevoir permettra de gérer une piste d’instrument virtuel. Vous allez dans un premier temps choisir votre interface avec les capteurs à votre disposition pour modifier des effets, le volume, le pitch, etc… Vous devrez ensuite programmer une carte électronique rattaché à ces capteurs pour envoyer les bons messages MIDI via la liaison USB à l’ordinateur et au logiciel. La dernière phase sera de rattacher les commandes MIDI à Ableton Live.

Le contrôleur nous permettra aussi de contrôler une lumière scénique via le protocole DMX.

Vous êtes en binôme, un élève s’occupera de la partie DMX tandis que l’autre s’occupera de la partie MIDI. Il est cependant nécessaire de vous coordonner pour l’utilisation des capteurs et vous pouvez évidemment vous entraider.

L’interface

Vous allez programmer plusieurs capteurs afin qu’ils contrôlent le logiciel Ableton via le protocole MIDI et le projecteur via le protocole DMX.

Pour cela vous devez utiliser les capteurs suivants :

  • 1 bouton poussoir rouge – Active/désactive le son de l’instrument Ableton.
  • 1 bouton poussoir bleu – Active/désactive la lumière du projecteur DMX.
  • 1 fader – Modifie la valeur du volume de l’instrument Ableton / Fais varier l’intensité lumineuse du projecteur DMX.
  • 3 potentiomètres rotatifs – Modifie la valeur d’un effet de l’instrument Ableton et du projecteur DMX.
  • 1 encodeur optique – Modifie la valeur d’un effet de l’instrument Ableton et du projecteur DMX.
  • 1 sélecteur – Change le son de l’instrument Ableton / Change un effet sur le projecteur DMX.
  • 1 ou 4 PAD Trellis de 16 touches – Sert de séquenceur pour l’instrument Ableton / Active et désactive le projecteur DMX pour un effet stroboscopique qui suit le rythme de la musique.
  • 1 bouton poussoir jaune – Active/désactive un effet de l’instrument d’Ableton / Active/désactive le suivi du pad pour l’effet stroboscopique du projecteur DMX.
  • Au choix :
    • 1 capteur ToF de distance – Modifie la valeur d’un effet de l’instrument Ableton et du projecteur DMX.
    • 1 joystick – Modifie la valeur de deux effets (X et Y) de l’instrument Ableton et du projecteur DMX.
    • 1 gyroscope/accéléromètre MPU 6050 – Modifie la valeur d’un ou plusieurs effets de l’instrument Ableton et du projecteur DMX.
  • 1 bouton poussoir vert lié au capteur précédent – Active/désactive l’envoi de donnée du capteur.

Les attendus

  1. Un tableau d’assignation des entrées/sorties de la carte Teensy en fonctions des capteurs et modules.
  2. Un tableau d’assignation d’effets DMX avec numéro de canal en fonction des capteurs.
  3. Un tableau d’assignation d’effets MIDI avec numéro de CC en fonction des capteurs.
  4. Un schéma de câblage identique au réel avec la désignation de chaque capteurs se référant au tableaux (attendus 1, 2 et 3) – Créer des composants si non trouvables sur Internet.
  5. Une photo du contrôleur avec la désignation de chaque capteurs se référant au tableaux (attendus 1, 2 et 3).

Vous réunirez les 3 tableaux d’assignation (attendus 1, 2 et 3) lorsque ceux-ci seront terminés.

Câblage

Pour des soucis d’interférence, nous brancherons les alimentations des capteurs PAD Trellis et boutons poussoirs LED sur le 5V. Les autres capteurs se brancheront sur le 3,3V.

Programmation

Pour la programmation des différents capteurs nous utiliserons une carte Teensy 4.0 qui est particulièrement adaptée pour la communication MIDI ainsi que l’environnement de programmation Arduino.

Vous pouvez vous référerez au 2 activités effectuées précédemment pour reprendre les bases de programmation DMX et MIDI :

A la suite vous trouverez aussi plusieurs ressources vous permettant d’avancer dans ce projet.

Les boutons poussoirs

Pour l’utilisation de bouton vous pouvez vous aider de cette page et utiliser la bibliothèque « bounce.h » :

Lien vers la page

Envoi des messages MIDI

La suite consiste à envoyer des messages MIDI par la connexion USB, dans « outils », sélectionner « MIDIx4 » dans « USB type » (il ne sera alors plus possible d’utiliser le moniteur série).

En reprenant l’activité déjà effectué sur la génération d’une note MIDI et en s’aidant de la documentation sur la gestion MIDI de la carte Teensy (https://www.pjrc.com/teensy/td_midi.html), modifier votre code pour envoyer les messages MIDI souhaités.

Pour envoyer des notes on utilisera les commandes :

usbMIDI.sendNoteOn(note, velocity, channel);
usbMIDI.sendNoteOff(note, velocity, channel);

Pour envoyer des valeurs de paramètres (effets, volumes, etc…) on utilisera la commande :

usbMIDI.sendControlChange(control, value, channel);

Programmes d’exemples

Dans ce dossier compressé vous trouverez :

  • Un programme teensy_midi_dmx.ino, permettant de modifier 3 CC MIDI et 3 canaux DMX à l’aide de deux potentiomètres rotatifs et un fader. Un bouton est aussi programmer, si il est inactif cela créé un black out DMX (tous les canaux DMX sont à zéro).
  • Un programme teensy_PAD_SEL_MIDI_DMX.ino, permettant de programmer le pad Trellis en séquenceur MIDI et d’éclairer un projecteur en DMX en fonction de la séquence. Il intègre aussi le sélecteur afin de changer la note joué par le séquenceur. Attention, les valeurs du sélecteur doivent être calibré via le programme suivant et intégré à celui-ci.
  • Un programme Calibration_selecteur, permettant d’afficher sur moniteur série les valeurs du sélecteur pour chacune des positions.

Pour que les programmes d’exemples fonctionnent il est nécessaire d’adapter les valeurs des broches sur lesquels sont câblés vos capteurs et les valeurs des canaux DMX en fonction de votre projecteur.

Définition d’un nom le contrôleur

Créer un fichier texte « name.c » et l’enregistrer dans le dossier où se situe le programme Arduino.

Copier-coller les lignes de codes suivantes dans le fichier et remplacer les caractères dans la variable MIDI_NAME par ceux de votre nouveau nom de contrôleur et en remplaçant la valeur de la variable MIDI_NAME_LEN par le nombre de caractère de votre nouveau nom.

#include "usb_names.h"

#define MIDI_NAME   {'B','A','R',' ','1'}
#define MIDI_NAME_LEN  5

struct usb_string_descriptor_struct usb_string_product_name = {
        2 + MIDI_NAME_LEN * 2,
        3,
        MIDI_NAME
};

Enregistrer à nouveau votre fichier.

Affectation MIDI sur Ableton

Une fois que votre contrôleur envoi les bons messages MIDI il est nécessaire d’affecter les capteurs aux effets choisis.

Brancher en USB le contrôleur au PC.

Dans le menu « Options », aller dans « Préférences » puis dans « Link Tempo MIDI » et vérifier que votre contrôleur est bien repéré dans l’interface « MIDI ports ».

Sélectionner toutes les cases (Piste, Sync, Téléc., MPE) en entrée (« IN ») pour autoriser toutes les interactions entre le logiciel et le contrôleur.

Fermer la fenêtre.

Cliquer en haut à droite de la fenêtre principale sur le bouton « MIDI ».

Pour affecter un capteur à un effet il suffit alors de sélectionner un bouton d’effet puis de changer la valeur du capteur (en le bougeant par exemple) pour les lier entre eux.

Faire cette manipulation pour tous les effets que voulez affecter à votre contrôleur.

Pour sortir du mode affectation MIDI il suffit de cliquer à nouveau sur le bouton « MIDI ».

Vérifier alors que vos capteurs contrôle bien les effets désirés.