Bëni kontrolluesin tuaj MIDI me Arduino

MIDI

Nëse jeni një dashamirës i muzikës ose drejtpërdrejt një muzikant amator ose profesionist, me siguri në shtëpinë tuaj keni grumbulluar një koleksion të madh të instrumenteve muzikore. Për t'i bërë të gjitha këto përzierje në mënyrë të përsosur, është më mirë të marrësh një Kontrollues MIDI. Fatkeqësisht, këto lloje objektesh janë zakonisht mjaft të shtrenjta, kështu që një person pa shumë burime ka qasje të vështirë në gjithçka që mund të ofrojë.

Për të kuptuar shumë më mirë se çfarë është një kontrollues MIDI, ju them se fjala MIDI vjen nga Ndërfaqja dixhitale e instrumentit muzikor, që është, një lloj kontrolluesi që bën pajisjet elektronike muzikore mund të komunikojnë me njëri-tjetrin. Nëse keni një tastierë elektronike në shtëpi, për shembull, ka më shumë të ngjarë që të ketë një ndërfaqe MIDI. Para se të vazhdojmë të avancojmë, përkundër faktit se ka disa detaje teknike që mund ta bëjnë dikë të besojë ndryshe, duhet të jetë shumë e qartë se MIDI nuk është audio.

Krijoni kontrolluesin tuaj MIDI me këtë udhëzim të thjeshtë

Sapo ta kemi të qartë këtë, me siguri do të jetë shumë më e lehtë për ju të kuptoni se MIDI është thjesht një e thjeshtë grup udhëzimesh i aftë të mbështesë deri në 16 kanale të pavarura, që do të thotë se mund të ketë deri në 16 pajisje të ndryshme që komunikojnë në mënyrë të pavarur me njëra-tjetrën. Këto pajisje duhet të lidhen përmes një kablli 5-pin DIN, i cili në thelb është një kabllo me pesë kunja brenda një konektori. Si detaj, është mjaft e zakonshme të përdoret një USB në vend të një DIN me 5 pin, në rast të përdorimit të një USB duhet të krijojmë një ndërfaqe USB-MIDI.

Pa zhurmë të mëtejshme, ju lë me lidhjen ku mund ta gjeni punë praktike hap pas hapi me shumë imazhe përshkruese ku mund të kryejmë të gjitha veprimet e nevojshme për të krijuar kontrolluesin tonë MIDI.

Artikulli i lidhur:
Si të ndryshoni emrin e përdoruesit dhe fjalëkalimin në Raspberry Pi tonë

Si të krijoni kontrolluesin tuaj MIDI me Arduino

lidhës midi

Shumë janë njerëzit që kanë nevojë, për arsye të ndryshme si personale ashtu edhe profesionale, të përdorin a kontrollues plotësisht i personalizuar MIDI Sepse mbase dhe si një shembull, në një moment në jetën tuaj si artist, blerja e një kontrolluesi të lirë MIDI mund të mos përmbushë pritjet apo nevojat tuaja, kur, kur të vijë koha, zgjedhja e një versioni profesional mund të jetë e tepërt në të dy burimet financiare. nevojën, si dhe numrin e madh të karakteristikave që ata mund të ofrojnë.

Për shkak të kësaj, sot unë dua t'ju tregoj gjithçka që ju nevojitet në mënyrë që të mund të krijoni vetë kontrolluesin tuaj MIDI duke treguar të dyja gjithçka të nevojshme për ndërtimin e saj dhe duke ju ofruar softuerin që do t'ju duhet të instaloni. Si detaj, për këtë projekt është thelbësore përdorimi i një bordi Arduino, një kontrollues që është mjaft i fuqishëm për të kryer këtë detyrë.

Si të krijoni një robot
Artikulli i lidhur:
Si të krijoni një robot: 3 mundësi të ndryshme

Çfarë është një kontrollues MIDI?

midi

Në thelb, një kontrollues MIDI është përgjegjës, duke folur gjerësisht, për lidhjen e pajisjeve të ndryshme muzikore me njëri-tjetrin. Shumë janë instrumentet që përfshijnë një ndërfaqe MIDI, megjithëse kjo duhet të jetë shumë e qartë pasi që ka shumë përdorues që shpesh ngatërrohen, MIDI nuk është një skedar audio, por një grup shumë i thjeshtë udhëzimesh që një instrument mund të marrë. Për të bërë një kontroll të ndryshëm ose cilësimet e zërit.

Brenda MIDI ekzistojnë dy lloje të ndryshmeNga njëra anë kemi atë të quajtur Change Control ku ai ka numrin e kontrolluesit dhe një vlerë ndërmjet 0 dhe 127. Falë kësaj, mesazhet mund të lëshohen ku mund të ndryshohen parametra të ndryshëm si vëllimi ose toni. Instrumente të ndryshëm që pranojnë MIDI duhet të sjellin me vete një manual duke shpjeguar se cilat kanale dhe mesazhe janë vendosur si parazgjedhje dhe si t'i ndryshoni ato.

Në vendin e dytë kemi Programin Change, një seri mesazhesh që nga ana tjetër janë shumë më të thjeshta se ato që përbëjnë Kontrollin e Ndryshimit. Këto lloj mesazhesh përdoren për të ndryshuar paravendosjen ose copëtimin e një pajisjeje. Ashtu si në Kontrollin e Ndryshimit, së bashku me instrumentin tuaj, prodhuesi duhet të përfshijë një manual që tregon se cilat paravendosje ndryshohen nga një mesazh i veçantë.

Pjesët e nevojshme për të ndërtuar një kontrollues tuaj MIDI shtëpiak

Skema lidhëse Midi

Për të qenë në gjendje të ndërtoni kontrolluesin tuaj MIDI do t'ju duhet një seri pjesësh përveç kësaj, siç e kemi përmendur tashmë, në një bord Arduino. Para se të vazhdoni, thjesht ju tregoj se ndoshta, në të ardhmen sepse doni të zgjeroni projektin, keni nevojë për më shumë gjëra, edhe pse në këtë kohë me disa pjesë do të keni shumë.

Do të na duhet një kabëll DIN 5-pol femër, 2 rezistencë 220 ohm, 2 çelësa momentalë, 2 rezistorë 10k ohm, tela lidhës, një bord qark, kabllo MIDI dhe një pajisje MIDI ose ndërfaqe USB. Vetëm me këto pjesë mund të filloni, duke ndjekur hapat e mi, për të bërë vetë kontrollorin tuaj MIDI.

Hapat e parë

Skema skematike Arduino midi

Para fillimit, unë ju lë një foto ku mund të shihni kunjat e kabllos tuaj MIDI, në këtë mënyrë ne mund të identifikojmë saktë kunjat dhe veçanërisht se ku të lidhim secilën. Duke folur gjerësisht, gjithçka që duhet të bësh në këtë pikë është të lidhësh kunjin 5 të kabllit me një rezistencë 220 ohm dhe prej andej në Arduino Transmit 1, kunjin 4 në një rezistencë 220 ohm dhe nga atje në fole 5V të Arduino ndërsa pin 2 duhet të jetë i lidhur me lidhjen Ground të kontrolluesit tuaj.

Sapo të përfundojë ky hap, nuk keni një diagram të hollësishëm në foto që ndodhet pikërisht poshtë këtyre rreshtave, është koha të lidhni butonat. Ideja në këtë seksion është të arrihet, duke përdorur pinin dixhitalRead (i aftë të zbulojë kur voltazhi që e arrin atë ndryshon) të jetë në gjendje të përdorë një tranzitor për të arritur, vetëm me një shtypje të një butoni. Për këtë duhet të përdorim vetëm një buton në mënyrë që, në anën e majtë të tij ta lidhim atë me 5V, anën e djathtë me një rezistencë 220 ohm dhe nga atje në tokë ndërsa, nga ana tjetër, ne gjithashtu të lidhim anën e djathtë me pin 6 Butoni i dytë do të instalohej në të njëjtën mënyrë edhe pse, siç mund ta shihni në diagram, në vend të kunjit 6, ne e lidhim atë me 7.

Program kompjuterik për t'u përdorur për kontrolluesin midi në shtëpi

Pasi të kemi mbaruar me të gjithë harduerin, është koha të lidhim instrumentin tonë dhe të provojmë. Para kësaj duhet të kemi një Ndërfaqja USB-MIDI dhe një kabllo MIDI për të lidhur bordin, i cili po dërgon të dhëna, me kompjuterin tonë. Për ta arritur këtë, ne kemi zgjedhur bibliotekën MIDI v4.2 të krijuar nga djemtë nga Dyzet Shtatë Efektet që duhet të kemi instaluar në Arduino dhe të përfshirë në projekt.

