Fabrica el teu propi controlador MIDI amb Arduino

MIDI

Si ets amant de la música o directament un músic amateur o professional segur que a casa teva has anat acumulant una gran col·lecció d'instruments musicals. Per fer que tot aquests es barregin a la perfecció el millor és fer-te amb un controlador MIDI. Lamentablement aquest tipus d'objectes solen ser bastant cars pel que una persona sense massa recursos té difícil accedir a tot el que poden arribar a oferir.

Per entendre molt millor el que és un controlador MIDI, comentar-te que la paraula MIDI prové de Interfície digital d’instruments musicals, És a dir, una mena de controlador que fa que els dispositius musicals electrònics puguin comunicar-se entre si. En cas que tinguis a casa teva, per exemple, un teclat electrònic, és més que probable que aquest tingui una interfície MIDI. Abans de continuar avançant, tot i que hi ha certs detalls tècnics que poden fer creure el contrari, cal tenir molt clar que MIDI no és àudio.

Crea el teu propi controlat MIDI amb aquest senzill tutorial

Un cop tenim clar això, segur que et serà molt més fàcil entendre que MIDI tan sols és un simple conjunt d'instruccions capaç de suportar fins a 16 canals independents, El que significa que pot haver fins a 16 dispositius diferents comunicant independentment entre si. Aquests dispositius han de connectar-se a través d'un cable DIN de 5 patilles que bàsicament és un cable amb cinc pins dins d'un connector. Com a detall, és bastant comú utilitzar un USB en lloc d'un DIN de 5 patilles, en cas d'utilitzar un USB hem de crear una interfície USB-MIDI.

Sense més, et deixo amb l'enllaç on poder trobar el tutorial pas a pas amb una gran quantitat de imatges descriptives on poder realitzar totes les accions necessàries per crear el nostre propi controlador MIDI.

Article relacionat:
Com canviar l'usuari Pi i la contrasenya en la nostra Raspberry Pi

Com fabricar el teu propi controlador MIDI amb Arduino

connector midi

Moltes són les persones que necessiten, per diferents motius tant personals com professionals, utilitzar un controlador MIDI totalment personalitzat a causa de que potser i com a exemple, en algun moment de la seva vida com a artista pugui que comprar un controlador MIDI econòmic no compleixi amb les expectatives o necessitats mentre que, arribat el moment, decantar-se per una versió professional, pugui ser excessiu tant en recursos econòmics que necessites, com en la gran quantitat de característiques que poden oferir.

A causa d'això, avui vull mostrar tot el necessari perquè puguis fabricar el teu propi controlador MIDI indicant tant tot el necessari per a la seva construcció com oferir-te el programari que necessitaràs instal·lar. Com detall, per a aquest projecte és fonamental l'ús d'una targeta Arduino, un controlador que és prou potent com per dur a terme aquesta llauro.

Com fer un robot
Article relacionat:
Com fer un robot: 3 opcions diferents

Què és un controlador MIDI?

midi

Bàsicament un controlador MIDI és l'encarregat, a grans trets, de connectar diferents dispositius musicals entre si. Molts són els instruments que l'incorporen una interfície MIDI tot i que, això cal tenir-ho molt clar ja que hi ha molts usuaris que solen confondre, MIDI no és ni molt menys un arxiu d'àudio, sinó un conjunt molt simple d'instruccions que un instrument pot rebre per realitzar diferents ajustaments de control o en els sons.

Dins el MIDI hi ha dos tipus diferents, D'una banda tenim el denominat com a Control de Canvi on el mateix posseeix el nombre de controlador i un valor entre 0 i 127. Gràcies a això es poden emetre missatges on es poden canviar diferents paràmetres com el volum o el to. Els diferents instruments que accepten MIDI han de portar amb si un manual on explica quins canals i missatges es configuren per defecte i com canviar-los.

En segon lloc tenim el Canvi de Programa, una sèrie de missatges que al seu torn són molt més simples que els que conformen el Control de Canvi. Aquest tipus de missatges s'utilitzen per canviar el preset o el pegat d'un dispositiu. A l'igual que en Control de Canvi, juntament amb el teu instrument el fabricant ha d'incloure un manual on s'indica què presets es canvien per un missatge en particular.

Peces necessàries per construir el teu propi controlador MIDI casolà

Esquema de connector midi

Per aconseguir construir el teu propi controlador MIDI et caldrà un seguit de peces a més, com ja hem esmentat, d'una placa Arduino. Abans de continuar, comentar-te tan sols que potser, en un futur a causa de que vulguis ampliar el projecte, necessites més coses encara que, en aquest moment amb unes poques peces tindràs de sobres.

Ens caldrà un cable DIN de 5 pols femella, 2 resistències de 220 ohms, 2 interruptors momentanis, 2 resistències de 10k ohms, fils per connexió, un tauler de circuits, cable MIDI i un dispositiu MIDI o interfície USB. Amb tan sols aquestes peces ja podràs començar, seguint els meus passos, a fabricar el teu propi controlador MIDI.

Primers passos

Esquema arduí midi

Abans de començar et deixo una fotografia on poder veure els pins de la teva cable MIDI, d'aquesta manera podrem indentificar correctament els pins i sobretot on cal connectar cadascun. A grans trets l'única cosa que cal fer en aquest punt és connectar el pin 5 de el cable a una resistència de 220 ohms i d'aquí a l'Arduino Transmit 1, el pin 4 a una resistència de 220 ohms i d'aquí a la presa de 5V d'Arduino mentre que el pin 2 cal connectar-lo a la connexió de Terra de la teva controlador.

Un cop fet aquest pas, no tens un esquema detallat a la foto que hi ha situada just sota aquestes línies, arriba el moment de connectar els botons. La idea en aquest apartat és la d'aconseguir, utilitzant el pin digitalRead (capaç de detectar quan canvia el voltatge que arriba a el mateix) poder utilitzar un transistor per aconseguir, amb tan sols prémer un botó. Per això tan sols hem d'utilitzar un botó de manera que, al costat esquerre de la mateixa el connectem a 5V, el costat dret a una resistència de 220 ohms i d'aquí a terra mentre que, al seu torn, el costat dret també ho connectem a el pin 6. el segon botó s'instal·laria de la mateixa manera tot i que, com pots veure en el diagrama, en lloc de a el pin 6 el connectem a el 7.

Software a utilitzar per al controlador midi casolà

Un cop hem acabat amb tot el maquinari, arriba el moment de connectar el nostre instrument i provar. Abans d'això necessitem disposar d'una interfície USB-MIDI i un cable MIDI per connectar la placa, que està enviant dades, amb el nostre ordinador. Per aconseguir això, ens hem decantat per la biblioteca MIDI v4.2 creada pels nois de Forty Seven Effects que hem de tenir-la instal·lada en la nostra Arduino i inclosa en el projecte.

En el cas de l'ordinador necessitarem un programa que sigui capaç de supervisar totes les dades MIDI que arriben a el mateix des Arduino. Per això tenim diferents possibilitats com pot ser Monitor MIDI (OS X), MIDI-OX (Windows) o Kmidimon (Linux)

Per fer una petita prova tan sols hem de connectar la Arduino al nostre ordinador i executar el següent codi:

#include
#include
#include
#include
#include

MIDI_CREATE_INSTANCE(HardwareSerial,Serial, midiOut); // crear objeto de salida MIDI llamado midiOut

void setup() {
Serial.begin(31250); // configuracion de serial para MIDI
}

void loop() {
midiOut.sendControlChange(56,127,1); // envío de señal MIDI CC -- 56 = nota, 127 = velocidad, 1 = canal
delay(1000); // retraso
midiOut.sendProgramChange(12,1); // envío de una señal MIDI PC -- 12 = valor, 1 = canal
delay(1000); // retraso de 1 segundo
}

Si tot ha anat bé, pots passar a la prova de botons, en cas que no t'hagi funcionat aquesta prova has d'assegurar que totes les connexions són correctes, el circuit està exactament igual a l'esquema anterior, el circuit està connectat a una interfície USB-MIDI amb un cable MIDI, Els cables de port MIDI estan correctament connectats, el cable MIDI està connectat a l'entrada de la interfície USB-MIDI, la placa Arduino està correctament connectada a la xarxa elèctrica i li arriba alimentació suficient ...

Provant que els botons funcionen correctament

Abans de seguir alimentant el nostre programa amb noves funcionalitats i codi en el qual puguem perdre'ns, val la pena aturar-se un moment i provar que els botons funcionen correctament. Per a ells hem de carregar el següent codi:

const int boton1 = 6; // asignacion del boton a una variable
const int boton2 = 7; // asignacion del boton a una variable

void setup() {
Serial.begin(9600); // configuracion del serial
pinMode(boton1,INPUT); // configuracion del boton1 como entrada
pinMode(boton2,INPUT); // configuracion del boton2 como entrada
}

void loop() {

if(digitalRead(boton1) == HIGH) { // prueba de estado del boton1
delay(10); // retraso
if(digitalRead(boton1) == HIGH) { // prueba de estado de nuevo
Serial.println("Boton 1 funciona correctamente!"); // log
delay(250);
}
}

if(digitalRead(boton2) == HIGH) { // prueba de boton 2
delay(10); // retraso
if(digitalRead(boton2) == HIGH) { // prueba de estado de nuevo
Serial.println("Boton 2 funciona correctamente!"); // log
delay(250);
}
}

}

Aquest codi tan sols cal compilar-i executar de manera que, amb el cable USB connectat, el programa ens indiqui si algun dels botons ha estat premut.

Creem el nostre controlador MIDI casolà

Un cop hem executat aquestes proves arriba el moment de muntar el nostre propi controlador MIDI per això tan sols hauràs de compilar el següent codi:

#include
#include
#include
#include
#include

const int boton1 = 6; // asignamos boton a la variable
const int boton2 = 7; // asignamos boton a la variable

MIDI_CREATE_INSTANCE(HardwareSerial,Serial, midiOut); // create a MIDI object called midiOut

void setup() {
pinMode(boton1,INPUT); // configuracion del boton1 como una entrada
pinMode(boton2,INPUT); // configuracion del boton2 como una entrada
Serial.begin(31250); // configuracion MIDI de salida
}

void loop() {
if(digitalRead(buttonOne) == HIGH) { // comprobacion de estado
delay(10); // retraso
if(digitalRead(buttonOne) == HIGH) { // comprobacion de estado de nuevo
midiOut.sendControlChange(56,127,1); // envío un MIDI CC -- 56 = nota, 127 = velocidad, 1 = canal
delay(250);
}
}

if(digitalRead(buttonTwo) == HIGH) { // comprobacion de estado
delay(10); // retraso
if(digitalRead(buttonTwo) == HIGH) { // nueva comprobacion de estado
midiOut.sendControlChange(42,127,1); // envío un MIDI CC -- 42 = nota, 127 = velocidad, 1 = canal
delay(250);
}
}
}

Com a detall, comentar-te que no pots fer servir en aquesta ocasió l'ordre Serial.println () amb una sortida MIDI, si vols mostrar algun tipus de missatge a l'ordinador tan sols canvia:

midiOut.sendControlChange(42,127,1);

per:

midiOut.sendControlChange(value, channel);

on value i channel han de tenir els valors desitjats que vols mostrar.

Exemple de funcionament:


4 comentaris, deixa el teu

Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: Miguel Ángel Gatón
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.

      Alfred va dir

    Arduino t'ofereix moltíssimes possibilitats per emprendre projectes pel teu compte https://www.juguetronica.com/arduino . Una de les millors coses és que pots començar sense ser un expert i anar aprenent, motivant així ser autodidacta.

      Danel Román va dir

    Salutacions.

    Estic tractant de dur a terme aquest fantàstic tutorial ... però els #includes no estan complets ....

    Podríeu dir-me quins són els necessari?

    Moltes gràcies.

      Uell va dir

    Hola.
    M'agradaria realitzar un mòdul de bateria electrònica substituint els botons per entrades de jack als quals arribés un senyal de piezos elèctrics.
    Seria possible fer-ho?

      Eduardo Valenzuela va dir

    Si us plau si poguessin donar els includes d'aquest codi, estic interessat en aquest projecte.