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

Le but de ce mini-projet est de concevoir son propre contrôleur MIDI pour faire de la MAO (Musique Assistée par Ordinateur) avec le logiciel Ableton Live. 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 synthétiseurs, Ableton a créé une application en ligne sous forme de tutoriel. Suivre ce tutoriel sur le lien ci-dessous.

Learning Synths from Ableton

Prise en main d’Ableton Live

Ici, nous apprendrons à prendre en main Ableton Live Intro 11 pour comprendre son fonctionnement et la façon dont nous l’utiliserons pour ce projet.

Ouvrir le logiciel Ableton et suivre le tutoriel sur le lien ci-dessous.

Ressources supplémentaires :

Des leçons intégrées à Ableton sont accessibles grâce à la fenêtre « Aide ».

Playlist de mini-tutoriels créés par Martin Mestres pour la prise en main d’Ableton Live :

Des fichiers MIDI gratuits reprenant les œuvres de J.S. Bach :

http://www.jsbach.net/midi/

Conception d’un contrôleur MIDI :

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.

Choix de l’interface

Etape 1 : Choisir l’instrument virtuel dans la collection d’Ableton que vous voulez contrôler (cela peut être un élément de batterie ou un autre instrument).

Etape 2 : Tester l’instrument virtuel. Ajouter des effets. Choisir les paramètres de l’instrument virtuel que vous voulez gérer avec le contrôleur.

Etape 3 : Choisir parmi les capteurs à votre disposition ceux qui permettront de modifier les paramètres précédemment choisis.

Etape 4 : Créer un croquis de l’interface homme-machine de votre contrôleur.

Faire valider cette étape par votre professeur.

A ce stade, vous pouvez fournir à vos camarades d’ITEC votre croquis ainsi que les dimensions et références de vos capteurs afin qu’ils construisent le boitier de votre contrôleur.

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.

Pour téléverser le programme dans la carte Teensy il faudra changer le type de carte dans « outils » pour sélectionner la carte Teensy 4.0 (tout en bas de la liste). Si elle n’apparait pas appeler le professeur.

Il faudra aussi choisir le bon port. Le nom de la carte doit apparaitre dans le port si elle est branchée.

Etape 1 : Tester un à un vos capteurs avec le moniteur série. Analyser les valeurs affichés sur le moniteur série.

En MIDI, les valeurs de paramètres ou de notes vont de 0 à 127 (sur 7 bits). Si vos capteurs envoient des valeurs au-delà de 127, il est nécessaire d’échelonner les valeurs pour que les valeurs minimum et maximum de votre capteur correspondent respectivement à 0 et à 127.

Etape 2 : Faire un programme avec tout vos capteurs qui affichent les valeurs initiales et les valeurs adaptées sur le moniteur série.

Etape 3 : Pour ne pas surcharger la communication, créer un programme permettant d’afficher les valeurs adaptées de vos capteurs seulement lorsque leurs valeurs changent (si la nouvelle valeur est différente de la précédente).

Faire valider cette étape par votre professeur.

Ressources :

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

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.

Faire valider cette étape par votre professeur.

Conception du boitier

Partie réalisée par les ITEC.