Comment faire un contrôleur MIDI avec un Arduino

Comment faire un contrôleur MIDI avec un Arduino

En tant que musicien qui a amassé une collection d'instruments de musique et de boîtes à bruit, l'humble Arduino est l'outil parfait pour créer un contrôleur MIDI personnalisé. Alors que le Raspberry Pi a peut-être remporté la couronne pour les projets Internet des objets (IoT), un simple Arduino Uno (quels sont les différents types d'Arduino ?) a plus que suffisamment de puissance pour ce projet.





Première utilisation d'un Arduino ? Pas de soucis, nous avons un Guide du débutant Arduino à lire avant de s'attaquer à ce projet.





Qu'est-ce que le MIDI ?

MIDI signifie Musical Instrument Digital Interface. Il décrit un moyen standard pour les appareils musicaux de communiquer entre eux. Si vous possédez un clavier électronique, vous avez probablement une interface MIDI. Bien qu'il y ait quelques détails techniques impliqués dans la mise en œuvre du MIDI, il est important de se rappeler que le MIDI n'est pas audio ! Les données MIDI sont un simple ensemble d'instructions (une instruction est appelée un « message ») qu'un autre appareil peut implémenter pour créer différents sons ou contrôler des paramètres.





Le MIDI prend en charge 16 canaux. Cela signifie que chaque câble peut prendre en charge 16 appareils différents communiquant indépendamment les uns avec les autres. Les appareils sont connectés à l'aide d'un câble DIN à 5 broches. DIN signifie « Institut allemand de normalisation » et est simplement un câble à cinq broches à l'intérieur du connecteur. L'USB est souvent utilisé à la place du DIN à 5 broches, ou une interface USB-MIDI peut être utilisée.

MIDI-Câble-Mâle



Changement de contrôle et changement de programme

Il existe deux principaux types de messages MIDI : le changement de commande et le changement de programme.

Les messages de changement de commande (CC) contiennent un numéro de contrôleur et une valeur comprise entre 0 et 127. Les messages CC sont souvent utilisés pour modifier des paramètres tels que le volume ou la hauteur. Les appareils qui acceptent le MIDI doivent être accompagnés d'un manuel expliquant quels canaux et messages sont configurés par défaut et comment les modifier (appelé mappage MIDI).





Les messages de changement de programme (PC) sont plus simples que les messages CC. Les messages PC se composent d'un seul numéro et sont utilisés pour changer le préréglage ou le patch sur un appareil. Les messages PC sont parfois appelés « Patch Change ». Comme pour les messages CC, les fabricants doivent fournir un document décrivant les préréglages modifiés par un message particulier.

Ce dont vous aurez besoin

  • Arduino
  • Prise femelle DIN 5 broches
  • 2 résistances de 220 ohms
  • 2 résistances de 10k ohms
  • 2 x interrupteurs momentanés
  • Fils de branchement
  • Planche à pain
  • câble MIDI
  • Périphérique MIDI ou interface USB
Eau & Bois 5 Pcs DIN 5 Broches Montage PCB Prises Femelles pour Clavier PC ACHETEZ MAINTENANT SUR AMAZON

Plan de construction

Ce projet sera assez simple. Vous pouvez bien sûr ajouter plus de boutons ou de matériel en fonction de vos besoins. Presque tous les Arduino conviendront - seules trois broches sont nécessaires pour cet exemple. Ce projet se compose de deux boutons pour contrôler le programme, d'un port MIDI pour envoyer les données et d'un appareil pour recevoir les messages. Ce circuit a été construit sur une maquette ici, cependant il est possible de le transférer dans un boîtier de projet et des connecteurs soudés pour une solution robuste.





Assemblage de circuits

Arduino-Midi-Contrôleur-Circuit

Connexion MIDI

Brochage MIDI

Câblez votre prise MIDI comme suit :

  • Broche MIDI 5 vers Arduino Transmit (TX) 1 via une résistance de 220 ohms
  • Broche MIDI 4 vers Arduino +5V via une résistance de 220 ohms
  • Broche MIDI 2 à la masse Arduino

Connexion des boutons

