Obsah:
- Krok 1: Potrebné súčasti
- Krok 2: Technické špecifikácie
- Krok 3: Schémy zapojenia
- Krok 4: Potrebné aplikácie a IDE
- Krok 5: Relevantné kódy pre všetko
- Krok 6: Nastavenie
- Krok 7: Výsledky/Videá
Video: Prevodník zvuku na MIDI v reálnom čase .: 7 krokov
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:58
Namaste ľudia! Toto je projekt, na ktorom som pracoval na jednom zo svojich kurzov (Spracovanie digitálneho signálu v reálnom čase) v bakalárskom programe. Cieľom projektu je vytvoriť systém DSP, ktorý „počúva“zvukové údaje a vydáva MIDI správy so zodpovedajúcimi poznámkami cez UART. Na tento účel bolo použité Arduino Nano. Stručne povedané, mikroprocesor robí FFT na prichádzajúcich zvukových dátach a analyzuje špičky a odošle príslušnú MIDI správu. Nebojte sa o MOSFEToch, pretože sú určené pre iný projekt (ktorý bude neskôr uvedený aj v pokynoch) a nie sú pre tento projekt povinné. Začnime teda už !!
Krok 1: Potrebné súčasti
Na zostavenie tohto projektu budeme potrebovať nasledujúce komponenty, aj keď mnohé z nich sú generické a môžu byť nahradené ich ekvivalentmi. Pozrite si tiež schému zapojenia, aby ste zistili, ako lepšie implementovať.
Množstvo komponentu
1. Elektretový mikrofón. 1
2. Rezistor 30 Kilo Ohm. 1
3. Rezistor 150 Kilo Ohm. 1
4. 100 ohmový odpor. 1
5. Rezistory 2,2 Kilo Ohm. 3
6. 10 Kilo Ohm prednastavený hrniec. 1
7. Zastrihávač 10 Kilo Ohm. 1
8. 47 pot Kilo Ohm stereo hrniec. 1
9. Odpor 470 ohmov. 2
10. 0,01uF kondenzátory. 2
11. 2,2uF kondenzátory. 3
12. 47uF kondenzátory. 2
13. 1000uF kondenzátor. 1
14. 470uF kondenzátor. 1
15. 7805 regulátor napätia. 1
16. Hlavičkový pásik pre ženy a pre mužov. Po 1
17. Konektor Barrel Jack. 1
18. Adaptér DC 12 V 1 Amp. 1
19. Prepínač SPST. (Voliteľné) 1
20. Perfboard. 1
Krok 2: Technické špecifikácie
Vzorkovacia frekvencia: 3840 vzoriek/s
Počet vzoriek na FFT: 256
Frekvenčné rozlíšenie: 15 Hz
Obnovovacia frekvencia: približne 15 Hz
Dolné a vyššie stupnice noty nie sú správne zachytené. Nižšie tóny trpia nízkofrekvenčným rozlíšením, kde vyššie frekvencie trpia nízkymi vzorkovacími frekvenciami. Arduino už nemá pamäť, takže neexistuje spôsob, ako dosiahnuť lepšie rozlíšenie. A lepšie rozlíšenie bude stáť za zníženú obnovovaciu frekvenciu, takže kompromis je nevyhnutný. Laická verzia Heisenbergovho princípu neurčitosti.
Hlavnou ťažkosťou je exponenciálna vzdialenosť medzi notami (Ako je vidieť na obrázku. Každý impulz na frekvenčnej osi je notou). Algoritmy ako LFT môžu pomôcť, ale je to trochu pokročilé a pre zariadenie ako arduino Nano trochu komplikované.
Krok 3: Schémy zapojenia
Poznámka: Nebojte sa troch MOSFETov a skrutkových svoriek na obrázkoch. Pre tento projekt nie sú povinné. Všimnite si, že vstupná doska mikrofónu je vyberateľná alebo ju nazývajú modulárne. Nasleduje malý opis rôznych blokov.
1) Dva odpory 470 ohmov kombinujú stereofónny zvukový signál s mono zvukovým signálom. Zaistite, aby uzemnenie signálu vstupovalo na virtuálnu zem (vg v schéme zapojenia) a nie na uzemnenie obvodu.
2) Ďalším blokom je dolnopriepustný filter sallen-key 2. rádu, ktorý je zodpovedný za obmedzenie pásma vstupného signálu, aby sa zabránilo aliasingu. Pretože pracujeme iba s napájaním +12 V, opierame operačný zosilňovač o RC delič napätia. to oklame operačný zosilňovač na myšlienku, že napájanie je 6 0 -6 voltov (duálna koľajnica), kde vg je základná referencia pre operačný zosilňovač.
3) Potom je výstup dolnopriepustný filtrovaný na blokovanie DC offsetu 6 voltov a spojený s DC okolo 0,55 voltov, pretože ADC bude nakonfigurovaný tak, aby používal interný 1,1 V ako Vref.
Poznámka: Predzosilňovač pre elektretový mikrofón nie je najlepším obvodom na internete. Obvod zahŕňajúci operačný zosilňovač by bol lepšou voľbou. Chceme, aby frekvenčná odozva bola čo najrovnejšia. Stereo pot 47 kOhm sa používa na definovanie medznej frekvencie, ktorá by mala byť typicky polovičná zo vzorkovacej frekvencie. Predvoľba 10 kΩ (malý hrniec s bielou hlavou) sa používa na doladenie zisku a hodnoty Q filtra. 10 -ohmový vyžínač (jeden s kovovým ladiacim gombíkom, ktorý vyzerá ako malá skrutka s plochou hlavou) sa používa na nastavenie napätia tak blízko, ako je polovica Vref.
Poznámka: Keď pripájate Nano k P. C. nechajte spínač SPST otvorený, inak je zatvorený. Zvláštnu pozornosť venujte tomu, ak tak neurobíte, môže dôjsť k poškodeniu obvodu/počítača/regulátora napätia alebo akejkoľvek kombinácie vyššie uvedených
Krok 4: Potrebné aplikácie a IDE
- Na kódovanie Arduino Nano som išiel s primitívnym štúdiom AVR 5.1, pretože sa mi zdá, že mi to funguje. Inštalačný program nájdete tu.
- Na programovanie Arduino Nano som použil Xloader. Je to skutočne ľahko použiteľný ľahký nástroj na napaľovanie súborov.hex do Arduinos. Môžete ho získať tu.
- Na malý bonusový mini projekt a doladenie obvodu som použil spracovanie. Môžete to získať odtiaľto, aj keď v každej revízii urobíte zásadné zmeny, takže aby ste mohli náčrt fungovať, možno sa budete musieť popasovať s zastaranými funkciami.
- FL studio alebo iný softvér na spracovanie MIDI. Odtiaľto môžete bezplatne získať verziu FL Studio s obmedzeným prístupom.
- Loop MIDI vytvára virtuálny MIDI port a FL studio ho detekuje, ako keby išlo o MIDI zariadenie. Kópiu toho istého získate odtiaľto.
- Bezsrsté MIDI sa používa na čítanie MIDI správ z portu COM a ich odosielanie do slučkového MIDI portu. Tiež ladí MIDI správy v reálnom čase, čo uľahčuje ladenie. Získajte odtiaľto MIDI bez vlasov.
Krok 5: Relevantné kódy pre všetko
Chcel by som poďakovať spoločnosti Electronic Lifes MFG (webová stránka tu !!) za knižnicu FFT s pevným bodom, ktorú som použil v tomto projekte. Knižnica je optimalizovaná pre rodinu mega AVR. Toto je odkaz na súbory a kódy knižnice, ktoré použil. Nižšie prikladám svoj kód. Obsahuje tiež náčrt spracovania a kód AVR C. Vezmite prosím na vedomie, že toto je konfigurácia, ktorá fungovala pre mňa a ja nepreberám žiadnu zodpovednosť, ak niečo poškodíte kvôli týmto kódom. Tiež som mal veľa problémov so snahou zaistiť, aby kód fungoval. Napríklad DDRD (Data Direction Register) má DDDx (x = 0-7) ako bitové masky namiesto konvenčných DDRDx (x = 0-7). Pri kompilácii dávajte pozor na tieto chyby. Na tieto definície má vplyv aj zmena mikrokontroléra, takže pri riešení chýb pri kompilácii dávajte pozor aj na to. A ak vás zaujíma, prečo sa priečinok s projektom nazýva DDT_Arduino_328p.rar, povedzme si, že večer, keď som začínal, bola veľká tma a bol som natoľko lenivý, že som nezapol svetlá.: P
Pokiaľ ide o náčrt spracovania, na napísanie tohto náčrtu som použil spracovanie 3.3.6. V skici budete musieť manuálne nastaviť číslo portu COM. Môžete skontrolovať komentáre v kóde.
Ak mi niekto môže pomôcť s prenosom kódov do Arduino IDE a najnovšej verzie spracovania, bol by som rád a poskytol by zásluhy aj vývojárom / prispievateľom.
Krok 6: Nastavenie
- Otvorte kód a skompilovajte ho s kódom #define pcvisual a komentárom #define midi_out.
- Otvorte xloader a prejdite na adresár s kódom, nájdite súbor.hex a napaľujte ho na nano výberom vhodnej dosky a portu COM.
- Otvorte skicu spracovania a spustite ju s príslušným indexom portu COM. Ak všetko pôjde dobre, mali by ste vidieť spektrum signálu na kolíku A0.
- Vezmite skrutkovač a otáčajte trimrom, kým nebude spektrum ploché (DC zložka by mala byť blízko nuly). Potom na dosku nevkladajte žiadny signál. (Nepripájajte modul mikrofónu).
- Teraz použite ľubovoľný nástroj generátora ťahania, ako je tento, na vstup do dosky z mikrofónu a sledujte spektrum.
- Ak nevidíte rozsiahlu frekvenciu, znížte hraničnú frekvenciu zmenou odporu 47 kiloohmov. Zvýšte tiež zisk pomocou prednastaveného hrnca 10 kiloohmov. Zmenou týchto parametrov sa pokúste dosiahnuť plochý a výrazný výstup rozmítania. Toto je zábavná časť (malý bonus!), Hrajte svoje obľúbené piesne a užívajte si ich spektrum v reálnom čase. (Pozri si video)
- Teraz skompilovajte vložený kód C tentoraz s komentárom #define pcvisual a komentárom #define midi_out.
- Znova načítajte nový kompilovaný kód do arduino Nano.
- Otvorte LoopMidi a vytvorte nový port.
- Otvorte FL studio alebo iný softvér rozhrania MIDI a zaistite, aby bol v nastaveniach portu MIDI viditeľný port midi.
- Otvorené bezsrsté MIDI s pripojeným arduinom. Vyberte výstupný port ako port LoopMidi. Prejdite na nastavenia a nastavte prenosovú rýchlosť na 115 200. Teraz vyberte COM port zodpovedajúci Arduino Nano a otvorte port.
- Zahrajte si „čisté“tóny v blízkosti mikrofónu a mali by ste počuť zodpovedajúci tón v softvéri MIDI. Ak neexistuje žiadna odpoveď, skúste znížiť up_threshold definovaný v kóde C. Ak sa poznámky spúšťajú náhodne, zvýšte prahovú hodnotu up_threshold.
- Vezmite si klavír a vyskúšajte si, ako rýchly je váš systém !! Najlepšie na tom je, že v zlátivej zóne poznámok dokáže pohodlne ľahko detekovať viacnásobné súčasné stlačenie klávesov.
Poznámka: Keď je na port COM prístupná jedna aplikácia, nemôže ju čítať iná aplikácia. Ak napríklad Hairless MIDI číta COM port, Xloader nebude môcť flashovať dosku
Krok 7: Výsledky/Videá
To je zatiaľ chlapci! Dúfam, že sa vám to páči. Ak máte v rámci projektu nejaké návrhy alebo vylepšenia, dajte mi vedieť v sekcii komentárov. Mier!
Odporúča:
Ako používať modul hodín v reálnom čase (DS3231): 5 krokov
Ako používať hodinový modul v reálnom čase (DS3231): DS3231 je nízkonákladový, extrémne presný hodiny v reálnom čase I2C (RTC) s integrovaným kryštálovým oscilátorom (TCXO) s teplotnou kompenzáciou a kryštálom. Zariadenie má vstup na batériu a udržiava presné meranie času pri napájaní
Merač hladiny vody v studni v reálnom čase: 6 krokov (s obrázkami)
Merač hladiny vody v studni v reálnom čase: Tieto pokyny popisujú, ako zostrojiť lacný merač hladiny vody v reálnom čase na použitie v kopaných studniach. Merač hladiny vody je navrhnutý tak, aby visel vo vykopanej studni, meral hladinu vody raz denne a odosielal údaje prostredníctvom WiFi alebo mobilného pripojenia
Merač teploty, vodivosti a hladiny vody v studni v reálnom čase: 6 krokov (s obrázkami)
Merač teploty, vodivosti a hladiny vody v studni v reálnom čase: Tieto pokyny popisujú, ako v kopaných studniach postaviť lacný vodomer na sledovanie teploty, elektrickej vodivosti (EC) a hladiny vody v reálnom čase. Merač je určený na zavesenie do vykopanej studne, na meranie teploty vody,
Wiggly Wobbly - Pozrite sa na zvukové vlny !! Vizualizér zvuku v reálnom čase !!: 4 kroky
Wiggly Wobbly - Pozrite sa na zvukové vlny !! Real Time Audio Visualizer !!: Zamysleli ste sa niekedy nad tým, ako vyzerajú piesne Beetle ?? Alebo jednoducho chcete vidieť, ako zvuk vyzerá? Potom sa nebojte, som tu, aby som vám pomohol dosiahnuť, aby to bolo znovaeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeetetetších skladbách
Indikátor úrovne zvuku/zvuku: 10 krokov
Indikátor úrovne zvuku/zvuku: V tomto projekte vám ukážem, ako vytvoriť jednoduchý indikátor hladiny zvuku pomocou operačných zosilňovačov. Poznámka: Ak chcete položiť otázky, navštívte moju stránku Opýtajte sa odborníka. Užitočné doplnkové videá: Simulovaný obvod nastavený na doske s chlebom (proto