Sadržaj:

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

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

Video: Izgradnja Arduino MIDI kontrolera: 9 koraka (sa slikama)
Video: Auto Otamatone Under Construction 2024, Novembar
Anonim

Ovo uputstvo je prvobitno objavljeno na mom blogu 28. juna 2020

Uživam u izgradnji stvari koje uključuju elektroniku, i uvijek sam htio nešto napraviti koristeći Arduino.

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 muzičkog instrumenta) na uređaj za pokretanje zvukova i stvaranje muzike.

Otkrio sam da su mnoge implementacije komplicirane, čak i one za početnike. Bilo je vrlo frustrirajuće saznati da moram koristiti stotine redova nečitljivog koda. Ili da u nekim slučajevima, među ostalim primjerima, moram lemiti otpornik.

Projekat

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, koristio 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 zaista kratak (partnerske veze):

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

Arduino ploča

Kad sam započeo ovaj projekt, otkrio sam da postoji gomila 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čunar, 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 postavljanje koda na ploču morate koristiti Arduino IDE. 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 diodom.

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

Kod:

Korak 2: Treptanje LED diode na ručnom unosu

Sljedeći logičan korak bio je treperiti istom LED diodom 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 dugmeta obrnuto:

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

Kod:

Korak 3: Instaliranje MIDIUSB biblioteke

Ova biblioteka omogućava Arduino ploči sa 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 biblioteke pomoću Upravitelja biblioteke:

  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 biblioteke.

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

Kako MIDI radi

"MIDI (digitalni interfejs za muzičke instrumente) je standardni komunikacijski protokol koji povezuje elektronske muzičke instrumente, računare i povezane audio uređaje za reprodukciju muzike." - Wikipedia

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

U ovom konkretnom projektu, ulaz sa 16 tipki šalje različite poruke putem USB -a. Ove se poruke mogu pretvoriti u zvuk na računaru pomoću bilo kojeg odgovarajućeg softvera poput GarageBand ili Ableton 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 (zaustavi sviranje note).
  • Napomena Uključeno/Isključeno: Vrsta događaja u kombinaciji sa MIDI kanalom (1-16). Koristim samo kanal 1 tako da je ili 0x90 za napomenu Uključeno ili 0x80 za bilješku Isključeno.
  • Broj note: Svaka nota ima pridruženu numeričku visinu (frekvencijsku skalu).
  • Brzina: Od 0 (bez brzine) do 127 (najbrži).

Korak 4: Slanje MIDI poruke

Uključio sam MIDIUSB biblioteku i umjesto da trepćem ugrađenu LED diodu, poslao sam poruku.

Kod:

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 zaobljeno dugme za reset na Arduino ploči.
  2. Kliknite Otpremi na Arduino IDE.
  3. Otpustite dugme za resetovanje.
  4. Ažurirani kôd bit će postavljen na ploču.

Korak 5: Slanje MIDI poruke sa svakog dugmeta

Slanje MIDI poruke sa svakog dugmeta
Slanje MIDI poruke sa svakog dugmeta

Posljednji korak je bilo mapiranje svakog tona na dugme. Za 16 tipki definirao sam skalu od C2 do E3b, koja su tona od 36 do 51 u nizu odozdo prema gore i slijeva nadesno. Pogledajte ovu datoteku iz Arduino vodiča 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 (pogledajte 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

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

  • Samo dugmad: 16 arkadnih dugmadi sličnih Sanwi, u mreži 4x4. Bez dugmadi, bez klizača, bez fadera ili bilo kojeg drugog analognog ulaza.
  • Jedinstveno 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 mašinu za šišanje za arkadne tipke.

Unibody Design

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

Da bih izbjegao korištenje vijaka ili ljepila, morao sam dizajnirati kućište koje omogućava najmanji pristup elektronici. Moja najveća inspiracija za kućište bio je Mac Mini, koji ima rupu u obliku kruga na dnu. Za to sam također ž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 štampanje (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 ideja je bila olakšati dodavanje i uklanjanje ploče iz kućišta.

Pronalaženje držača isječaka za Arduino na Thingiverse -u bilo je jednostavno i trebalo mi je 5 ponavljanja da integriram taj držač u unibody dizajn. Najteži dio bio je napraviti noge kako bi izbjegao rupe za dugmad i postavio mikro USB tako da bude 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 tipke, lemio sam kratke crne žice spajajući sve negativne nogice gumba između njih.

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

Da bih spojio žice s Arduinom, odrezao sam i lemio neke krajeve Duponta i prekrio ih termoskupljajućim cijevima.

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

Korak 9: Upotreba MIDI kontrolera

Upotreba MIDI kontrolera
Upotreba MIDI kontrolera

Bilo koji muzički softver (ili odgovarajući hardver) može se koristiti za prijem MIDI i stvaranje muzike. Najviše se preporučuju Garage Band, Ableton Live i znam da postoji gomila 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 na 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 "Remote" ON, kao što je navedeno u vodiču:

Preporučuje se: