Com fer un controlador MIDI amb un Arduino

Com fer un controlador MIDI amb un Arduino

Com a músic que ha acumulat una col·lecció d’instruments musicals i caixes de soroll, l’humil Arduino és l’eina perfecta per crear un controlador MIDI personalitzat. Tot i que el Raspberry Pi pot haver estat el coronador dels projectes d’Internet de les coses (IoT), un simple Arduino Uno (quins són els diferents tipus d’Arduino?) Té una potència més que suficient per a aquest projecte.





La primera vegada que utilitzeu un Arduino? No us preocupeu, en tenim un complet Guia per a principiants Arduino per llegir-lo abans d’abordar aquest projecte.





Què és el MIDI?

MIDI significa Interfície digital d’instruments musicals. Esbossa una forma estàndard perquè els dispositius musicals es comuniquin entre ells. Si teniu un teclat electrònic, probablement tingueu una interfície MIDI. Tot i que hi ha alguns detalls tècnics relacionats amb la implementació del MIDI, és important recordar que el MIDI no és àudio. Les dades MIDI són un conjunt senzill d’instruccions (una instrucció s’anomena “missatge”) que un altre dispositiu pot implementar per produir diferents sons o paràmetres de control.





MIDI admet 16 canals. Això significa que cada cable pot admetre 16 dispositius diferents que es comuniquen de manera independent entre ells. Els dispositius es connecten mitjançant un cable DIN de 5 pins. DIN significa 'Institut alemany per a l'estandardització' i és simplement un cable amb cinc pins dins del connector. El USB s'utilitza sovint en lloc de DIN de 5 pins o es pot utilitzar una interfície USB-MIDI.

MIDI-Cable-Male



Control del canvi i canvi de programa

Hi ha dos tipus principals de missatges MIDI: Control Change i Program Change.

Els missatges de canvi de control (CC) contenen un número de controlador i un valor entre 0 i 127. Els missatges CC solen utilitzar-se per canviar paràmetres com el volum o el to. Els dispositius que acceptin MIDI haurien de venir amb un manual que expliqui quins canals i missatges es configuren per defecte i com canviar-los (conegut com a mapatge MIDI).





Els missatges de canvi de programa (PC) són més senzills que els missatges CC. Els missatges de PC consten d’un sol número i s’utilitzen per canviar la configuració predeterminada o el pedaç d’un dispositiu. Els missatges de l'ordinador de vegades es coneixen com a 'Patch Change'. De manera similar als missatges CC, els fabricants haurien de proporcionar un document que expliqui quines configuracions predeterminades canvien amb un missatge concret.

El que necessitareu

  • Arduino
  • Presa femella DIN de 5 pins
  • 2 x 220 ohm resistències
  • 2 resistències de 10k ohm
  • 2 interruptors momentanis
  • Filferros de connexió
  • Taula de pa
  • Cable MIDI
  • Dispositiu MIDI o interfície USB
Aigua i fusta 5 unitats DIN Connectors femelles de muntatge de PCB de 5 pins per a teclat de PC COMPRA ARA A AMAZON

Pla de construcció

Aquest projecte serà força senzill. Per descomptat, podeu afegir més botons o maquinari segons les vostres necessitats. Gairebé qualsevol Arduino serà adequat; només calen tres pins per a aquest exemple. Aquest projecte consta de dos botons per controlar el programa, un port MIDI per enviar les dades i un dispositiu per rebre els missatges. Aquest circuit s'ha construït en una placa de suport aquí, però és possible transferir-lo a una caixa de projecte i connectors soldats per obtenir una solució robusta.





Muntatge del circuit

Circuit de controlador Arduino-Midi

Connexió MIDI

MIDI-Pinout

Connecteu el sòcol MIDI de la següent manera:

  • PIN MIDI 5 a Arduino Transmit (TX) 1 mitjançant una resistència de 220 ohm
  • Pin MIDI 4 a Arduino + 5V mitjançant una resistència de 220 ohm
  • PIN 2 MIDI a terra Arduino

Botó de connexió

Els botons funcionen canviant la resistència que 'veu' l'Arduino. El pin Arduino passa pel commutador directament a terra ( BAIX ) mitjançant una resistència de 10 k ohmis (una resistència 'pull down', que garanteix que el valor es mantingui baix). Quan es prem el botó, el valor vist pel circuit canvia a + 5 v sense resistència ( ALTA ). L'Arduino pot detectar aquest canvi mitjançant el fitxer digitalRead (pin) comandament. Connecteu els botons als pins 6 i 7 de l'entrada / sortida digital (E / S) Arduino. Connecteu els dos botons:

  • Costat esquerre del botó a + 5V
  • Part dreta del botó a Arduino Ground mitjançant una resistència de 10k ohm
  • Part dreta del botó al pin Arduino (6 o 7)

Proves MIDI

Ara que s'ha acabat tot el maquinari, és hora de provar-lo. Necessitareu una interfície USB-MIDI (moltes interfícies d’àudio ho poden fer) i un cable MIDI. El port MIDI connectat a la taula de proves envia dades, per tant és la sortida. El vostre ordinador rep les dades, per tant és l’entrada. Aquest projecte utilitza l'excel·lent Arduino Biblioteca MIDI v4.2 per Quaranta-set efectes. Un cop instal·lada la biblioteca, podeu incloure-la al vostre codi anant a Esbós> Inclou biblioteca> MIDI .

També necessitareu un programa per supervisar les dades MIDI entrants:

Connecteu l'Arduino a l'ordinador i pengeu el següent codi de prova (no us oblideu de seleccionar la placa i el port correctes de Eines> Tauler i Eines> Port menús).

#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
}

Aquest codi enviarà un missatge CC, espereu 1 segon, envieu un missatge de PC i espereu 1 segon indefinidament. Si tot funciona correctament, hauríeu de veure un missatge al vostre monitor MIDI.

Si no passa res, no us espanteu! Proveu de resoldre problemes:

  • Assegureu-vos que totes les connexions siguin correctes
  • Comproveu que el port MIDI estigui cablejat correctament: hi hauria d’haver 2 pins de recanvi a les vores exteriors
  • Comproveu que el circuit sigui correcte
  • Verifiqueu que el circuit estigui connectat a una interfície USB-MIDI amb un cable MIDI
  • Comproveu que el cable MIDI estigui connectat al entrada a la vostra interfície USB-MIDI
  • Assegureu-vos que l’Arduino tingui energia
  • Instal·leu el controlador correcte per a la vostra interfície USB-MIDI

Si vostè és encara si teniu problemes, pot ser que valgui la pena revisar la vostra taula de proves. Els taulers econòmics de vegades poden ser molt inconsistents i de baixa qualitat; em va passar mentre treballava en aquest projecte.

Prova de botons

Ara és hora de provar que els botons funcionin correctament. Pengeu el codi de prova següent. No cal connectar MIDI per provar aquesta part.

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

}

Executeu aquest codi (però manteniu el cable USB connectat) i obriu el monitor de sèrie ( A la part superior dreta> Monitor de sèrie ). En prémer un botó, hauríeu de veure 'El botó primer funciona'. o 'Botó de dues obres!' en funció del botó que heu premut.

Hi ha una nota important que cal treure d’aquest exemple: el programari de rebot. Es tracta d’un retard senzill de 10 mil·lisegons (ms) entre comprovar el botó i tornar-lo a comprovar. Això augmenta la precisió de prémer el botó i ajuda a evitar que el soroll desencadeni l'Arduino. No cal que ho feu, tot i que és recomanable.

Creació del controlador

Ara que tot està connectat i funciona, és el moment de muntar el controlador complet.

Aquest exemple enviarà un missatge CC diferent per a cada botó que es prem. Estic fent servir això per controlar Ableton Live 9.6 a OS X. El codi és similar als dos exemples de proves anteriors.

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

Nota: no el podreu utilitzar Serial.println () amb sortida MIDI.

Si voleu enviar un missatge de PC en lloc d'un CC simplement substituïu:

midiOut.sendControlChange(42,127,1);

Amb:

midiOut.sendProgramChange(value, channel);

En Acció

A continuació es mostra una demostració com a controlador de Ableton Live ( El millor programari de DJ per a tots els pressupostos ). A la part superior dreta es mostren els comptadors d’àudio i a la part superior superior es mostren els missatges MIDI entrants (via Monitor MIDI a OS X).

galaxy watch active 2 vs galaxy watch 3

Heu creat un controlador MIDI?

Hi ha molts usos pràctics per a un controlador MIDI personalitzat. Podeu construir una gran unitat controlada pels peus o un elegant controlador d’estudi. I si esteu interessats a adquirir-ne un, aquí teniu els millors controladors MIDI USB que podeu comprar.

Crèdit de la imatge: Keith Gentry a través de Shutterstock.com

Esperem que us agradin els articles que recomanem i comentem. MUO té associacions afiliades i patrocinades, de manera que rebem una part dels ingressos d'algunes de les vostres compres. Això no afectarà el preu que pagueu i ens ajudarà a oferir les millors recomanacions de productes.

Compartir Compartir Tweet Correu electrònic Val la pena actualitzar-lo a Windows 11?

Windows s’ha redissenyat. Però, n’hi ha prou per convèncer-vos de canviar de Windows 10 a Windows 11?

Llegiu a continuació
Temes relacionats
  • Bricolatge
  • Programari de DJ
  • Arduino
  • Electrònica
  • MIGDIA
Sobre l'autor Joe Coburn(136 articles publicats)

Joe és llicenciat en Informàtica per la Universitat de Lincoln, Regne Unit. És un desenvolupador de programari professional i, quan no fa drons voladors ni escriu música, sovint se’l pot trobar fent fotos o produint vídeos.

Més de Joe Coburn

Subscriu-te al nostre butlletí

Uniu-vos al nostre butlletí per obtenir consells tècnics, ressenyes, llibres electrònics gratuïts i ofertes exclusives.

Feu clic aquí per subscriure-us