Talaan ng mga Nilalaman:

Arduino Uno Midi Fighter: 5 Hakbang
Arduino Uno Midi Fighter: 5 Hakbang

Video: Arduino Uno Midi Fighter: 5 Hakbang

Video: Arduino Uno Midi Fighter: 5 Hakbang
Video: I built an Arcade DIY MIDI controller with an Arduino Pro Micro: The Fliper 2024, Hulyo
Anonim
Arduino Uno Midi Fighter
Arduino Uno Midi Fighter

Ang itinuturo na ito ay nilikha bilang pagtupad sa kinakailangan ng proyekto ng Makecourse sa University of South Florida (www.makecourse.com)

Batay sa sikat na MidiFighter ng DJ Techtools, ang lutong bahay na Arduino na pinapatakbo ng Musical Instrument Digital Interface (MIDI) na controller ay maaaring magamit bilang isang aparato ng MIDI sa anumang software ng Digital Audio Workstation (DAW). Ang isang MIDI controller ay maaaring magpadala at tumanggap ng mga mensahe ng MIDI mula sa isang computer at maaaring magamit upang direktang makontrol ang alinmang software ang ginagamit. Bilang karagdagan, ang mga kontrol sa isang MIDI controller ay ganap na napapasadyang - nangangahulugang ang bawat indibidwal na pindutan, slider at knob ay maaaring ma-map sa anumang pagpapaandar sa isang DAW. Halimbawa, ang pagpindot sa isang pindutan ay maaaring maglaro ng isang tukoy na tala o mai-program upang i-toggle ang tempo ng iyong proyekto sa audio.

github.com/jdtar/Arduino-Midi-Controller

Hakbang 1: Mga Kagamitan

Nasa ibaba ang isang listahan ng mga materyales at tool na ginamit sa proyektong ito.

Arduino Uno

Breadboard

4051/4067 Multiplexer

Jumper wires

Dagdag na Wire

2x 10k ohm linear slide potentiometers

16x mga pindutan ng Sanwa 24mm

Heat Shrink

Panghinang

Pang-ahit

4.7 kΩ risistor

Acrylic Sheet (para sa talukap ng mata)

Pabahay para sa mga pindutan at Arduino

3d printer

Laser Cutter

Hakbang 2: Disenyo

Disenyo
Disenyo
Disenyo
Disenyo

Naibigay na sa akin ang pabahay para sa aking MIDI controller bago simulan ang proyekto, kaya't kinutya ko ang isang sketch para sa takip upang mailarawan kung saan ilalagay ang lahat. Alam kong nais ko ng hindi bababa sa 16 na mga pindutan at isang pares ng potensyal bilang isang tampok kaya sinubukan kong i-out ang mga bahagi nang pantay-pantay hangga't maaari.

Matapos iguhit ang layout para sa talukap ng mata, na-export ang file bilang isang 1: 1 PDF at ipinadala ito sa isang laser cutter upang gupitin ang isang sheet ng acrylic. Para sa mga butas ng tornilyo, minarkahan ko kung saan ko nais ang mga butas na kasama ng marker at natunaw ang acrylic na may isang mainit na filament.

Nakalakip ang 1: 1 PDF na maaaring mai-print bilang isang 1: 1 at gupitin ng mga tool sa kuryente kung ang isang laser cutter ay hindi magagamit.

Hakbang 3: Konstruksiyon at Mga Kable

Konstruksiyon at Kable
Konstruksiyon at Kable
Konstruksiyon at Kable
Konstruksiyon at Kable
Konstruksiyon at Kable
Konstruksiyon at Kable

Matapos i-cut ang pagputol ng acrylic, nalaman ko na ang acrylic ay masyadong manipis upang sapat na suportahan ang lahat ng mga bahagi. Pagkatapos ay pinutol ko ang isa pang sheet at idinikit ang mga ito kung saan nangyari na ganap na gumana.

Ang mga kable ng mga sangkap ay tumagal ng ilang pagsubok at error ngunit nagresulta sa Fritzing sketch na nakakabit. Una kong nag-wire ang mga ground wires at ang 4.7kΩ resistor, nahinang at pinaliit ng init ang mga koneksyon sa mga pindutan. Ang pag-mount ng dalawang slide potentiometers ay nangangailangan ng mga butas sa pagtunaw para sa mga turnilyo sa acrylic. Matapos ang dalawang potentiometers ay na-screwed, sila ay naka-wire hanggang sa A0 at A1 analog pin. Matapos makumpleto ang mga kable, naalala ko na walang mga cap ng knob para sa aking fader kaya sa halip na bilhin ang mga ito, nag-print ako ng ilang mga cap ng knob gamit ang isang 3-D na printer sa pamamagitan ng pag-sketch nito sa Autodesk Fusion 360 at pag-export sa isang STL file. De

