Talaan ng mga Nilalaman:
- Hakbang 1: Kinakailangan ang Mga Bahagi
- Hakbang 2: Mga Teknikal na Pagtukoy
- Hakbang 3: Mga Diagram ng Circuit
- Hakbang 4: Mga Kinakailangan na Aplikasyon at IDE
- Hakbang 5: Mga May-katuturang Code para sa Lahat
- Hakbang 6: Pagse-set up nito
- Hakbang 7: Mga Resulta / Video
Video: Real-time na Audio sa MIDI Converter .: 7 Mga Hakbang
2024 May -akda: John Day | [email protected]. Huling binago: 2024-01-30 13:12
Namaste mga tao! Ito ay isang proyekto na nagtrabaho ako para sa isa sa aking mga kurso (Real-Time Digital Signal Processing) sa programa ng aking bachelor. Nilalayon ng proyekto ang paggawa ng isang sistema ng DSP na "nakikinig" ng data ng audio at naglalabas ng mga mensahe ng MIDI ng kaukulang tala sa UART. Ginamit ang Arduino Nano para sa hangaring ito. Mahabang kwento ang micro-controller ay gumagawa ng isang FFT sa papasok na audio data at gumagawa ng ilang pagtatasa ng mga tuktok at nagpapadala ng naaangkop na mensahe ng MIDI. Huwag mag-abala tungkol sa mga MOSFET bagaman dahil ang mga ito ay para sa ilang iba pang proyekto (na kung saan ay ilalagay din sa paglaon sa mga itinuturo din) at hindi kinakailangan para sa proyektong ito. Kaya't magsimula na tayo !!
Hakbang 1: Kinakailangan ang Mga Bahagi
Kakailanganin namin ang mga sumusunod na sangkap upang maitayo ang proyektong ito kahit na marami sa mga ito ay generic at maaaring mapalitan ng kanilang mga katumbas. Sumangguni rin sa diagram ng circuit upang mag-ehersisyo at manghuli para sa mas mahusay na pagpapatupad.
Dami ng Component
1. Electret Microphone. 1
2. 30 resistor ng Kilo Ohm. 1
3. 150 resistor ng Kilo Ohm. 1
4. 100 ohm risistor. 1
5. 2.2 Kilo Ohm resistors. 3
6. 10 Kilo Ohm preset na palayok. 1
7. 10 Kilo Ohm trimmer pot. 1
8. 47 Kilo Ohm stereo pot. 1
9. 470 resistors ng Ohms. 2
10. 0.01uF capacitors. 2
11. 2.2uF capacitors. 3
12. 47uF capacitors. 2
13. 1000uF capacitor. 1
14. 470uF capacitor. 1
15. regulator ng 7805 boltahe. 1
16. Babae at Lalaki na header strip. Bawat isa
17. Konektor ng Barrel Jack. 1
18. 12 V 1 Amp DC Adapter. 1
19. SPST switch. (Opsyonal) 1
20. Perfboard. 1
Hakbang 2: Mga Teknikal na Pagtukoy
Dalas ng sampling: 3840 na mga sample / sec
Bilang ng mga sample bawat FFT: 256
Paglutas ng Dalas: 15Hz
Refresh rate: Sa paligid ng 15 Hz
Ang mas mababa at mas mataas na antas ng mga tala ng musikal ay hindi nakuha nang tama. Ang mga mas mababang tala ay nagdurusa mula sa mababang resolusyon ng dalas kung saan ang mas mataas na mga frequency ay nagdurusa mula sa mababang mga rate ng pag-sample. Ang arduino ay wala na sa memorya kaya walang paraan upang makakuha ng mas mahusay na resolusyon. At ang mas mahusay na resolusyon ay darating sa halagang nabawasan ang rate ng pag-refresh kaya hindi maiiwasan ang trade-off. Layman na bersyon ng prinsipyo ng walang katiyakan sa Heisenberg.
Ang pangunahing kahirapan ay ang exponential spacing sa pagitan ng mga tala (Tulad ng nakikita sa pigura. Ang bawat salpok sa dalas ng axis ay isang musikal na tala). Maaaring makatulong ang mga algorithm tulad ng LFT ngunit medyo advanced at medyo kumplikado para sa isang aparato tulad ng arduino Nano.
Hakbang 3: Mga Diagram ng Circuit
Tandaan: Huwag mag-abala ng tatlong MOSFET at mga terminal ng tornilyo sa mga larawan. Hindi kinakailangan ang mga ito para sa proyektong ito. Pansinin na ang board ng input ng mikropono ay naaalis o kung tawagin nila itong Modular. Ang isang maliit na paglalarawan ng iba't ibang mga bloke ay ibinibigay sa ibaba.
1) Ang dalawang 470 ohm resistors ay pinagsasama ang stereo audio signal sa mono audio signal. Tiyaking ang lupa ng signal ng papunta sa virtual na lupa (vg sa circuit diagram) at hindi sa lupa ng circuit.
2) Ang susunod na bloke ay isang 2nd order sallen-key low pass filter na responsable para sa banda na nililimitahan ang signal ng pag-input upang maiwasan ang aliasing. Dahil nagtatrabaho kami sa + 12v lamang na supply ay kinukilingan namin ang op-amp sa pamamagitan ng paggawa ng isang RC voltage divider. niloloko ang op-amp sa pag-iisip na ang supply ay 6 0 -6 volts supply (dual rail) kung saan ang vg ay ang sanggunian sa lupa para sa op amp.
3) Kung gayon ang output ay mababang pumasa na na-filter upang harangan ang DC offset ng 6 volts at isinama sa DC na halos 0.55 volts dahil ang ADC ay mai-configure upang magamit ang panloob na 1.1 v bilang Vref.
Tandaan: Ang pre-amplifier para sa electret microphone ay hindi ang pinakamahusay na circuit sa internet. Ang isang circuit na kinasasangkutan ng op-amp ay naging isang mas mahusay na pagpipilian. Nais namin na ang tugon sa dalas ay maging flat hangga't maaari. Ang 47 kilo ohms stereo pot ay ginagamit upang tukuyin ang cut-off frequency na dapat ay karaniwang kalahati ng dalas ng sampling. Ang 10 kilo ohm preset (Ang maliit na palayok na may puting ulo) ay ginagamit upang ibagay ang nakuha at ang Q na halaga ng filter. Ang 10 kilo ohm trimmer pot (isa na may isang metallic tuning knob na parang isang maliit na flat head screw) ay ginagamit upang maitakda ang boltahe na mas malapit sa kalahating Vref.
Tandaan: Kapag kumokonekta ka sa Nano sa P. C. panatilihing bukas ang switch ng SPST kung hindi pa nakasara. Panatilihin ang espesyal na pangangalaga sa kabiguang gawin ito ay maaaring makapinsala sa circuit / computer / voltage regulator o anumang kombinasyon ng nasa itaas
Hakbang 4: Mga Kinakailangan na Aplikasyon at IDE
- Para sa pag-coding ng Arduino Nano nagpunta ako sa primitive AVR studio 5.1 dahil mukhang gagana ito para sa akin. Maaari mong makita ang installer dito.
- Para sa pagprograma ng Arduino Nano ginamit ko ang Xloader. Napakadali nitong gamitin ang magaan na tool sa pag-burn ng.hex file sa Arduinos. Maaari mo itong makuha dito.
- Para sa maliit na bonus mini na proyekto at pag-tune ng circuit na ginamit ko sa pagproseso. Maaari mo itong makuha mula rito bagaman gumawa ng mga pangunahing pagbabago sa bawat rebisyon upang maaari kang umikot sa mga hindi na ginagamit na pag-andar upang gumana ang sketch.
- FL studio o anumang iba pang software sa pagpoproseso ng MIDI. Maaari kang makakuha ng FL studio limitadong bersyon ng pag-access nang libre mula dito.
- Lumilikha ang Loop MIDI ng isang virtual na port ng MIDI at napansin ng FL studio na para bang isang aparato na MIDI. Kumuha ng isang kopya ng pareho mula rito.
- Ginagamit ang Hairless MIDI upang mabasa ang mga mensahe ng MIDI mula sa COM port at ipadala ito sa loop MIDI port. Nagde-debug din ito ng mga mensahe ng MIDI ng real-time na ginagawang maginhawa ang pag-debug. Kunin dito ang Hairless MIDI.
Hakbang 5: Mga May-katuturang Code para sa Lahat
Nais kong pasalamatan ang Electronic Lifes MFG (Website Dito !!) para sa nakapirming point FFT library na ginamit ko sa proyektong ito. Ang library ay na-optimize para sa mega pamilya ng AVR. Ito ang link sa mga file ng library at code na ginamit niya. Inilalakip ko ang aking code sa ibaba. Kasama rito ang pagproseso ng sketch at ang AVR C code din. Mangyaring tandaan na ito ang pagsasaayos na gumana para sa akin at hindi ako kumukuha ng anumang responsibilidad kung ano pa man kung napinsala mo ang anumang bagay dahil sa mga code na ito. Gayundin, marami akong mga isyu na sinusubukan na gumana ang code. Halimbawa, ang DDRD (Rehistro ng Direksyon ng Data) ay may DDDx (x = 0-7) bilang mga bit mask sa halip na maginoo DDRDx (x = 0-7). Abangan ang mga error na ito habang nag-iipon. Ang pagbabago rin ng micro-controller ay nakakaapekto sa mga kahulugan na ito kaya't bantayan din ito habang nakikipag-usap sa mga error sa pagtitipon. At kung nagtataka ka kung bakit ang folder ng proyekto ay tinatawag na DDT_Arduino_328p.rar, sabihin na lang natin na napakadilim sa gabi nang magsimula ako at tinatamad ako upang hindi buksan ang mga ilaw.: P
Pagdating sa pagproseso ng sketch, ginamit ko ang pagproseso ng 3.3.6 upang isulat ang sketch na ito. Kakailanganin mong itakda ang numero ng COM port sa sketch nang manu-mano. Maaari mong suriin ang mga komento sa code.
Kung may makakatulong sa akin na mai-port ang mga code sa Arduino IDE at pinakabagong bersyon ng pagproseso, matutuwa ako at magbibigay ng mga kredito sa mga nag-ambag din ng developer.
Hakbang 6: Pagse-set up nito
- Buksan ang code at ipunin ang code na may #define pcvisual na hindi komportable at nagkomento si #define midi_out.
- Buksan ang xloader at mag-browse sa direktoryo na may code, mag-browse sa.hex file at sunugin ito sa nano sa pamamagitan ng pagpili ng naaangkop na board at COM port.
- Buksan ang sketch ng pagpoproseso at patakbuhin ito na may naaangkop na index ng COM port. Kung maayos ang lahat dapat mong makita ang isang spectrum ng signal sa pin A0.
- Kumuha ng isang driver ng tornilyo at i-on ang palayan ng pantabas hanggang sa ang spectrum ay flat (ang bahagi ng DC ay dapat na malapit sa zero). Huwag maglagay ng anumang senyas sa pisara pagkatapos. (Huwag ilakip ang module ng mikropono).
- Gumamit ngayon ng anumang tool ng sweep generator na tulad nito upang magbigay ng input sa board mula sa micro-phone at obserbahan ang spectrum.
- Kung hindi mo nakikita ang isang pagwalis ng mga frequency, bawasan ang cut-off na dalas sa pamamagitan ng pagbabago ng 47 kilo ohm na paglaban. Taasan din ang nakuha sa pamamagitan ng paggamit ng 10 kilo ohm preset pot. Subukang makakuha ng isang patag at kilalang output ng walis sa pamamagitan ng pagbabago ng mga parameter na ito. Ito ang kasiya-siyang bahagi (ang maliit na bonus!), Patugtugin ang iyong mga paboritong kanta at tangkilikin ang kanilang real-time spectrum. (Panoorin ang video)
- I-compile muli ang naka-embed na C code sa oras na ito sa # tukuyin ang pcvisual na nagkomento at #define midi_out na hindi komportable.
- I-reload ang bagong naipon na code sa arduino Nano.
- Buksan ang LoopMidi at lumikha ng isang bagong port.
- Buksan ang FL studio o iba pang software ng interface ng MIDI at tiyaking makikita ang loop midi port sa mga setting ng MIDI port.
- Buksan ang walang buhok na MIDI na may konektado sa arduino. Piliin ang port ng output upang maging port ng LoopMidi. Pumunta sa mga setting at itakda ang rate ng Baud na maging 115200. Ngayon piliin ang COM port na naaayon sa Arduino Nano at buksan ang port.
- Patugtugin ang ilang mga "purong" tono malapit sa mikropono at dapat mong marinig ang katumbas na tala na na-hit sa MIDI software din. Kung walang tugon subukang babaan ang up_threshold na tinukoy sa C code. Kung ang mga tala ay napalitaw nang sapalaran pagkatapos ay taasan ang up_threshold.
- Kunin ang iyong piano at subukan kung gaano kabilis ang iyong system !! Ang pinakamagandang bagay ay ang nasa gintong-lock na sona ng mga tala maaari itong kumportable nang madaling makita ang maraming mga sabay-sabay na pagpindot sa key.
Tandaan: Kapag na-access ang COM port ng isang application hindi ito maaaring mabasa ng isa pa. Halimbawa kung ang Hairless MIDI ws na nagbabasa ng COM port, hindi ma-flash ng Xloader ang board
Hakbang 7: Mga Resulta / Video
Iyon lang ito para sa ngayon guys! Sana magustuhan mo. Kung mayroon kang anumang mga mungkahi o pagpapabuti sa proyekto ipaalam sa akin sa seksyon ng komento. Kapayapaan!
Inirerekumendang:
Pagdaragdag ng isang Kasalukuyang Tampok ng Limit sa isang Buck / Boost Converter: 4 Mga Hakbang (na may Mga Larawan)
Pagdaragdag ng isang Kasalukuyang Tampok ng Limit sa isang Buck / Boost Converter: Sa proyektong ito magkakaroon kami ng isang mas malapit na pagtingin sa isang pangkaraniwang buck / boost converter at lumikha ng isang maliit, karagdagang circuit na nagdaragdag ng isang kasalukuyang tampok na limitasyon dito. Sa pamamagitan nito, ang buck / boost converter ay maaaring magamit tulad ng isang variable lab bench power supply. Le
Negative Viewer at Converter ng Pelikula: 8 Mga Hakbang (na may Mga Larawan)
Negative Viewer at Converter ng Pelikula: Natagpuan ko ang isang agarang pangangailangan upang mabilis na matingnan at maitala ang mga lumang negatibo sa pelikula. Nagkaroon ako ng ilang daang pag-uuri … Nakikilala ko na mayroong iba't ibang mga app para sa aking smart phone ngunit hindi ako nakakuha ng kasiya-siyang mga resulta kaya ito ang aking cam
200Watts 12V hanggang 220V DC-DC Converter: 13 Mga Hakbang (na may Mga Larawan)
200Watts 12V hanggang 220V DC-DC Converter: Kamusta sa lahat :) Maligayang pagdating sa itinuturo na ito kung saan ipapakita ko sa iyo kung paano ko ginawa ang 12volts na ito sa 220volts DC-DC converter na may feedback upang patatagin ang output voltage at mababang proteksyon ng baterya / sa ilalim ng boltahe, nang hindi ginagamit anumang microcontroller. Kahit na
10 Mga kahalili sa DIY sa Mga Off-The-Shelf na Elektroniko na Mga Bahagi: 11 Mga Hakbang (na may Mga Larawan)
10 Mga Kahalili sa DIY sa Mga Off-The-Shelf na Mga Elektroniko na Bahagi: Maligayang pagdating sa aking kauna-unahang itinuro! Sa palagay mo ba ang ilang mga bahagi mula sa mga tagatingi sa online ay masyadong mahal o may mababang kalidad? Kailangan bang makakuha ng isang prototype nang mabilis at tumatakbo nang mabilis at hindi makapaghintay linggo para sa pagpapadala? Walang mga lokal na electronics distributor? Ang fol
Ang Ultimate Audio Converter: 7 Hakbang (na may Mga Larawan)
Ang Ultimate Audio Converter: Palagi kong ninanais na mag-convert sa pagitan ng mono at stereo at 1/8 "at 1/4" jacks at hindi kailanman mukhang may tamang adapter sa kamay. Noong nakaraang araw ay gumagawa ako ng dalawang magkakahiwalay na adaptor para sa dalawang magkakahiwalay na gawain sa conversion nang magkaroon ako ng biglaang utak