Kaip sukurti MIDI valdiklį naudojant „Arduino“

Kaip sukurti MIDI valdiklį naudojant „Arduino“

Kaip muzikantas, sukaupęs muzikos instrumentų ir triukšmo dėžių kolekciją, nuolankusis „Arduino“ yra puikus įrankis sukurti pasirinktinį MIDI valdiklį. Nors „Raspberry Pi“ galėjo būti daiktų interneto (IoT) projektų karūna, paprastas „Arduino Uno“ (kokie yra skirtingi „Arduino“ tipai) turi daugiau nei pakankamai jėgų šiam projektui.





Pirmą kartą naudojate „Arduino“? Nesijaudinkite, mes turime pilną „Arduino“ pradedančiųjų vadovas perskaitykite prieš imdamiesi šio projekto.





Kas yra MIDI?

MIDI reiškia muzikos instrumentų skaitmeninę sąsają. Jame aprašomas standartinis muzikos prietaisų tarpusavio bendravimo būdas. Jei turite elektroninę klaviatūrą, tikriausiai turite MIDI sąsają. Nors įgyvendinant MIDI yra keletas techninių detalių, svarbu nepamiršti, kad MIDI nėra garsas! MIDI duomenys yra paprastas instrukcijų rinkinys (viena instrukcija vadinama „žinute“), kurią kitas įrenginys gali įgyvendinti, kad skleistų skirtingus garsus ar valdymo parametrus.





MIDI palaiko 16 kanalų. Tai reiškia, kad kiekvienas kabelis gali palaikyti 16 skirtingų įrenginių, kurie tarpusavyje bendrauja nepriklausomai. Prietaisai prijungiami naudojant 5 kontaktų DIN kabelį. DIN reiškia „Vokietijos standartizacijos institutą“ ir yra tiesiog kabelis su penkiais kaiščiais jungties viduje. USB dažnai naudojamas vietoj 5 kontaktų DIN, arba galima naudoti USB-MIDI sąsają.

MIDI-kabelis-patinas



Kontrolės keitimas ir programos keitimas

Yra du pagrindiniai MIDI pranešimų tipai: Valdymo keitimas ir Programos keitimas.

Valdymo keitimo (CC) pranešimuose yra valdiklio numeris ir reikšmė nuo 0 iki 127. CC pranešimai dažnai naudojami norint pakeisti tokius parametrus kaip garsumas ar aukštis. Įrenginiuose, priimančiuose MIDI, turėtų būti pateiktas vadovas, kuriame būtų paaiškinta, kokie kanalai ir pranešimai yra nustatyti pagal numatytuosius nustatymus ir kaip juos pakeisti (žinomas kaip MIDI susiejimas).





Programos pakeitimo (PC) pranešimai yra paprastesni nei CC pranešimai. Kompiuterio pranešimus sudaro vienas numeris ir jie naudojami norint pakeisti iš anksto nustatytą įrenginį arba pataisą. Kompiuterio pranešimai kartais vadinami „Patch Change“. Panašiai kaip CC pranešimai, gamintojai turėtų pateikti dokumentą, kuriame būtų nurodyta, kokie išankstiniai nustatymai keičiami tam tikru pranešimu.

Ko jums reikės

  • Arduino
  • 5 kontaktų DIN kištukinis lizdas
  • 2 x 220 omų rezistoriai
  • 2 x 10k omų rezistoriai
  • 2 x momentiniai jungikliai
  • Prijungimo laidai
  • Bandomoji Lenta
  • MIDI kabelis
  • MIDI įrenginys arba USB sąsaja
Vanduo ir mediena 5 vnt. DIN 5 kontaktų PCB tvirtinimo kištukiniai lizdai, skirti kompiuterio klaviatūrai PIRKITE DABAR AMAZON

Sukurkite planą

