Sadržaj:

Izrada Arduino MIDI kontrolera: 9 koraka (sa slikama)
Izrada Arduino MIDI kontrolera: 9 koraka (sa slikama)

Video: Izrada Arduino MIDI kontrolera: 9 koraka (sa slikama)

Video: Izrada Arduino MIDI kontrolera: 9 koraka (sa slikama)
Video: Takmičenje u programiranju uz primenu mikrobit uređaja, drugo mesto - „Bezbednost u saobraćaju“ 2024, Studeni
Anonim

Ovo uputstvo izvorno je objavljeno na mom blogu 28. lipnja 2020

Uživam u izgradnji stvari koje uključuju elektroniku, i uvijek sam želio nešto izgraditi pomoću Arduina.

Jedna od najčešćih verzija za početnike koju sam pronašao bio je MIDI kontroler. MIDI kontroler je svaki hardver koji šalje MIDI podatke (digitalno sučelje glazbenih instrumenata) na uređaj za pokretanje zvukova i stvaranje glazbe.

Otkrio sam da su mnoge implementacije komplicirane, čak i one za početnike. Bilo je jako frustrirajuće otkriti da moram upotrijebiti stotine redaka nečitljivog koda. Ili da između ostalih primjera u nekim slučajevima moram lemiti otpornik.

Projekt

Izgradnjom vlastitog Arduino MIDI kontrolera namjera mi je bila napraviti ugodan projekt, zadržavajući buku na najnižoj razini. Nešto što bi svaki početnik mogao slijediti. Da bih to postigao, upotrijebio sam MIDI Fighter 3D kao osnovnu inspiraciju i uklonio svaku nebitnu značajku.

Ukupni troškovi mog projekta bili su ispod 30 USD, a popis materijala bio je stvarno kratak (partnerske veze):

  • Arduino Leonardo (ili klon): između 10 i 20 dolara.
  • 16 x Sanwa gumbi 24 mm (ili klon): između 1 USD i 2,50 USD po gumbu.
  • Lemilica
  • 22 AWG električna žica

Arduino ploča

Kad sam započeo ovaj projekt, otkrio sam da postoji hrpa novih Arduino modela (ne uključujući stotine kompatibilnih ploča). I svi oni nude malo drugačije mogućnosti.

Morao sam poslati MIDI signale na računalo, a najjednostavniji način za to je putem USB -a. Svaka Arduino ploča zasnovana na mikrokontroleru ATmega32u4 ima ugrađenu USB komunikaciju.

Službene Arduino ploče s izvornom USB podrškom su Arduino Due, Arduino Zero, Arduino Leonardo, Arduino Micro. Ove ploče imaju integriranu USB podršku što znači da mogu djelovati kao USB MIDI uređaj.

Odlučio sam otići s klonom Arduino Leonarda. Ima dovoljno ulaza za ovaj projekt, a uključuje i zaglavlja, što olakšava uključivanje/isključivanje žica.

Prvi koraci

Iako ću objasniti korak po korak kako sam implementirao kod za ovaj projekt, možete preuzeti konačnu verziju.

Za učitavanje koda na ploču morate koristiti Arduino IDE. Također imaju i web uređivač koji je vrlo koristan, ali imaju ograničenu kvotu dnevno za sastavljanje koda.

Korak 1: Treptanje ugrađene LED diode

Smiješno je kako "Hello World" u svijetu hardvera treperi LED.

Bilo je to lijepo iznenađenje za mene kada sam otkrio da Arduino Leonardo ima ugrađenu LED diodu koju možete treptati kako biste testirali svoj kôd. Na taj način ne morate graditi vanjski krug na ploči s LED -om i otpornikom.

Kôd:

Korak 2: Treptanje LED diode na ručnom unosu

Sljedeći logičan korak bio je treptanje iste LED diode kad god pošaljem signal. Uklonio sam plastični poklopac s jednog kraja 2 Dupont žice, a drugi kraj spojio na ploču:

  • Pin broj 2: Jedan od digitalnih ulaza (pozitivan). To može biti bilo koji digitalni pin.
  • Pin GND: Bilo koji pin za uzemljenje (negativan).

Sada, svaki put kad spojim izložene krajeve žica, zatvaram krug i na taj način mogu izvršiti kod

Svaki od 20 digitalnih pinova na Leonardu ima unutarnji otpornik (isključen prema zadanim postavkama) koji se može omogućiti pomoću INPUT_PULLUP -a. Imajte na umu da uvlačni ulaz znači da je stanje gumba obrnuto:

  • VISOKO kad je krug otvoren (gumb NIJE pritisnut).
  • NISKA kada je krug zatvoren (pritisnuto dugme).

Kôd:

Korak 3: Instaliranje MIDIUSB knjižnice

Ova knjižnica omogućuje Arduino ploči s USB mogućnostima da djeluje kao MIDI instrument preko USB -a. Više informacija potražite u službenoj dokumentaciji.

Pomoću Arduino IDE -a možete instalirati dodatne Arduino knjižnice pomoću Upravitelja knjižnice:

  1. Otvorite IDE i kliknite izbornik "Sketch", zatim "Include Library", pa "Manage Libraries".
  2. Potražite MIDIUSB i kliknite Instaliraj.
  3. Nakon što završi, pored biblioteke MIDIUSB trebala bi se pojaviti instalirana oznaka.
  4. Zatvorite Upravitelja knjižnice.

Sada Leonardo može slati MIDI poruke putem USB -a! No, prvo je potreban neki uvid u to kako MIDI radi.

Kako MIDI radi

"MIDI (digitalno sučelje za glazbene instrumente) standardni je komunikacijski protokol koji povezuje elektroničke glazbene instrumente, računala i povezane audio uređaje za reprodukciju glazbe." - Wikipedija

On obrađuje poruke o događajima s podacima o visini tona i brzini svirane note, između ostalih uputa

U ovom specifičnom projektu, ulaz sa 16 gumba šalje različite poruke putem USB -a. Ove se poruke mogu pretvoriti u zvuk na računalu pomoću bilo kojeg prikladnog softvera poput GarageBanda ili Abletona Live.

Anatomija MIDI poruke

Za slanje MIDI poruke upotrijebio sam metodu sendMIDI () iz biblioteke MIDIUSB koju sam instalirao u koraku 3.

Ova metoda može primiti 4 parametra:

  • Vrsta događaja: Može biti 0x09 za notu On (sviraj notu) ili 0x08 za note Off (prestani svirati notu).
  • Napomena Uključeno/Isključeno: Vrsta događaja u kombinaciji s MIDI kanalom (1-16). Koristim samo kanal 1 tako da je ili 0x90 za bilješku Uključeno ili 0x80 za bilješku Isključeno.
  • Broj note: Svaka nota ima pridruženu numeričku visinu (frekvencijsku ljestvicu).
  • Brzina: Od 0 (bez brzine) do 127 (najbrže).

Korak 4: Slanje MIDI poruke

Uključio sam biblioteku MIDIUSB i umjesto da treperi ugrađena LED dioda, poslao sam poruku.

Kôd:

Važno: Od ovog koraka nadalje, Arduino se pretvara u MIDI USB kontroler i prestaje primati kôd putem USB -a.

Kad zaglavite u položaju u kojem se Arduino više ne može programirati, slijedite ove korake:

  1. Držite pritisnutu zaobljenu tipku za poništavanje na Arduino ploči.
  2. Pritisnite Upload na Arduino IDE -u.
  3. Otpustite gumb za resetiranje.
  4. Ažurirani kôd bit će postavljen na ploču.

Korak 5: Slanje MIDI poruke sa svakog gumba

Slanje MIDI poruke sa svakog gumba
Slanje MIDI poruke sa svakog gumba

Posljednji korak bio je mapiranje svakog tona na gumb. Za 16 gumba definirao sam ljestvicu od C2 do E3b, to su rasponi od 36 do 51 u nizu odozdo prema gore i slijeva nadesno. Pogledajte ovu datoteku iz Arduino Tutoriala da vidite koja visina odgovara svakoj noti.

Koristio sam digitalne pinove od 2 do 12 i analogne pinove (koristeći ih kao digitalne) od A0 do A4.

Ovako izgleda konačni kod

Korak 6: Postavljanje kanala ili banaka (izborno)

Postavljanje kanala ili banaka (izborno)
Postavljanje kanala ili banaka (izborno)

U slučaju da želite dodati još gumba s mogućnošću mijenjanja kanala ili banaka, kao u MIDI Fighter 3D (vidi sliku), Arduino Leonardo ima još četiri pina koje možete koristiti. Arduino Leonardo ima 20 digitalnih ulazno/izlaznih pinova, od kojih se samo 16 koristi za sviranje nota.

Pomoću tih dodatnih gumba možete ažurirati varijablu u kodu i poslati njezinu vrijednost kao parametar metodi MidiUSB.sendMIDI:

gist.github.com/lean8086/ec8da7486ec3621f9f0b90542a06fcea

Korak 7: Slučaj

Slučaj
Slučaj
Slučaj
Slučaj

Kako bi ovaj projekt bio jednostavan, bio sam izuzetno izbirljiv u odabiru koje značajke uključuju.

  • Samo gumbi: 16 arkadnih gumba sličnih Sanwi, u mreži 4x4. Bez gumba, bez klizača, bez fadera ili bilo kojeg drugog analognog ulaza.
  • Unibody kućište: Ne koristite vijke, matice, vijke ili ljepilo za kućište ili za držanje Arduino ploče.
  • Svakodnevni alati: Na primjer, lemio sam žice umjesto da kupim određenu škaru za žice za arkadne gumbe.

Unibody dizajn

Jedan od izazova s kojima sam se suočio bilo je dizajniranje kućišta dovoljno jednostavnog da ne treba montažu i može se ispisati 3D u jednoj vožnji.

Kako bih izbjegao korištenje vijaka ili ljepila, morao sam dizajnirati kućište koje omogućuje najmanji pristup elektronici. Moja najveća inspiracija za kućište bio je Mac Mini koji ima rupu u obliku kruga na dnu. Također sam za to želio dizajnirati poklopac koji se može vijčati, ali odlučio sam ga pustiti da se otvori kako bi se otkrila elektronika.

Preuzmite 3D kućište za ispis (322 KB). Preporučene postavke: PLA, slojevi od 0,15 mm, ispuna od 20%, podržavaju pojačala barem za rupu sa zaobljenim dnom, Arduino držače i mikro USB.

Držite Arduino bez vijaka

Leonardo ima 4 rupe za uvrtanje ploče u bilo koje prikladno kućište, ali moja je ideja bila olakšati dodavanje i uklanjanje ploče iz kućišta.

Pronalaženje držača isječaka za Arduino na Thingiverseu bilo je jednostavno i trebalo mi je 5 ponavljanja da integriram taj držač u unibody dizajn. Najteže je bilo izraditi noge kako bi se izbjegle rupe za gumbe i kako bi mikro USB bio centriran prema kućištu.

Korak 8: Skupština

Skupština
Skupština
Skupština
Skupština
Skupština
Skupština

Nakon što sam umetnuo sve gumbe, lemio sam kratke crne žice spajajući sve negativne nogice gumba između njih.

Zatim sam lemio duge crvene žice sa svake pozitivne noge za spajanje izravno na ploču.

Za spajanje žica s Arduinom izrezao sam i lemio neke Dupont krajeve i pokrio ih termoskupljajućim cijevima.

Spojio sam žice na ploču istim redoslijedom kao u MIDI Fighteru. Odozdo prema gore i slijeva nadesno

Korak 9: Korištenje MIDI kontrolera

Korištenje MIDI kontrolera
Korištenje MIDI kontrolera

Bilo koji glazbeni softver (ili odgovarajući hardver) može se koristiti za primanje MIDI -ja i stvaranje glazbe. Najviše se preporučuju Garage Band, Ableton Live i znam da postoji hrpa aplikacija za instaliranje na telefon.

Svi su ti alati korisni za učitavanje unaprijed definiranih zvukova za bubnjanje prstima, ali napravljeni su za veće svrhe. Ovi alati početnicima mogu biti teški za postavljanje.

MIDI u web pregledniku

Kako bih nešto bio usklađeniji s ovim projektom i njegovom jednostavnošću, izgradio sam web alat potpuno fokusiran na MIDI kontrolere.

Punchy: WebMIDI i WebAudio implementacija za MIDI kontrolere.

Može čitati MIDI poruke u bilo kojem pregledniku koji podržava WebMIDI JavaScript API. Zatim reproducira zvukove u sintisajzeru (pomoću WebAudio API -ja) ili u uzorku, učitavajući prilagođene zvukove iz bilo kojeg zvučnog paketa.

Postavite Ableton Live

Kako bi MIDI kontroler radio s Ableton Live, slijedite ove jednostavne korake iz njihove službene dokumentacije.

Idite na Postavke → Povežite MIDI i provjerite je li na "Ulazu" uključeno "Track" i "Remote", a na izlazu je uključeno "Remote", kao što je spomenuto u vodiču:

Preporučeni: