Sisällysluettelo:
- Vaihe 1: Tarvittavat komponentit
- Vaihe 2: Tekniset tiedot
- Vaihe 3: Piirikaaviot
- Vaihe 4: Tarvittavat sovellukset ja IDE: t
- Vaihe 5: asiaankuuluvat koodit kaikelle
- Vaihe 6: Asenna se
- Vaihe 7: Tulokset/Videot
Video: Reaaliaikainen ääni-MIDI-muunnin .: 7 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:01
Namaste ihmiset! Tämä on projekti, jota työskentelin yhdellä kurssillani (reaaliaikainen digitaalinen signaalinkäsittely) kandidaatin ohjelmassa. Hankkeen tavoitteena on tehdä DSP -järjestelmä, joka "kuuntelee" äänidataa ja lähettää MIDI -viestit vastaavista muistiinpanoista UART: n kautta. Tähän tarkoitukseen käytettiin Arduino Nanoa. Lyhyesti sanottuna mikro-ohjain tekee FFT: n saapuvalle äänidatalle ja analysoi huippuja ja lähettää sopivan MIDI-viestin. Älä kuitenkaan välitä MOSFET -laitteista, koska ne ovat tarkoitettu johonkin muuhun projektiin (joka julkaistaan myöhemmin myös ohjeissa) eikä niitä vaadita tässä projektissa. Joten aloitetaan jo !!
Vaihe 1: Tarvittavat komponentit
Tarvitsemme seuraavia komponentteja tämän projektin rakentamiseksi, vaikka monet näistä ovat yleisiä ja voidaan korvata vastaavilla. Katso myös piirikaavio selvittääksesi ja etsiä parempia toteutuksia.
Komponentin määrä
1. Elektreettimikrofoni. 1
2. 30 kilon ohmin vastus. 1
3. 150 kilon ohmin vastus. 1
4. 100 ohmin vastus. 1
5. 2.2 Kilon ohmin vastukset. 3
6. 10 Kilo Ohmin esiasetettu potti. 1
7. 10 Kilo Ohmin trimmeripannu. 1
8. 47 Kilo Ohmin stereopata. 1
9. 470 ohmin vastukset. 2
10. 0.01uF kondensaattorit. 2
11. 2.2uF kondensaattorit. 3
12. 47uF kondensaattorit. 2
13. 1000uF kondensaattori. 1
14. 470uF kondensaattori. 1
15. 7805 jännitesäädin. 1
16. Naaras ja uros otsikkolista. 1 kpl
17. Barrel Jack -liitin. 1
18. 12 V 1 ampeerin tasavirtasovitin. 1
19. SPST -kytkin. (Valinnainen) 1
20. Perfboard. 1
Vaihe 2: Tekniset tiedot
Näytteenottotaajuus: 3840 näytettä/sekunti
Näytteiden lukumäärä per FFT: 256
Taajuustarkkuus: 15 Hz
Virkistystaajuus: Noin 15 Hz
Nuottien alemmat ja korkeammat asteikot eivät tallennu oikein. Alemmat nuotit kärsivät matalan taajuuden resoluutiosta, kun korkeammat taajuudet kärsivät alhaisista näytteenottotaajuuksista. Arduino -muisti on jo lopussa, joten parempaa resoluutiota ei voi saada. Ja parempi resoluutio tulee alennetun virkistystaajuuden kustannuksella, joten vaihto on väistämätöntä. Maallikkoversio Heisenbergin epävarmuusperiaatteesta.
Ensisijainen vaikeus on eksponentiaalinen etäisyys nuottien välillä (Kuten kuvassa näkyy. Jokainen impulssi taajuusakselilla on nuotti). LFT: n kaltaiset algoritmit voivat auttaa, mutta se on hieman kehittynyt ja vähän monimutkainen laitteelle, kuten arduino Nano.
Vaihe 3: Piirikaaviot
Huomaa: Älä häiritse kuvien kolmea MOSFETia ja ruuviliittimiä. Niitä ei vaadita tässä projektissa. Huomaa, että mikrofonin tulokortti on irrotettava tai modulaarinen. Pieni kuvaus eri lohkoista on alla.
1) Kaksi 470 ohmin vastusta yhdistävät stereoäänisignaalin monoäänisignaaliksi. Varmista, että signaalin maadoitus menee virtuaaliseen maahan (piirikaaviossa vg) eikä piirin maahan.
2) Seuraava lohko on toisen asteen sallen-key-alipäästösuodatin, joka vastaa tulosignaalin kaistanrajoituksesta aliasoinnin välttämiseksi. Koska työskentelemme vain +12 V: n jännitteellä, painotamme op-vahvistinta tekemällä RC-jännitteenjakajan. joka huijaa op -vahvistimen ajattelemaan, että syöttöjännite on 6 0–6 voltin syöttöjännite (dual rail), jossa vg on op -vahvistimen maan viite.
3) Sitten lähtö on alipäästösuodatettu estämään 6 voltin DC -siirtymä ja yhdistettynä noin 0,55 voltin tasavirtaan, koska ADC konfiguroidaan käyttämään sisäistä 1,1 V: tä Vref: nä.
Huomaa: Elektreettimikrofonin esivahvistin ei ole paras piiri Internetissä. Piiri, jossa on op-amp, olisi ollut parempi valinta. Haluamme taajuusvasteen olevan mahdollisimman tasainen. 47 kilon ohmin stereopataa käytetään rajataajuuden määrittämiseen, jonka pitäisi tyypillisesti olla puolet näytteenottotaajuudesta. 10 kilon ohmin esiasetusta (pieni potti, jossa on valkoinen pää) käytetään säätämään vahvistusta ja suodattimen Q -arvoa. 10 kilon ohmin trimmeripannu (jossa on metallinen viritysnuppi, joka näyttää pieneltä litteältä pääruuvilta) käytetään asettamaan jännite lähes puoleen Vrefistä.
Huomautus: Kun liität nanon P. C. pidä SPST -kytkin auki muuten suljettuna. Ole erityisen varovainen, jos näin ei tehdä, se voi vahingoittaa piiriä/tietokonetta/jännitesäädintä tai mitä tahansa edellä mainittujen yhdistelmää
Vaihe 4: Tarvittavat sovellukset ja IDE: t
- Arduino Nanon koodaamiseen menin primitiivisen AVR -studion 5.1 kanssa, koska se näyttää toimivan minulle. Asentajan löydät täältä.
- Arduino Nanon ohjelmointiin käytin Xloaderia. Sen todella helppokäyttöinen kevyt työkalu polttaa.hex -tiedostoja Arduinosille. Saat sen täältä.
- Pientä bonusminiprojektia ja piirin viritystä varten käytin käsittelyä. Voit saada sen täältä, vaikka jokaiseen versioon tehdään suuria muutoksia, joten saatat joutua piilottamaan vanhentuneita toimintoja, jotta luonnos toimisi.
- FL studio tai mikä tahansa muu MIDI -käsittelyohjelmisto. Voit saada FL Studion rajoitetun version ilmaiseksi täältä.
- Silmukka -MIDI luo virtuaalisen MIDI -portin ja FL studio tunnistaa sen ikään kuin se olisi MIDI -laite. Hanki kopio samasta täältä.
- Karvatonta MIDI: tä käytetään MIDI -viestien lukemiseen COM -portista ja lähettämiseen silmukka -MIDI -porttiin. Se myös debugoi MIDI-viestit reaaliajassa, mikä tekee virheenkorjauksesta kätevää. Hanki karvaton MIDI täältä.
Vaihe 5: asiaankuuluvat koodit kaikelle
Haluan kiittää Electronic Lifes MFG: tä (Website Here !!) tässä projektissa käyttämästäni kiinteän pisteen FFT -kirjastosta. Kirjasto on optimoitu mega AVR -perheelle. Tämä on linkki kirjaston tiedostoihin ja koodeihin, joita hän käytti. Liitän koodini alla. Se sisältää myös käsittelyluonnoksen ja AVR C -koodin. Huomaa, että tämä kokoonpano toimi minulle, enkä ota mitään vastuuta, jos vahingoitat jotain näiden koodien takia. Lisäksi minulla oli paljon ongelmia yrittäessä saada koodi toimimaan. Esimerkiksi DDRD: ssä (Data Direction Register) on DDDx (x = 0-7) bittimaskeina perinteisen DDRDx: n (x = 0-7) sijaan. Varo näitä virheitä kokoamisen aikana. Myös mikro-ohjaimen vaihtaminen vaikuttaa näihin määritelmiin, joten pidä silmällä tätä myös käsitellessäsi kokoamisvirheitä. Ja jos mietit, miksi projektikansion nimi on DDT_Arduino_328p.rar, sanotaanpa vain, että illalla oli hyvin pimeää, kun aloitin, ja olin tarpeeksi laiska jättämättä valot päälle.: P
Käsittelyluonnoksen suhteen kirjoitin tämän luonnoksen käsittelyllä 3.3.6. Sinun on asetettava luonnoksessa oleva COM -portin numero manuaalisesti. Voit tarkistaa koodin kommentit.
Jos joku voi auttaa minua siirtämään koodit Arduino IDE: hen ja uusimpaan käsittelyversioon, olisin iloinen ja kiitän myös kehittäjiä / avustajia.
Vaihe 6: Asenna se
- Avaa koodi ja käännä koodi #define pcvisual kommentoimatta ja #define midi_out kommentoi.
- Avaa xloader ja selaa hakemistoon koodilla, selaa.hex -tiedostoon ja polta se nanoksi valitsemalla sopiva levy ja COM -portti.
- Avaa käsittelyluonnos ja suorita se sopivalla COM -porttihakemistolla. Jos kaikki menee hyvin, sinun pitäisi pystyä näkemään signaalin spektri nastassa A0.
- Hanki ruuvimeisseli ja käännä trimmeripannua, kunnes spektri on tasainen (DC -komponentin tulisi olla lähellä nollaa). Älä syötä sitten mitään signaalia kortille. (Älä kiinnitä mikrofonimoduulia).
- Käytä nyt mitä tahansa tällaista pyyhkäisygeneraattorityökalua syöttääksesi kortille mikro-puhelimesta ja tarkkaile taajuuksia.
- Jos et näe taajuuksien pyyhkäisyä, vähennä rajataajuutta muuttamalla 47 kilon ohmin vastusta. Lisää myös vahvistusta käyttämällä 10 kilon ohmin esiasetettua pottia. Yritä saada tasainen ja näkyvä pyyhkäisyteho muuttamalla näitä parametreja. Tämä on hauska osa (pieni bonus!), Soita suosikkikappaleitasi ja nauti niiden reaaliaikaisesta taajuudesta. (Katso video)
- Käännä nyt upotettu C -koodi uudelleen tällä kertaa #define pcvisual kommentoi ja #define midi_out kommentoimatta.
- Lataa uusi koottu koodi arduino Nano -laitteeseen.
- Avaa LoopMidi ja luo uusi portti.
- Avaa FL studio tai muu MIDI -liitäntäohjelmisto ja varmista, että silmukan midi -portti näkyy MIDI -portin asetuksissa.
- Avoin karvaton MIDI, johon on liitetty arduino. Valitse lähtöportiksi LoopMidi -portti. Siirry asetuksiin ja aseta Baud -nopeudeksi 115200. Valitse nyt Arduino Nanoa vastaava COM -portti ja avaa portti.
- Soita "puhtaita" ääniä mikrofonin lähellä ja kuulet vastaavan nuotin osuman myös MIDI -ohjelmistossa. Jos vastausta ei tule, yritä laskea C -koodissa määritettyä ylärajaa. Jos nuotit laukaistaan satunnaisesti, nosta ylärajaa.
- Hanki pianosi ja testaa kuinka nopea järjestelmäsi on !! Parasta on, että muistiinpanojen kullanvärisellä lukitusalueella se voi helposti tunnistaa useita samanaikaisia näppäimen painalluksia helposti.
Huomautus: Kun yksi sovellus käyttää COM -porttia, toinen ei voi lukea sitä. Esimerkiksi jos karvaton MIDI lukee COM -porttia, Xloader ei pystyisi vilkkumaan taulua
Vaihe 7: Tulokset/Videot
Siinä se nyt kaverit! Toivottavasti pidät siitä. Jos sinulla on ehdotuksia tai parannuksia projektiin, kerro siitä kommenttiosassa. Rauha!
Suositeltava:
Reaaliaikainen Rubikin kuution silmät ratkaistu Ratkaisu Raspberry Pi: n ja OpenCV: n avulla: 4 vaihetta
Reaaliaikainen Rubikin kuution sokeat ratkaisija Raspberry Pi: n ja OpenCV: n avulla: Tämä on Rubikin kuutiotyökalun toinen versio, joka on suunniteltu ratkaisemaan silmät. Ensimmäinen versio on JavaScriptin kehittämä, näet projektin RubiksCubeBlindfolded1Toisin kuin edellinen, tämä versio käyttää OpenCV -kirjastoa värien ja e
Reaaliaikainen kaivon vesimittari: 6 vaihetta (kuvilla)
Reaaliaikainen kaivojen vedenpinnan mittari: Nämä ohjeet kuvaavat, kuinka rakentaa edullinen, reaaliaikainen vedenpinnan mittari kaivettuja kaivoja varten. Vedenkorkeusmittari on suunniteltu roikkumaan kaivetun kaivon sisällä, mittaamaan vedenpinta kerran päivässä ja lähettämään tiedot WiFi- tai matkapuhelinyhteydellä
Reaaliaikainen kaivon veden lämpötila, johtavuus ja vedenpinnan mittari: 6 vaihetta (kuvilla)
Reaaliaikainen kaivon veden lämpötilan, johtavuuden ja vedenpinnan mittari: Nämä ohjeet kuvaavat kuinka rakentaa edullinen, reaaliaikainen vesimittari lämpötilan, sähkönjohtavuuden (EC) ja vedenpinnan valvontaan kaivetuissa kaivoissa. Mittari on suunniteltu roikkumaan kaivetun kaivon sisään, mittaamaan veden lämpötilaa, EY
Kuinka tehdä kosteuden ja lämpötilan reaaliaikainen tietojen tallennin Arduino UNO: n ja SD-kortin avulla - DHT11-tiedonkeruusimulaatio Proteuksessa: 5 vaihetta
Kuinka tehdä kosteuden ja lämpötilan reaaliaikainen tietojen tallennin Arduino UNO: n ja SD-kortin avulla | DHT11-tiedonkeruusimulaatio Proteuksessa: Johdanto: Hei, tämä on Liono Maker, tässä on YouTube-linkki. Teemme luovaa projektia Arduinon kanssa ja työskentelemme sulautettujen järjestelmien parissa
Postipaita: Reaaliaikainen puettavan asennon tunnistus: 9 vaihetta
Postshirt: Reaaliaikainen puettavan asennon tunnistus: Postshirt on reaaliaikainen langaton asennon tunnistusjärjestelmä, joka lähettää ja luokittelee kiihtyvyysmittarin tiedot Adafruit Featherista Android -sovellukseen Bluetoothin kautta. Koko järjestelmä voi havaita reaaliajassa, jos käyttäjä on huonossa asennossa ja