Šis projektas bus gana paprastas. Žinoma, galite pridėti daugiau mygtukų ar aparatūros, kad atitiktų jūsų poreikius. Tiks beveik bet koks „Arduino“ - šiam pavyzdžiui reikalingi tik trys smeigtukai. Šis projektas susideda iš dviejų mygtukų programai valdyti, MIDI prievado duomenims siųsti ir įrenginio pranešimams priimti. Ši grandinė buvo pastatyta ant duonos lentos, tačiau ją galima perkelti į projekto dėžutę ir lituotas jungtis, kad būtų užtikrintas tvirtas sprendimas.





Grandinės surinkimas

„Arduino-Midi-Controller-Circuit“

MIDI ryšys

MIDI-Pinout

Prijunkite MIDI lizdą taip:

  • MIDI kaištis 5 į „Arduino Transmit“ (TX) 1 per 220 omų rezistorių
  • MIDI kaištis 4 prie „Arduino“ +5 V per 220 omų rezistorių
  • MIDI kaištis 2 prie „Arduino“ žemės

Mygtuko jungtis

Mygtukai veikia keičiant „Arduino“ matomą pasipriešinimą. „Arduino“ kaištis eina per jungiklį tiesiai į žemę ( LOW ) per 10k omų rezistorių („nuleidžiamas“ rezistorius, užtikrinantis, kad vertė išliktų žema). Paspaudus mygtuką, grandinės matoma vertė pasikeičia į +5v be rezistoriaus ( AUKŠTAS ). „Arduino“ gali aptikti šį pakeitimą naudodami digitalRead (kaištis) komandą. Prijunkite mygtukus prie „Arduino“ skaitmeninio įvesties/išvesties (I/O) 6 ir 7 kaiščių. Prijunkite abu mygtukus:

  • Kairė mygtuko pusė iki +5V
  • Dešinė mygtuko pusė prie „Arduino Ground“ per 10 k omų rezistorių
  • Dešinė mygtuko pusė prie „Arduino“ kaiščio (6 arba 7)

MIDI testavimas

Dabar, kai visa aparatinė įranga yra baigta, laikas ją išbandyti. Jums reikės USB-MIDI sąsajos (tai gali padaryti daugelis garso sąsajų) ir MIDI kabelio. Duonos lentoje prijungtas MIDI prievadas siunčia duomenis, taigi tai yra išvestis. Jūsų kompiuteris priima duomenis, todėl jis yra įvestis. Šiame projekte naudojamas puikus „Arduino“ MIDI biblioteka v4.2 sukūrė keturiasdešimt septyni efektai. Įdiegę biblioteką, galite ją įtraukti į savo kodą apsilankę Eskizas> Įtraukti biblioteką> MIDI .

Jums taip pat reikės programos, skirtos stebėti gaunamus MIDI duomenis:

Prijunkite „Arduino“ prie kompiuterio ir įkelkite šį bandymo kodą (nepamirškite pasirinkti tinkamos plokštės ir prievado iš Įrankiai> Lenta ir Įrankiai> Uostas meniu).

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

Šis kodas atsiųs CC pranešimą, palaukite 1 sekundę, išsiųskite kompiuterio pranešimą, tada laukite 1 sekundę neribotą laiką. Jei viskas veikia tinkamai, MIDI monitoriuje turėtų būti rodomas pranešimas.

Jei nieko neatsitiks, nepanikuokite! Išbandykite trikčių šalinimą:

  • Įsitikinkite, kad visos jungtys yra teisingos
  • Patikrinkite, ar tinkamai prijungtas MIDI prievadas - išoriniuose kraštuose turi būti 2 atsarginiai kaiščiai
  • Dar kartą patikrinkite, ar grandinė yra teisinga
  • Patikrinkite, ar grandinė prijungta prie USB-MIDI sąsajos naudojant MIDI kabelį
  • Patikrinkite, ar jūsų MIDI kabelis prijungtas prie įvesties USB-MIDI sąsajoje
  • Įsitikinkite, kad „Arduino“ turi galią
  • Įdiekite tinkamą USB-MIDI sąsajos tvarkyklę

Jei esate vis dar Turite problemų, galbūt verta patikrinti savo lentą. Pigios lentos kartais gali būti labai nenuoseklios ir nekokybiškos-tai atsitiko man dirbant prie šio projekto.

Mygtuko testavimas

Dabar atėjo laikas patikrinti, ar mygtukai veikia tinkamai. Įkelkite šį bandymo kodą. Norint išbandyti šią dalį, nereikia prijungti MIDI.

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

}

Paleiskite šį kodą (bet laikykite prijungtą USB kabelį) ir atidarykite serijinį monitorių ( Viršuje dešinėje> Serijinis monitorius ). Kai paspausite mygtuką, turėtumėte pamatyti „Button One Works!“ arba 'Mygtukas du veikia!' priklausomai nuo paspausto mygtuko.

Iš šio pavyzdžio reikia atsiminti vieną svarbią pastabą-programinės įrangos atmetimas. Tai yra paprastas 10 milisekundžių (ms) vėlavimas tarp mygtuko patikrinimo ir mygtuko patikrinimo dar kartą. Tai padidina mygtukų paspaudimo tikslumą ir padeda išvengti triukšmo, sukeliančio „Arduino“. Jums to nereikia daryti, nors tai rekomenduojama.

Valdiklio kūrimas

Dabar, kai viskas yra prijungta ir veikia, atėjo laikas surinkti visą valdiklį.

Šis pavyzdys siunčia skirtingą CC pranešimą kiekvienam paspaudžiamam mygtukui. Aš tai naudoju, norėdamas valdyti „Ableton Live 9.6“ OS X. Kodas yra panašus į abu aukščiau pateiktus bandymo pavyzdžius.

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

Pastaba - negalėsite naudotis Serial.println () su MIDI išvestimi.

Jei norite siųsti kompiuterio pranešimą, o ne CC, tiesiog pakeiskite:

midiOut.sendControlChange(42,127,1);

Su:

midiOut.sendProgramChange(value, channel);

Veikiant

Žemiau pateikiamas valdiklio demonstravimas „Ableton Live“ ( Geriausia DJ programinė įranga kiekvienam biudžetui ). Viršuje dešinėje rodomi garso matuokliai, o viršutiniame viduryje - gaunami midi pranešimai (per MIDI monitorius OS X).

išorinis kietasis diskas lėtas ir nereaguoja

Ar sukūrėte MIDI valdiklį?

Yra daug praktinio pritaikyto MIDI valdiklio naudojimo būdų. Galite sukurti didžiulį pėdomis valdomą įrenginį arba dailų studijos valdiklį. Ir jei jus domina įsigyti, čia yra geriausi USB MIDI valdikliai, kuriuos galite nusipirkti.

Vaizdo kreditas: Keith Gentry per Shutterstock.com

Tikimės, kad jums patiks mūsų rekomenduojami ir aptarti dalykai! MUO turi filialų ir remiamų partnerysčių, todėl mes gauname dalį pajamų iš kai kurių jūsų pirkinių. Tai neturės įtakos jūsų mokamai kainai ir padės mums pasiūlyti geriausias produktų rekomendacijas.

Dalintis Dalintis „Tweet“ Paštu Ar verta atnaujinti į „Windows 11“?

„Windows“ buvo pertvarkytas. Bet ar to pakanka norint įtikinti jus pereiti nuo „Windows 10“ prie „Windows 11“?

Skaityti toliau
Susijusios temos
  • Pasidaryk pats
  • DJ programinė įranga
  • Arduino
  • Elektronika
  • PIRMADIENIS
Apie autorių Joe Coburn(Paskelbti 136 straipsniai)

Joe yra baigęs informatikos studijas Linkolno universitete, JK. Jis yra profesionalus programinės įrangos kūrėjas, o kai neskraido bepiločiais orlaiviais ir nerašo muzikos, jį dažnai galima rasti fotografuojant ar kuriant vaizdo įrašus.

Daugiau iš Joe Coburn

Prenumeruokite mūsų naujienlaiškį

Prisijunkite prie mūsų naujienlaiškio, kad gautumėte techninių patarimų, apžvalgų, nemokamų el. Knygų ir išskirtinių pasiūlymų!

Norėdami užsiprenumeruoti, spustelėkite čia