Ang Arduino Uno ay mayroon lamang 12 magagamit na mga digital input pin ngunit 16 na mga pindutan ang dapat i-wire up. Upang mabayaran ito, nag-wire ako ng isang 74HC4051 Multiplexer sa isang breadboard na gumagamit ng 4 digital input pin at nagbibigay-daan sa maraming signal upang magamit ang isang nakabahaging linya na nagreresulta sa 8 magagamit na mga digital input pin para sa isang kabuuang 16 mga digital na pin na magagamit para magamit.

Ang pag-kable ng mga pindutan sa tamang mga pin ay simpleng isang bagay ng paglikha ng isang 4x4 matrix at ginagamit iyon sa code. Gayunpaman, ang nakakalito na bahagi ay ang tukoy na binili ng multiplexer ay may isang tukoy na layout ng pin na tinulungan ng datasheet at mayroon din akong isang natukoy na layout ng tala sa pag-wire ng mga pindutan na natapos na mukhang medyo ganito:

TANDAANG MATRIX

[C2] [C # 2] [D2] [D # 2]

[G # 2] [A1] [A # 2] [B1]

[E1] [F1] [F # 1] [G1]

[C2] [C # 2] [D2] [D # 2]

PIN MATRIX (M = MUX INPUT)

[6] [7] [8] [9]

[10] [11] [12] [13]

[M0] [M1] [M2] [M3]

[M4] [M5] [M6] [M7]

Hakbang 4: Programming

Programming
Programming

Kapag natapos na ang pagpupulong, ang pag-program ng Arduino ay natitira na. Ang naka-attach na script ay nakasulat sa isang paraan na madali itong napapasadya.

Kasama sa simula ng script ang MIDI.h library at isang library ng panghihiram na hiniram mula sa blog ng Mga Tala at Volts na parehong kasama sa zip file para sa code. Gamit ang library ng controller, ang mga bagay para sa mga pindutan, potentiometers at multiplexed na mga pindutan ay maaaring malikha na naglalaman ng mga halaga ng data na kasama ang numero ng tala, mga halaga ng kontrol, bilis ng tala, numero ng channel ng MIDI, atbp. Ang MIDI.h library ay nagbibigay-daan sa mga komunikasyon ng MIDI I / O sa Ang mga serial port ng Arduino na kung saan ay kukuha ng data mula sa mga object ng controller, pinapalit ito sa mga mensahe ng MIDI at ipinapadala ang mga mensahe sa alinmang koneksyon ng midi na nakakonekta.

Ang walang bisa na pag-setup na bahagi ng script ay pinapasimulan ang lahat ng mga channel bilang naka-off at nagsisimula din ng isang serial na koneksyon sa 115200 baud, isang rate na mas mabilis kaysa sa mga signal ng MIDI na ipinagpapalit.

Mahalagang kinukuha ng pangunahing loop ang mga arrays ng mga pindutan at multiplexed na mga pindutan at nagpapatakbo ng isang para sa loop na suriin kung ang pindutan ay pinindot o inilabas at nagpapadala ng kaukulang mga byte ng data sa interface ng midi. Sinusuri ng loop ng potentiometer ang posisyon ng potentiometer at ipinapadala ang kaukulang mga pagbabago sa boltahe pabalik sa interface ng midi.

Hakbang 5: Pag-setup

Image
Image
Pag-set up
Pag-set up
Pag-set up
Pag-set up
Pag-set up
Pag-set up

Kapag na-load ang script sa Arduino, ang susunod na hakbang ay ang plug and play. Mayroong ilang mga hakbang, gayunpaman, bago ito magamit.

Sa OSX, isinama ng Apple ang isang tampok upang lumikha ng mga virtual midi device na maaaring ma-access sa pamamagitan ng application ng Audio Midi Setup sa mga mac. Sa sandaling nalikha ang bagong aparato, ang Hairless MIDI ay maaaring magamit upang lumikha ng isang serial na koneksyon sa pagitan ng Arduino at ng bagong virtual midi device. Ang serial na koneksyon mula sa Arduino sa pamamagitan ng Hairless MIDI ay nagpapatakbo sa rate ng baud na tinukoy sa walang bisa na pag-setup na bahagi ng script at dapat itakda na katumbas sa mga setting ng kagustuhan ng Hairless MIDI.

Para sa mga layuning pagsubok ay ginamit ko ang Midi Monitor upang suriin kung ang tamang data ay ipinapadala naisip ang koneksyon sa serial-MIDI. Sa sandaling natukoy ko na ang lahat ng bawat pindutan na ipinadala sa tamang data sa pamamagitan ng mga tamang channel, itinakda ko ang signal ng MIDI upang mag-ruta sa Ableton Live 9 bilang isang MIDI Input. Sa Ableton nagawa kong i-map ang mga hiniwang audio sample sa bawat pindutan at i-play ang bawat sample.

Inirerekumendang: