Comment faire un contrôleur MIDI avec un Arduino

En tant que musicien qui a accumulé une collection d'instruments de musique et de boîtes de bruit, l'humble Arduino est l'outil parfait pour créer un contrôleur MIDI personnalisé.

En tant que musicien qui a accumulé une collection d'instruments de musique et de boîtes de bruit, l'humble Arduino est l'outil parfait pour créer un contrôleur MIDI personnalisé.
Publicité

En tant que musicien qui a accumulé une collection d'instruments de musique et de boîtes de bruit, l'humble Arduino est l'outil parfait pour créer un contrôleur MIDI personnalisé. Alors que le Raspberry Pi a peut-être pris la couronne de l'Internet des Objets (IoT) L'Internet des Objets: 10 produits utiles que vous devez tester en 2016 L'Internet des Objets: 10 produits utiles que vous devez tester en 2016 L'Internet des Objets 2016, mais qu'est-ce que cela signifie exactement? Comment profitez-vous personnellement de l'Internet des objets? Voici quelques produits utiles à illustrer. Lire plus de projets, un simple Arduino Uno (quels sont les différents types d'Arduino? Arduino Guide d'achat: Quel conseil devriez-vous obtenir? Arduino Guide d'achat: Quel conseil devriez-vous obtenir? Il existe tellement de différents types de cartes Arduino là-bas, vous Soyons pardonnés d'être confus.Que devriez-vous acheter pour votre projet? Laissez-nous vous aider, avec ce guide d'achat Arduino! Lire la suite) a plus de suffisamment de puissance pour ce projet.

Première fois en utilisant un Arduino? Pas de soucis, nous avons un guide complet pour débutants Arduino Initiation à Arduino: Guide du débutant Initiation à Arduino: Guide du débutant Arduino est une plate-forme de prototypage électronique open source basée sur du matériel et des logiciels flexibles et faciles à utiliser. Il est destiné aux artistes, designers, amateurs et toute personne intéressée par la création d'objets ou d'environnements interactifs. Lire la suite à lire avant de vous attaquer à ce projet.

Arduino-Midi-Contrôleur-Breadboard

Qu'est ce que le MIDI?

MIDI est l'acronyme de Musical Instrument Digital Interface. Il décrit un moyen standard pour les appareils musicaux de communiquer les uns avec les autres. 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 l'implémentation du MIDI, il est important de se rappeler que le MIDI n'est pas audio! Les données MIDI sont un simple jeu d'instructions (une instruction est appelée un "message") qu'un autre périphérique peut implémenter pour produire des sons ou des paramètres de contrôle différents.

MIDI prend en charge 16 canaux. Cela signifie que chaque câble peut supporter 16 dispositifs 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 est l'abréviation de "German Institute for Standardization" et est simplement un câble avec 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.

Câble MIDI-Mâle

Contrôler le changement et le changement de programme

Il existe deux principaux types de messages MIDI: Control Change et Program Change.

Les messages de changement de contrôle (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 devraient être accompagnés d'un manuel expliquant quels canaux et quels messages sont configurés par défaut, et comment les changer (connu sous le nom de mapping MIDI).

Les messages de changement de programme (PC) sont plus simples que les messages CC. Les messages PC sont constitués d'un seul numéro et servent à modifier le préréglage ou le correctif sur un périphérique. Les messages PC sont parfois appelés "Patch Change". De même que pour les messages CC, les fabricants doivent fournir un document décrivant les préréglages modifiés par un message particulier.

Ce dont tu auras besoin

  • Arduino
  • Prise femelle DIN 5 broches
  • 2 résistances de 220 ohms
  • Résistances 2 x 10k ohms
  • 2 x commutateurs momentanés
  • Câbles de branchement
  • Planche à pain
  • Câble MIDI
  • Périphérique MIDI ou interface USB

Eau et Bois 5 Pcs DIN 5 broches PCB Montage Femelle Douilles pour PC Clavier Eau et Bois 5 Pcs DIN 5 Pin PCB Montage Douilles femelles pour PC Keyboard Acheter maintenant sur Amazon $ 4.59

Construire un plan

Ce projet sera assez simple. Vous pouvez bien sûr ajouter plus de boutons ou de matériel pour répondre à vos besoins. Presque tout Arduino sera approprié - seulement trois broches sont nécessaires pour cet exemple. Ce projet consiste en deux boutons pour contrôler le programme, un port MIDI pour envoyer les données et un périphérique pour recevoir les messages. Ce circuit a été construit sur une planche à pain. Débutant: 10 compétences que vous devez connaître Électronique débutant: 10 compétences que vous devez savoir Beaucoup d'entre nous n'ont jamais touché un fer à souder - mais rendre les choses incroyablement enrichissantes. Voici dix des compétences les plus élémentaires de l'électronique de bricolage pour vous aider à démarrer. Lire la suite ici, mais il est possible de le transférer dans une boîte de projet et des connecteurs soudés pour une solution robuste.

Circuit d'assemblage

Arduino-Midi-Controller-Circuit

Connexion MIDI

MIDI-Pinout

Câblez votre socket MIDI comme suit:

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

Bouton de connexion

Les boutons fonctionnent en changeant la résistance que l'Arduino "voit". La broche Arduino passe à travers l'interrupteur directement à la masse ( LOW ) via une résistance de 10k ohms (une résistance «pull down», assurant que la valeur reste faible). Lorsque le bouton est pressé, la valeur vue par le circuit passe à + 5v sans résistance ( HIGH ). L'Arduino peut détecter ce changement en utilisant la commande digitalRead (pin) . Connectez les boutons aux broches 6 et 7 de l'entrée / sortie numérique Arduino (E / S). Connectez les deux boutons:

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

Test 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 carte d'essai envoie des données, c'est donc la sortie. Votre ordinateur reçoit les données, donc c'est l'entrée. Ce projet utilise l'excellente Arduino MIDI Library v4.2 de Forty Seven Effects. Une fois la bibliothèque installée, vous pouvez l'inclure dans votre code en accédant à Esquisse> Inclure la bibliothèque> MIDI .

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

  • Moniteur MIDI pour OS X
  • MIDI-OX pour Windows
  • KMidimon pour Linux

Connectez l'Arduino Premiers pas avec votre kit de démarrage Arduino - Installation des pilotes et configuration de la carte et du port Premiers pas avec votre kit de démarrage Arduino - Installation des pilotes et configuration de la carte et du port Vous avez acheté un kit de démarrage Arduino. peut-être quelques autres composants cool aléatoire - et maintenant? Comment avez-vous réellement commencé à programmer cette chose Arduino? Comment le configurer ... Lisez la suite sur votre ordinateur et téléchargez le code de test suivant (n'oubliez pas de sélectionner la carte et le port corrects dans les menus Outils> Carte et Outils> Port ).

#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 apparaître un message sur votre moniteur MIDI.

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

  • Assurez-vous que toutes les connexions sont correctes
  • Vérifiez que le port MIDI est correctement branché - il devrait y avoir 2 épingles de rechange sur les bords extérieurs
  • Double-vérifier 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é à l' entrée de votre interface USB-MIDI
  • Assurez-vous que l'Arduino a le pouvoir
  • Installez le pilote approprié pour votre interface USB-MIDI

Si vous rencontrez toujours des problèmes, il peut être utile 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 de bouton

Maintenant, il est temps de tester 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 "Button Two Works!" Selon le bouton sur lequel vous avez appuyé.

Il y a une note importante à retenir de cet exemple: le logiciel de-bounce. Il s'agit d'un délai de 10 millisecondes (ms) entre la vérification du bouton et la vérification du bouton. Cela augmente la précision de la pression sur le bouton et permet d'éviter le bruit qui déclenche l'Arduino. Vous n'avez pas à faire cela, même si c'est recommandé.

Créer le contrôleur

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

Cet exemple envoie un message CC différent pour chaque bouton enfoncé. J'utilise ceci 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 une sortie MIDI.
Si vous souhaitez envoyer un message PC au lieu d'un CC, remplacez simplement:

 midiOut.sendControlChange(42, 127, 1); 

Avec:

 midiOut.sendProgramChange(value, channel); 

En action

Voici une démonstration en tant que contrôleur pour Ableton Live (Le meilleur logiciel DJ pour tous les budgets Le meilleur logiciel DJ pour chaque budget Le meilleur logiciel DJ pour chaque budget Un bon logiciel de mixage peut faire toute la différence dans vos performances Que vous utilisiez un Mac Windows ou Linux, tous les niveaux de compétence et de budget sont pris en compte si vous voulez commencer à faire du DJing. Le haut à droite montre les compteurs audio, et le haut du milieu montre les messages MIDI entrants (via le moniteur MIDI sur OS X).

Avez-vous fait un contrôleur MIDI?

Il y a beaucoup d'utilisations pratiques pour un contrôleur MIDI personnalisé. Vous pourriez construire une vaste unité contrôlée par le pied, ou un contrôleur de studio élégant. Avez-vous fait un contrôleur MIDI personnalisé? Faites-moi savoir dans les commentaires, j'aimerais les voir!

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

In this article