Skapa din egen MIDI-controller med Arduino

MIDI

Om du är en musikälskare eller direkt en amatör eller professionell musiker har du säkert i ditt hem samlat en stor samling musikinstrument. För att alla dessa ska blanda perfekt är det bäst att få en MIDI-styrenhet. Tyvärr är dessa typer av objekt vanligtvis ganska dyra så att en person utan alltför många resurser har svår tillgång till allt de kan erbjuda.

För att förstå mycket bättre vad en MIDI-controller är, berätta att ordet MIDI kommer från Musikgränssnitt Digital gränssnitt, det vill säga en slags styrenhet som gör att elektroniska musikanordningar kan kommunicera med varandra. Om du till exempel har ett elektroniskt tangentbord hemma är det mer än troligt att det har ett MIDI-gränssnitt. Innan du fortsätter att gå vidare, trots att det finns vissa tekniska detaljer som kan få en att tro på något annat, måste det vara mycket tydligt att MIDI är inte ljud.

Skapa din egen MIDI-kontroller med denna enkla handledning

När vi är klara om detta kommer det säkert att bli mycket lättare för dig att förstå att MIDI bara är enkelt instruktionsuppsättning som kan stödja upp till 16 oberoende kanaler, vilket innebär att det kan finnas upp till 16 olika enheter som kommunicerar oberoende med varandra. Dessa enheter måste anslutas via en 5-stifts DIN-kabel, som i grunden är en kabel med fem stift inuti en kontakt. Som en detalj är det ganska vanligt att använda en USB istället för en 5-stifts DIN. Om du använder en USB måste vi skapa ett USB-MIDI-gränssnitt.

Utan vidare ado lämnar jag dig med länken där du kan hitta handledning steg för steg med mycket beskrivande bilder där vi kan utföra alla nödvändiga åtgärder för att skapa vår egen MIDI-kontroller.

Relaterad artikel:
Så här ändrar du Pi-användarnamnet och lösenordet på vår Raspberry Pi

Hur man skapar en egen MIDI-controller med Arduino

midi-kontakt

Många är de människor som av olika skäl, både personligt och professionellt, behöver använda en helt anpassad MIDI-kontroller För kanske och som ett exempel, vid någon tidpunkt i ditt liv som konstnär, kan det hända att det inte går att köpa en billig MIDI-styrenhet att uppfylla dina förväntningar eller behov medan det när det är dags att välja en professionell version kan vara överdrivet i båda ekonomiska resurser. behov, liksom det stora antalet funktioner de kan erbjuda.

På grund av detta vill jag idag visa dig allt du behöver så att du kan skapa din egen MIDI-kontroller som anger både allt som är nödvändigt för dess konstruktion och erbjuder dig den programvara som du behöver installera. Som en detalj, för detta projekt är användningen av ett Arduino-kort viktigt, en styrenhet som är tillräckligt kraftfull för att utföra denna uppgift.

Hur man gör en robot
Relaterad artikel:
Hur man skapar en robot: 3 olika alternativ

Vad är en MIDI-kontroller?

midi

I grund och botten är en MIDI-kontroller i stort sett ansvarig för att ansluta olika musikaliska enheter till varandra. Många är instrumenten som innehåller ett MIDI-gränssnitt men detta måste vara mycket tydligt eftersom det finns många användare som ofta är förvirrade, MIDI är inte en ljudfil, utan en mycket enkel uppsättning instruktioner som ett instrument kan få för att göra olika kontroller eller ljudinställningar.

Inuti MIDI det finns två olika typerÅ ena sidan har vi den som heter Change Control där den har regulatornumret och ett värde mellan 0 och 127. Tack vare detta kan meddelanden skickas där olika parametrar som volym eller ton kan ändras. Olika instrument som accepterar MIDI bör ta med en handbok som förklarar vilka kanaler och meddelanden som är inställda som standard och hur man ändrar dem.

På andra plats har vi Program Change, en serie meddelanden som i sin tur är mycket enklare än de som utgör Change Control. Dessa typer av meddelanden används för att ändra förinställning eller korrigering av en enhet. Liksom i Change Control, måste tillverkaren tillsammans med ditt instrument inkludera en manual som anger vilka förinställningar som ändras av ett visst meddelande.

Delar som behövs för att bygga din egen hemgjorda MIDI-kontroller

Schema för Midi-kontakt

För att kunna bygga din egen MIDI-controller behöver du en serie bitar, som vi redan nämnde, till ett Arduino-kort. Innan du fortsätter, berätta bara för dig att du kanske behöver fler saker i framtiden för att du vill utöka projektet, även om du just nu kommer att ha mycket med några bitar.

Vi kommer att behöva en 5-polig DIN-kabel, 2 220 ohm motstånd, 2 momentan strömbrytare, 2 10 ohm motstånd, anslutningsledningar, ett kretskort, MIDI-kabel och en MIDI-enhet eller USB-gränssnitt. Med bara dessa bitar kan du, enligt mina steg, börja skapa din egen MIDI-kontroller.

Första steg

Arduino midi schema

Innan jag börjar lämnar jag en bild där du kan se stiften på din MIDI-kabel, på detta sätt kan vi korrekt identifiera stiften och särskilt var vi ska ansluta var och en. I stort sett är allt du behöver göra vid den här tiden att ansluta stift 5 på kabeln till ett 220 ohm motstånd och därifrån till Arduino Transmit 1, stift 4 till ett 220 ohm motstånd och därifrån till 5V uttaget på Arduino medan stift 2 måste anslutas till jordanslutningen på din styrenhet.

När detta steg är klart har du inte ett detaljerat diagram på bilden som ligger strax under dessa rader, det är dags att ansluta knapparna. Tanken i detta avsnitt är att uppnå, med hjälp av digitalRead-stiftet (som kan detektera när spänningen som når den ändras) för att kunna använda en transistor för att uppnå, med bara ett knapptryck. För detta behöver vi bara använda en knapp så att den vänstra sidan av den ansluts till 5V, den högra sidan till ett motstånd på 220 ohm och därifrån till marken medan vi i sin tur också ansluter den högra sidan till stift 6. Den andra knappen skulle installeras på samma sätt, men som du kan se i diagrammet, istället för stift 6 ansluter vi den till 7.

Programvara som kan användas för midi-controller för hemmet

När vi är färdiga med all hårdvara är det dags att ansluta vårt instrument och testa. Innan det måste vi ha en USB-MIDI-gränssnitt och en MIDI-kabel för att ansluta kortet, som skickar data, till vår dator. För att uppnå detta har vi valt MIDI v4.2-biblioteket som skapats av killarna från Forty Seven Effects som vi måste ha installerat på vår Arduino och inkluderat i projektet.

När det gäller datorn behöver vi ett program som kan övervaka alla MIDI-data som kommer fram från Arduino. För detta har vi olika möjligheter som MIDI Monitor (OS X), MIDI-OX (Windows) eller Kmidimon (Linux)

För att göra ett litet test måste vi bara ansluta Arduino till vår dator och köra följande kod:

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

Om allt har gått bra kan du gå till knapptestet, om detta test inte har fungerat för dig måste du se till att alla anslutningar är korrekta, kretsen är exakt densamma som föregående diagram, kretsen är ansluten till ett USB-MIDI-gränssnitt med en MIDI-kabel, kablarna i MIDI-porten är korrekt anslutna, MIDI-kabeln är ansluten till ingången till USB-MIDI-gränssnittet, Arduino-kortet är korrekt anslutet till det elektriska nätverket och det har tillräckligt med ström ...

Testar att knapparna fungerar korrekt

Innan du fortsätter att mata vårt program med nya funktioner och kod som vi kan gå vilse i, är det värt att stanna ett ögonblick och testa att knapparna fungerar ordentligt. För dem måste vi ladda följande kod:

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

}

Den här koden måste bara kompileras och köras så att programmet, med USB-kabeln ansluten, berättar om någon av knapparna har tryckts.

Vi skapar vår hemlagade MIDI-controller

När vi har utfört dessa tester är det dags att montera vår egen MIDI-kontroller för det, du behöver bara kompilera följande kod:

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

Som en detalj, säg att du inte kan använda kommandot Serial.println () med en MIDI-utgång den här gången, om du vill visa någon typ av meddelande på datorn, ändra bara:

midiOut.sendControlChange(42,127,1);

med:

midiOut.sendControlChange(value, channel);

där värde och kanal måste ha önskade värden som du vill visa.

Exempel på användning:


4 kommentarer, lämna din

Lämna din kommentar

Din e-postadress kommer inte att publiceras. Obligatoriska fält är markerade med *

*

*

  1. Ansvarig för uppgifterna: Miguel Ángel Gatón
  2. Syftet med uppgifterna: Kontrollera skräppost, kommentarhantering.
  3. Legitimering: Ditt samtycke
  4. Kommunikation av uppgifterna: Uppgifterna kommer inte att kommuniceras till tredje part förutom enligt laglig skyldighet.
  5. Datalagring: databas värd för Occentus Networks (EU)
  6. Rättigheter: När som helst kan du begränsa, återställa och radera din information.

  1.   Alfred sade

    Arduino erbjuder dig många möjligheter att genomföra projekt på egen hand https://www.juguetronica.com/arduino . En av de bästa sakerna är att du kan börja utan att vara expert och fortsätta att lära dig, vilket motiverar dig själv att bli självlärd.

  2.   Danel Roman sade

    Hälsningar.

    Jag försöker genomföra denna fantastiska handledning ... men #inkluderar är inte fullständiga ...

    Kan du berätta vilka som är nödvändiga?

    Tack så mycket.

  3.   uell sade

    Hej.
    Jag skulle vilja skapa en elektronisk trummodul genom att ersätta knapparna med jackingångar som en piezoelektrisk signal kommer till.
    Skulle det vara möjligt att göra det?

  4.   Eduardo Valenzuela sade

    Snälla, om du kan ge inkluderar denna kod är jag intresserad av detta projekt.