Obsah:
- Krok 1: Požadované součásti
- Krok 2: Technické specifikace
- Krok 3: Schémata zapojení
- Krok 4: Nezbytné aplikace a IDE
- Krok 5: Relevantní kódy pro všechno
- Krok 6: Nastavení
- Krok 7: Výsledky/Videa
Video: Převaděč zvuku na MIDI v reálném čase: 7 kroků
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:21
Namaste lidi! Jedná se o projekt, na kterém jsem pracoval v jednom ze svých kurzů (zpracování digitálního signálu v reálném čase) v bakalářském programu. Cílem projektu je vytvořit systém DSP, který "poslouchá" zvuková data a vydává MIDI zprávy odpovídajících poznámek přes UART. K tomuto účelu bylo použito Arduino Nano. Stručně řečeno, mikrořadič provádí FFT na příchozích zvukových datech a provádí analýzu špiček a odesílá příslušnou MIDI zprávu. Nenechte se obtěžovat MOSFETy, protože jsou pro nějaký jiný projekt (který bude také uveden později na instructables) a nejsou pro tento projekt vyžadovány. Začněme tedy již !!
Krok 1: Požadované součásti
K sestavení tohoto projektu budeme potřebovat následující komponenty, ačkoli mnohé z nich jsou obecné a lze je nahradit jejich ekvivalenty. Podívejte se také do schématu zapojení, abyste zjistili, jak lépe implementovat.
Množství součásti
1. Elektretový mikrofon. 1
2. Rezistor 30 Kilo Ohm. 1
3. Rezistor 150 Kilo Ohm. 1
4. Rezistor 100 ohmů. 1
5. 2.2 Kilo Ohm odpory. 3
6. 10 Kilo Ohm přednastavený hrnec. 1
7. Zastřihovač 10 Kilo Ohm. 1
8. 47 Kilo Ohm stereo pot. 1
9. 470 ohmové odpory. 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. Regulátor napětí 7805. 1
16. Ženský a mužský proužek záhlaví. 1 každý
17. Konektor barel jack. 1
18. Adaptér DC 12 V 1 Amp. 1
19. Přepínač SPST. (Volitelné) 1
20. Perfboard. 1
Krok 2: Technické specifikace
Vzorkovací frekvence: 3840 vzorků/s
Počet vzorků na FFT: 256
Frekvenční rozlišení: 15 Hz
Obnovovací frekvence: Kolem 15 Hz
Dolní a vyšší stupnice not nejsou správně zachyceny. Nižší tóny trpí nízkofrekvenčním rozlišením, kde jako vyšší frekvence trpí nízkou vzorkovací frekvencí. Arduino již nemá paměť, takže neexistuje způsob, jak dosáhnout lepšího rozlišení. A lepší rozlišení bude za cenu snížené obnovovací frekvence, takže kompromis je nevyhnutelný. Laická verze Heisenbergova principu neurčitosti.
Hlavní obtíž je exponenciální rozestup mezi notami (Jak je vidět na obrázku. Každý impuls na frekvenční ose je nota). Algoritmy jako LFT mohou pomoci, ale to je trochu pokročilé a trochu komplikované pro zařízení jako arduino Nano.
Krok 3: Schémata zapojení
Poznámka: Nenechte se obtěžovat třemi MOSFETy a šroubovými svorkami na obrázcích. Pro tento projekt nejsou povinné. Všimněte si, že vstupní deska mikrofonu je vyjímatelná nebo jak ji nazývají modulární. Níže je uveden malý popis různých bloků.
1) Dva odpory 470 ohmů kombinují stereofonní zvukový signál s mono zvukovým signálem. Zajistěte, aby zem signálu vstupovala na virtuální zem (vg ve schématu zapojení) a ne na kostru obvodu.
2) Dalším blokem je nízkoprůchodový filtr sallen-key 2. řádu, který je zodpovědný za omezení pásma vstupního signálu, aby se zabránilo aliasingu. Protože pracujeme pouze s napájením +12 V, zkreslujeme operační zesilovač vytvořením RC dělič napětí. to oklame operační zesilovač na myšlenku, že napájení je 6 0-6 voltů (dual rail), kde vg je referenční zem pro operační zesilovač.
3) Poté je výstup filtrován dolní propustí, aby blokoval stejnosměrný offset 6 voltů a spojený s DC přibližně 0,55 voltů, protože ADC bude nakonfigurován tak, aby používal interní 1,1 V jako Vref.
Poznámka: Předzesilovač pro elektretový mikrofon není nejlepší obvod na internetu. Obvod zahrnující operační zesilovač by byl lepší volbou. Přejeme si, aby frekvenční odezva byla co nejrovnější. Stereo pot 47 kiloohmů se používá k definování mezní frekvence, která by měla být typicky poloviční ze vzorkovací frekvence. Přednastavení 10 kiloohmů (Malý hrnec s bílou hlavou) slouží k vyladění zisku a hodnoty Q filtru. 10k ohmový trimr (jeden s kovovým ladicím knoflíkem, který vypadá jako malý šroub s plochou hlavou) se používá k nastavení napětí tak blízkého jako polovina Vref.
Poznámka: Když připojujete Nano k PC ponechte spínač SPST otevřený, jinak zavřený. Zvláštní pozornost věnujte tomu, že by to mohlo způsobit poškození obvodu/počítače/regulátoru napětí nebo jakékoli kombinace výše uvedených
Krok 4: Nezbytné aplikace a IDE
- Pro kódování Arduino Nano jsem šel s primitivním AVR studio 5.1, protože se zdá, že mi to funguje. Instalační program najdete zde.
- Pro programování Arduino Nano jsem použil Xloader. Je to opravdu snadno použitelný lehký nástroj pro vypalování souborů.hex na Arduinos. Můžete ho získat zde.
- Pro malý bonusový mini projekt a vyladění obvodu jsem použil zpracování. Můžete to získat odtud, přestože v každé revizi došlo k zásadním změnám, takže možná budete muset hrát s zastaralými funkcemi, aby skica fungovala.
- FL studio nebo jakýkoli jiný software pro zpracování MIDI. Odtud můžete zdarma získat verzi FL Studio s omezeným přístupem.
- Loop MIDI vytváří virtuální MIDI port a FL studio je detekuje, jako by to bylo MIDI zařízení. Získejte jeho kopii odtud.
- Bezsrsté MIDI slouží ke čtení MIDI zpráv z COM portu a jejich odesílání do MIDI portu smyčky. Rovněž ladí MIDI zprávy v reálném čase, což usnadňuje ladění. Získejte odtud MIDI bez vlasů.
Krok 5: Relevantní kódy pro všechno
Chtěl bych poděkovat společnosti Electronic Lifes MFG (Website Here !!) za knihovnu FFT s pevným bodem, kterou jsem v tomto projektu použil. Knihovna je optimalizována pro mega rodinu AVR. Toto je odkaz na soubory knihovny a kódy, které použil. Níže přikládám svůj kód. Obsahuje také skicu zpracování a kód AVR C. Vezměte prosím na vědomí, že toto je konfigurace, která pro mě fungovala, a já nenesu žádnou odpovědnost, pokud vůbec něco poškodíte kvůli těmto kódům. Také jsem měl spoustu problémů se snahou, aby kód fungoval. Například DDRD (Data Direction Register) má DDDx (x = 0-7) jako bitové masky místo konvenčních DDRDx (x = 0-7). Při kompilaci si dejte pozor na tyto chyby. Také změna mikrořadiče ovlivňuje tyto definice, takže to sledujte i při řešení chyb při kompilaci. A pokud vás zajímá, proč se složka projektu jmenuje DDT_Arduino_328p.rar, řekněme, že večer, když jsem začínal, byla velká tma a já jsem byl líný natolik, že jsem nesvítil.: P
Když jsem se dostal ke zpracování skici, použil jsem zpracování 3.3.6 k napsání této skici. V náčrtu budete muset ručně nastavit číslo portu COM. Můžete zkontrolovat komentáře v kódu.
Pokud mi někdo může pomoci přenést kódy do Arduino IDE a nejnovější verze pro zpracování, budu rád a také poskytnu kredity vývojářům / přispěvatelům.
Krok 6: Nastavení
- Otevřete kód a zkompilujte kód pomocí #define pcvisual bez komentáře a #define midi_out okomentováno.
- Otevřete xloader a přejděte do adresáře s kódem, vyhledejte soubor.hex a vypálte jej na nano výběrem vhodné desky a portu COM.
- Otevřete skicu zpracování a spusťte ji s příslušným indexem portu COM. Pokud vše půjde dobře, měli byste vidět spektrum signálu na pinu A0.
- Získejte šroubovák a otáčejte potenciometrem, dokud nebude spektrum ploché (stejnosměrná složka by se měla blížit nule). Pak na desku nevkládejte žádný signál. (Nepřipojujte modul mikrofonu).
- Nyní použijte jakýkoli nástroj generátoru rozmítání, jako je tento, k zadání desky z mikrofonu a sledujte spektrum.
- Pokud nevidíte velkou frekvenci, snižte mezní frekvenci změnou odporu 47 kiloohmů. Zesilte také použitím přednastaveného hrnce 10 kilo ohmů. Změnou těchto parametrů se pokuste získat plochý a výrazný výstup rozmítání. Toto je zábavná část (malý bonus!), Hrajte své oblíbené skladby a užívejte si jejich spektrum v reálném čase. (Podívejte se na video)
- Nyní zkompilujte vložený kód C tentokrát znovu s komentářem #define pcvisual a #define midi_out bez komentáře.
- Znovu načtěte nový kompilovaný kód do arduino Nano.
- Otevřete LoopMidi a vytvořte nový port.
- Otevřete FL studio nebo jiný software MIDI rozhraní a ujistěte se, že je v nastavení MIDI portu viditelný midi port smyčky.
- Otevřené bezsrsté MIDI s připojeným arduinem. Vyberte výstupní port jako port LoopMidi. Přejděte do nastavení a nastavte přenosovou rychlost na 115 200. Nyní vyberte COM port odpovídající Arduino Nano a otevřete port.
- Zahrajte nějaké „čisté“tóny v blízkosti mikrofonu a měli byste slyšet odpovídající notový zásah také v MIDI softwaru. Pokud není odpověď, zkuste snížit up_threshold definovaný v kódu C. Pokud se poznámky spouští náhodně, zvyšte up_threshold.
- Pořiďte si piano a vyzkoušejte si, jak rychlý je váš systém !! Nejlepší je, že v zóně goldy-lock poznámek dokáže pohodlně snadno detekovat více současných stisknutí kláves.
Poznámka: Když je na port COM přistupováno jednou aplikací, nelze jej přečíst jinou. Pokud například Hairless MIDI čte COM port, Xloader nebude schopen flashovat desku
Krok 7: Výsledky/Videa
To je prozatím vše, lidi! Doufám, že se vám to líbí. Pokud máte nějaké návrhy nebo vylepšení projektu, dejte mi vědět v sekci komentářů. Mír!
Doporučuje:
Jak používat modul hodin v reálném čase (DS3231): 5 kroků
Jak používat modul hodin v reálném čase (DS3231): DS3231 je levný, extrémně přesný hodiny reálného času I2C (RTC) s integrovaným teplotně kompenzovaným krystalovým oscilátorem (TCXO) a krystalem. Zařízení obsahuje bateriový vstup a udržuje přesné měření času, když je hlavní napájení
Prohlížeč negativních filmů a převaděč: 8 kroků (s obrázky)
Prohlížeč negativních filmů a převaděč: Zjistil jsem okamžitou potřebu rychle zobrazit a zaznamenat staré filmové negativy. Měl jsem k vyřešení několik stovek … Uznávám, že pro můj chytrý telefon existují různé aplikace, ale nebyl jsem schopen dosáhnout uspokojivých výsledků, takže to je to, co
Indikátor úrovně zvuku/zvuku: 10 kroků
Indikátor úrovně zvuku/zvuku: V tomto projektu vám ukážu, jak pomocí operačních zesilovačů vytvořit jednoduchý indikátor úrovně zvuku. Poznámka: Chcete-li se zeptat, navštivte mé stránky Ask the Expert. Užitečná doplňková videa: Simulovaný obvod nastavený na prkénku (proto
Převaděč pásek: 7 kroků
Tape Converter: převádí zvuk ze standardního konektoru pro sluchátka, takže jej můžete přehrávat přes přehrávač kazet
Volič zvuku z mincovny: 3,5 mm přepínač zvuku: 6 kroků
Volič zvuku Mint Boxu: 3,5 mm Přepínač zvuku: Problém: Často na ploše musím používat sluchátka pro hry nebo poslech hudby, když jsou v místnosti jiní lidé, a pak se chci přepnout na reproduktory, pokud se chci pochlubit vtipným video nebo uskutečnit internetový hovor se vzdáleným příbuzným. Th