Në rastin e kompjuterit, do të na duhet një program që është i aftë të mbikëqyrë të gjitha të dhënat MIDI që arrijnë tek ajo nga Arduino. Për këtë kemi mundësi të ndryshme si MIDI Monitor (OS X), MIDI-OX (Windows) ose Kmidimon (Linux)

Për të bërë një provë të vogël, ne vetëm duhet të lidhim Arduino me kompjuterin tonë dhe të ekzekutojmë kodin e mëposhtëm:

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

Nëse gjithçka ka shkuar mirë, mund të shkoni te testi i butonit, në rast se ky test nuk ka funksionuar për ju duhet të siguroheni që të gjitha lidhjet janë të sakta, qarku është saktësisht i njëjtë me diagramin e mëparshëm, qarkun është i lidhur me një ndërfaqe USB-MIDI me një kabllo MIDI, kabllot e portës MIDI janë të lidhura saktë, kablli MIDI është i lidhur me hyrjen e ndërfaqes USB-MIDI, bordi Arduino është i lidhur në mënyrë korrekte me rrjetin elektrik dhe ka mjaftueshëm energji ...

Testimi i funksionimit të saktë të butonave

Para se të vazhdojmë të ushqejmë programin tonë me funksionalitete dhe kod të ri në të cilin mund të humbasim, ia vlen të ndalemi për një moment dhe provoni që butonat funksionojnë si duhet. Për ta duhet të ngarkojmë kodin vijues:

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

}

Ky kod thjesht duhet të përpilohet dhe ekzekutohet në mënyrë që, me kabllon USB të lidhur, programi të na tregojë nëse ndonjë nga butonat është shtypur.

Ne krijojmë kontrollorin tonë MIDI

Pasi të kemi ekzekutuar këto teste, është koha të mbledhim kontrollorin tonë MIDI për këtë, do të duhet të përpiloni vetëm kodin e mëposhtëm:

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

Si detaj, ju tregoj se këtë herë nuk mund të përdorni komandën Serial.println () me një dalje MIDI, nëse dëshironi të tregoni një lloj mesazhi në kompjuter, thjesht ndryshoni:

midiOut.sendControlChange(42,127,1);

por:

midiOut.sendControlChange(value, channel);

ku vlera dhe kanali duhet të kenë vlerat e dëshiruara që dëshironi të shfaqni.

Shembulli i funksionimit:


4 komente, lini tuajën

Lini komentin tuaj

Adresa juaj e emailit nuk do të publikohet. Fusha e kërkuar janë shënuar me *

*

*

  1. Përgjegjës për të dhënat: Miguel Ángel Gatón
  2. Qëllimi i të dhënave: Kontrolloni SPAM, menaxhimin e komenteve.
  3. Legjitimimi: Pëlqimi juaj
  4. Komunikimi i të dhënave: Të dhënat nuk do t'u komunikohen palëve të treta përveç me detyrim ligjor.
  5. Ruajtja e të dhënave: Baza e të dhënave e organizuar nga Occentus Networks (BE)
  6. Të drejtat: Në çdo kohë mund të kufizoni, rikuperoni dhe fshini informacionin tuaj.

  1.   Alfred dijo

    Arduino ju ofron shumë mundësi për të ndërmarrë projekte vetë https://www.juguetronica.com/arduino . Një nga gjërat më të mira është që ju mund të filloni pa qenë ekspert dhe të vazhdoni të mësoni, duke motivuar kështu vetveten për t'u vetë-mësuar.

  2.   Danel Roman dijo

    Përshëndetje.

    Po përpiqem ta bëj këtë mësim fantastik… por #përfshirjet nuk janë të plota.

    A mund të më thoni cilat janë të nevojshme?

    Shumë falemnderit.

  3.   uell dijo

    Hey.
    Unë do të doja të bëja një modul elektronik daulle duke zëvendësuar butonat me hyrjet e foleve në të cilat do të mbërrijë një sinjal piezoelektrik.
    A do të ishte e mundur ta bëjmë atë?

  4.   Eduardo Valenzuela dijo

    Ju lutem nëse mund të jepni përfshirjet e këtij kodi, unë jam i interesuar për këtë projekt.