Les boutons fonctionnent en modifiant la résistance que l'Arduino 'voit'. La broche Arduino traverse le commutateur directement à la terre ( MEUGLER ) via une résistance de 10k ohms (une résistance 'pull down', garantissant que la valeur reste basse). Lorsque le bouton est enfoncé, la valeur vue par le circuit passe à +5v sans résistance ( HAUTE ). L'Arduino peut détecter ce changement en utilisant le digitalRead(pin) commander. Connectez les boutons aux broches 6 et 7 de l'entrée/sortie numérique Arduino (I/O). Connectez les deux boutons :

  • Côté gauche du bouton à +5V
  • Côté droit du bouton vers Arduino Ground via une résistance de 10k ohms
  • Côté droit du bouton vers la broche Arduino (6 ou 7)

Tests MIDI

Maintenant que tout le matériel est terminé, il est temps de le tester. Vous aurez besoin d'une interface USB-MIDI (de nombreuses interfaces audio peuvent le faire) et d'un câble MIDI. Le port MIDI câblé sur la maquette envoie des données, c'est donc la sortie. Votre ordinateur reçoit les données, c'est donc l'entrée. Ce projet utilise l'excellent Arduino Bibliothèque MIDI v4.2 par quarante-sept effets. Une fois que vous avez installé la bibliothèque, vous pouvez l'inclure dans votre code en allant sur Esquisse > Inclure la bibliothèque > MIDI .

Vous aurez également besoin d'un programme pour surveiller les données MIDI entrantes :

Connectez l'Arduino à votre ordinateur et téléchargez le code de test suivant (n'oubliez pas de sélectionner la bonne carte et le bon port dans le Outils > Tableau et Outils > Port menus).

#include
#include
#include
#include
#include
MIDI_CREATE_INSTANCE(HardwareSerial,Serial, midiOut); // create a MIDI object called midiOut
void setup() {
Serial.begin(31250); // setup serial for MIDI
}
void loop() {
midiOut.sendControlChange(56,127,1); // send a MIDI CC -- 56 = note, 127 = velocity, 1 = channel
delay(1000); // wait 1 second
midiOut.sendProgramChange(12,1); // send a MIDI PC -- 12 = value, 1 = channel
delay(1000); // wait 1 second
}

Ce code enverra un message CC, attendra 1 seconde, enverra un message PC puis attendra 1 seconde indéfiniment. Si tout fonctionne correctement, vous devriez voir un message apparaître sur votre moniteur MIDI.

Si rien ne se passe, pas de panique ! Essayez le dépannage :

  • Assurez-vous que toutes les connexions sont correctes
  • Vérifiez que le port MIDI est correctement câblé - il devrait y avoir 2 broches de rechange sur les bords extérieurs
  • Vérifiez que le circuit est correct
  • Vérifiez que le circuit est connecté à une interface USB-MIDI avec un câble MIDI
  • Vérifiez que votre câble MIDI est connecté au saisir sur votre interface USB-MIDI
  • Assurez-vous que l'Arduino est alimenté
  • Installez le bon pilote pour votre interface USB-MIDI

Si vous êtes toujours si vous rencontrez des problèmes, cela peut valoir la peine de vérifier votre planche à pain. Les planches bon marché peuvent parfois être très incohérentes et de mauvaise qualité - cela m'est arrivé en travaillant sur ce projet.

Test des boutons

Il est maintenant temps de tester que les boutons fonctionnent correctement. Téléchargez le code de test suivant. Le MIDI n'a pas besoin d'être connecté pour tester cette partie.

const int buttonOne = 6; // assign button pin to variable
const int buttonTwo = 7; // assign button pin to variable
void setup() {
Serial.begin(9600); // setup serial for text
pinMode(buttonOne,INPUT); // setup button as input
pinMode(buttonTwo,INPUT); // setup button as input
}
void loop() {

if(digitalRead(buttonOne) == HIGH) { // check button state
delay(10); // software de-bounce
if(digitalRead(buttonOne) == HIGH) { // check button state again
Serial.println('Button One Works!'); // log result
delay(250);
}
}

if(digitalRead(buttonTwo) == HIGH) { // check button state
delay(10); // software de-bounce
if(digitalRead(buttonTwo) == HIGH) { // check button state again
Serial.println('Button Two Works!'); // log result
delay(250);
}
}

}

Exécutez ce code (mais gardez le câble USB connecté) et ouvrez le moniteur série ( En haut à droite > Moniteur série ). Lorsque vous appuyez sur un bouton, vous devriez voir « Button One Works ! ou « Bouton Deux Fonctionne ! » selon le bouton sur lequel vous avez appuyé.

Il y a une note importante à retenir de cet exemple - le logiciel anti-rebond. Il s'agit d'un simple délai de 10 millisecondes (ms) entre la vérification du bouton et la vérification du bouton à nouveau. Cela augmente la précision de la pression sur le bouton et aide à empêcher le bruit de déclencher l'Arduino. Vous n'êtes pas obligé de le faire, bien que cela soit recommandé.

Création du contrôleur

Maintenant que tout est câblé et fonctionne, il est temps d'assembler le contrôleur complet.

Cet exemple enverra un message CC différent pour chaque bouton appuyé. Je l'utilise pour contrôler Ableton Live 9.6 sur OS X. Le code est similaire aux deux exemples de test ci-dessus.

#include
#include
#include
#include
#include
const int buttonOne = 6; // assign button pin to variable
const int buttonTwo = 7; // assign button pin to variable
MIDI_CREATE_INSTANCE(HardwareSerial,Serial, midiOut); // create a MIDI object called midiOut
void setup() {
pinMode(buttonOne,INPUT); // setup button as input
pinMode(buttonTwo,INPUT); // setup button as input
Serial.begin(31250); // setup MIDI output
}
void loop() {
if(digitalRead(buttonOne) == HIGH) { // check button state
delay(10); // software de-bounce
if(digitalRead(buttonOne) == HIGH) { // check button state again
midiOut.sendControlChange(56,127,1); // send a MIDI CC -- 56 = note, 127 = velocity, 1 = channel
delay(250);
}
}

if(digitalRead(buttonTwo) == HIGH) { // check button state
delay(10); // software de-bounce
if(digitalRead(buttonTwo) == HIGH) { // check button state again
midiOut.sendControlChange(42,127,1); // send a MIDI CC -- 42 = note, 127 = velocity, 1 = channel
delay(250);
}
}
}

Remarque -- vous ne pourrez pas utiliser Serial.println() avec sortie MIDI.

Si vous vouliez envoyer un message PC au lieu d'un CC, remplacez simplement :

midiOut.sendControlChange(42,127,1);

Avec:

midiOut.sendProgramChange(value, channel);

En action

Vous trouverez ci-dessous une démonstration en tant que contrôleur pour Ableton en direct ( Meilleur logiciel DJ pour tous les budgets ). Le haut à droite montre les vumètres audio, et le milieu en haut montre les messages midi entrants (via Moniteur MIDI sur OS X).

copier des fichiers de virtualbox vers l'hôte

Avez-vous fait un contrôleur MIDI ?

Il y a beaucoup d'utilisations pratiques pour un contrôleur MIDI personnalisé. Vous pouvez construire une vaste unité commandée au pied ou un contrôleur de studio élégant. Et si vous souhaitez en acheter un, voici les meilleurs contrôleurs MIDI USB que vous pouvez acheter.

Crédit d'image : Keith Gentry via Shutterstock.com

Nous espérons que vous aimez les articles que nous recommandons et dont nous discutons ! MUO a des partenariats affiliés et sponsorisés, nous recevons donc une part des revenus de certains de vos achats. Cela n'affectera pas le prix que vous payez et nous aide à offrir les meilleures recommandations de produits.

Partager Partager Tweeter E-mail Cela vaut-il la peine de passer à Windows 11 ?

Windows a été repensé. Mais est-ce suffisant pour vous convaincre de passer de Windows 10 à Windows 11 ?

Lire la suite
Rubriques connexes
  • DIY
  • Logiciel DJ
  • Arduino
  • Électronique
  • MIDI
A propos de l'auteur Joe Coburn(136 articles publiés)

Joe est diplômé en informatique de l'Université de Lincoln, au Royaume-Uni. C'est un développeur de logiciels professionnel, et lorsqu'il ne pilote pas de drones ou n'écrit pas de musique, on le trouve souvent en train de prendre des photos ou de produire des vidéos.

Plus de Joe Coburn

Abonnez-vous à notre newsletter

Rejoignez notre newsletter pour des conseils techniques, des critiques, des ebooks gratuits et des offres exclusives !

Cliquez ici pour vous abonner
Catégorie Diy