Susikurkite savo „MIDI“ valdiklį naudodami „Arduino“

MIDI

Jei esate melomanas ar tiesiogiai mėgėjas ar profesionalus muzikantas, tikrai savo namuose sukaupėte didelę muzikos instrumentų kolekciją. Kad visi šie mišiniai būtų puikūs, geriausia gauti MIDI valdiklis. Deja, šio tipo objektai paprastai yra gana brangūs, todėl asmeniui, neturinčiam per daug išteklių, sunku pasiekti viską, ką gali pasiūlyti.

Norėdami daug geriau suprasti, kas yra MIDI valdiklis, pasakykite, kad kilęs žodis MIDI Muzikos instrumentų skaitmeninė sąsaja, tai yra savotiškas valdiklis, leidžiantis elektroninius muzikos prietaisus bendrauti tarpusavyje. Pavyzdžiui, jei namuose turite elektroninę klaviatūrą, daugiau nei tikėtina, kad joje yra MIDI sąsaja. Prieš tęsiant pažangą, nepaisant to, kad yra tam tikrų techninių detalių, dėl kurių galima manyti kitaip, tai turi būti labai aišku MIDI nėra garso įrašas.

Sukurkite savo MIDI valdiklį naudodami šią paprastą pamoką

Kai mums tai bus aišku, jums tikrai bus daug lengviau suprasti, kad MIDI yra tik paprasta instrukcijų rinkinys, galintis palaikyti iki 16 nepriklausomų kanalų, o tai reiškia, kad gali būti iki 16 skirtingų įrenginių, kurie tarpusavyje bendrauja savarankiškai. Šie prietaisai turi būti prijungti per 5 kontaktų DIN kabelį, kuris iš esmės yra kabelis su penkiais kaiščiais jungties viduje. Kaip detalę, gana įprasta naudoti USB, o ne 5 kontaktų DIN, jei naudojate USB, turime sukurti USB-MIDI sąsają.

Be ilgesnio svarstymo palieku jums nuorodą, kurioje galite rasti vadovėlis žingsnis po žingsnio su daugybe aprašomieji vaizdai kur galime atlikti visus reikalingus veiksmus, kad sukurtume savo MIDI valdiklį.

Susijęs straipsnis:
Kaip pakeisti „Pi Raspberry Pi“ vartotojo vardą ir slaptažodį

Kaip sukurti savo MIDI valdiklį naudojant „Arduino“

midi jungtis

Yra daugybė žmonių, kuriems dėl skirtingų asmeninių ir profesinių priežasčių reikia naudoti visiškai pritaikytas MIDI valdiklis Nes galbūt ir kaip pavyzdį tam tikru jūsų, kaip menininko, gyvenimo momentu nebrangaus MIDI valdiklio pirkimas gali neatitikti jūsų lūkesčių ar poreikių, o atėjus laikui pasirinkti profesionalią versiją gali būti per daug abiejų finansinių išteklių. jums reikia daugybės funkcijų, kurias jie gali pasiūlyti.

Dėl šios priežasties šiandien noriu parodyti viską, ko jums reikia, kad galėtumėte sukurti savo MIDI valdiklį, nurodydami viską, ko reikia jo statybai, ir pasiūlydamas programinę įrangą, kurią turėsite įdiegti. Kaip detalę, šiam projektui būtina naudoti „Arduino“ plokštę, valdiklį, kuris yra pakankamai galingas šiai užduočiai atlikti.

Kaip padaryti robotą
Susijęs straipsnis:
Kaip pagaminti robotą: 3 skirtingi variantai

Kas yra MIDI valdiklis?

midi

Iš esmės MIDI valdiklis yra atsakingas, kalbant plačiau, už skirtingų muzikinių prietaisų sujungimą. Daugelis yra instrumentai, turintys MIDI sąsają, nors tai turi būti labai aišku, nes yra daug vartotojų, kurie dažnai yra painiojami, MIDI yra ne garso failas, o labai paprastas instrukcijų rinkinys, kurį instrumentas gali gauti. ar garso nustatymai.

MIDI viduje yra du skirtingi tipaiViena vertus, mes turime vadinamąjį „Change Control“, kur jis turi valdiklio numerį ir reikšmę nuo 0 iki 127. Dėl to pranešimai gali būti išduodami, kai galima keisti skirtingus parametrus, pvz., Garsumą ar toną. Skirtingi prietaisai, kurie priima MIDI, turėtų turėti vadovą, kuriame būtų paaiškinta, kurie kanalai ir pranešimai yra nustatyti pagal numatytuosius nustatymus ir kaip juos pakeisti.

Antroje vietoje turime „Programos pakeitimą“ - tai eilutė pranešimų, kurie savo ruožtu yra daug paprastesni nei tie, kurie sudaro pokyčių valdymą. Šie pranešimų tipai naudojami norint pakeisti įrenginio išankstinį nustatymą ar pataisą. Kaip ir pakeitimų valdyme, gamintojas kartu su instrumentu turi pateikti vadovą, nurodantį, kuriuos išankstinius nustatymus pakeitė konkretus pranešimas.

Dalys, reikalingos norint sukurti savo naminį MIDI valdiklį

„Midi“ jungties schema

Kad galėtumėte sukurti savo MIDI valdiklį, jums reikės daugybės dalių, be to, kaip jau minėjome, prie „Arduino“ plokštės. Prieš tęsdami, tiesiog pasakykite, kad galbūt ateityje, nes norite išplėsti projektą, jums reikia daugiau dalykų, nors šiuo metu su keliais kūriniais turėsite daug.

Mums reikės 5 polių moteriško DIN kabelio, 2 220 omų rezistorių, 2 momentinių jungiklių, 2 10 k omų rezistorių, prijungimo laidų, grandinės plokštės, MIDI kabelio ir MIDI įrenginio arba USB sąsajos. Naudodamiesi tik šiais elementais, galite pradėti, atlikdami mano veiksmus, sukurti savo MIDI valdiklį.

Pirmieji žingsniai

„Arduino midi“ schema

Prieš pradėdamas palieku jums paveikslėlį, kuriame galite pamatyti savo MIDI kabelio kaiščius, tokiu būdu mes galime teisingai identifikuoti kaiščius ir ypač ten, kur kiekvienas turi būti prijungtas. Apskritai viskas, ką jūs turite padaryti šioje vietoje, yra prijungti kabelio 5 kaištį prie 220 omų rezistoriaus ir iš ten prie „Arduino Transmit 1“, 4 kaištį prie 220 omų rezistoriaus ir iš ten prie „Arduino“ 5 V lizdo, kai kaištis 2 turi būti prijungtas prie jūsų valdiklio įžeminimo jungties.

Atlikę šį veiksmą, neturite išsamios schemos nuotraukoje, esančioje tiesiai po šiomis linijomis, atėjo laikas sujungti mygtukus. Šio skyriaus idėja yra pasiekti naudojant „digitalRead“ kaištį (galintį nustatyti, kai pasikeičia jį pasiekianti įtampa), kad būtų galima pasiekti tranzistorių, norint pasiekti tik vienu mygtuko paspaudimu. Tam mes turime naudoti tik mygtuką, kad kairėje jo pusėje mes prijungtume jį prie 5 V, dešinėje pusėje - 220 omų varža ir iš ten - į žemę, o savo ruožtu taip pat prijungtume dešinę pusę prie kaiščio 6. Antrasis mygtukas būtų įdiegtas tokiu pačiu būdu, nors, kaip matote diagramoje, vietoj 6 kaiščio mes jį prijungiame prie 7.

Programinė įranga, naudojama namų „midi“ valdikliui

Kai baigsime naudotis visa aparatine įranga, atėjo laikas prijungti savo prietaisą ir išbandyti. Prieš tai turime turėti USB-MIDI sąsaja ir MIDI kabelis duomenų plokštę, kuri siunčia duomenis, sujungti su mūsų kompiuteriu. Norėdami tai pasiekti, mes pasirinkome „MIDI v4.2“ biblioteką, kurią sukūrė vaikinai iš keturiasdešimt septynių efektų ir kurią mes būtinai turime įdiegti savo „Arduino“ ir įtraukti į projektą.

Kompiuterio atveju mums reikės programos, kuri galėtų prižiūrėti visus iš „Arduino“ gaunamus MIDI duomenis. Tam mes turime skirtingas galimybes, tokias kaip MIDI Monitorius (OS X), MIDI-OX (Windows) arba Kmidimon (Linux)

Norėdami atlikti nedidelį bandymą, tiesiog turime prijungti „Arduino“ prie savo kompiuterio ir vykdyti šį 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
}

Jei viskas pavyko gerai, galite pereiti į mygtukų testą, jei šis bandymas jums nepadėjo, turite įsitikinti, kad visi jungtys yra teisingi, grandinė yra visiškai tokia pati kaip ankstesnė schema, grandinė yra prijungtas prie USB-MIDI sąsajos MIDI kabeliu, teisingai prijungti MIDI prievado laidai, MIDI kabelis prijungtas prie USB-MIDI sąsajos įvesties, „Arduino“ plokštė teisingai prijungta prie elektros tinklo ir turi pakankamai energijos ...

Patikrinkite, ar mygtukai veikia tinkamai

Prieš tęsiant mūsų programos tiekimą naujomis funkcijomis ir kodu, kuriame galime pasimesti, verta trumpam sustoti ir patikrinkite, ar mygtukai veikia tinkamai. Jiems turime įkelti šį 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);
}
}

}

Šį kodą reikia tiesiog sukompiliuoti ir įvykdyti, kad, prijungus USB laidą, programa mums pasakytų, ar buvo paspaustas kuris nors mygtukas.

Mes kuriame savo naminį MIDI valdiklį

Kai atliksime šiuos bandymus, atėjo laikas surinkti savo MIDI valdiklį. Jums tereikės sukompiliuoti šį 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);
}
}
}

Išsamiai pasakykite, kad šį kartą negalite naudoti komandos Serial.println () su MIDI išvestimi, jei norite kompiuteryje rodyti tam tikro tipo pranešimą, tiesiog pakeiskite:

midiOut.sendControlChange(42,127,1);

pagal:

midiOut.sendControlChange(value, channel);

kur reikšmė ir kanalas turi turėti norimas reikšmes, kurias norite rodyti.

Veikimo pavyzdys:


4 komentarai, palikite savo

Palikite komentarą

Jūsų elektroninio pašto adresas nebus skelbiamas. Privalomi laukai yra pažymėti *

*

*

  1. Atsakingas už duomenis: Miguel Ángel Gatón
  2. Duomenų paskirtis: kontroliuoti šlamštą, komentarų valdymą.
  3. Įteisinimas: jūsų sutikimas
  4. Duomenų perdavimas: Duomenys nebus perduoti trečiosioms šalims, išskyrus teisinius įsipareigojimus.
  5. Duomenų saugojimas: „Occentus Networks“ (ES) talpinama duomenų bazė
  6. Teisės: bet kuriuo metu galite apriboti, atkurti ir ištrinti savo informaciją.

      Alfredas sakė

    „Arduino“ siūlo daugybę galimybių savarankiškai įgyvendinti projektus https://www.juguetronica.com/arduino . Vienas geriausių dalykų yra tai, kad galite pradėti nebūdami ekspertu ir mokytis toliau, taip motyvuodami save mokytis.

      Danelis Romanas sakė

    Sveikinimai.

    Bandau atlikti šią fantastišką pamoką ... bet #įskaičiai nėra baigti ....

    Gal galėtumėte pasakyti, kurios yra būtinos?

    Labai ačiū.

      Uellas sakė

    Hey.
    Norėčiau pagaminti elektroninį būgno modulį, pakeisdamas mygtukus į lizdo įėjimus, į kuriuos pateks pjezoelektrinis signalas.
    Ar būtų įmanoma tai padaryti?

      Eduardo Valenzuela sakė

    Prašau, jei galėtumėte pateikti šio kodo komplektus, mane domina šis projektas.