Audio->led, wizualizacja

0 głosów
46 wizyt
pytanie zadane 2 sierpnia 2017 przez użytkownika grankee (80)
Witam. Posiadam 5m pasek led do sterowania z arduino. Chciałem z niego zrobić jakby lewy i prawy słupek odzwierciedlający podany dźwięk stereo. Pasek pozostanie w całości tylko po prostu od połowy do pierwszej diody będzie to lewa strona a od połowy do ostatniej prawa. Chcę, aby ilość świecących diod była proporcjonalna do natężenia dźwięku- to wydaje się proste, przenieść poziom z analogRead na ilość diod i tyle, jednak to na czym mi bardzo zależy to kolor diody ma odzwierciedlać tony tj łagodne wysokie tony = jasny niebieski, zaczyna się wokal to uderza w fiolet np. a jak pójdzie bas to wchodzi w czerwony. Jak to zwizualizować to już moje pole do popisu, jednak problem jest taki, że nie mam pojęcia jak odczytać aktualnie odtwarzany ton dźwięku. Sygnał analogowy z gniazda typu cinch

1 odpowiedź

+1 głos
odpowiedź 2 sierpnia 2017 przez użytkownika tom5555 (1,454)

Są dwie drogi. Pierwsza polega na zastosowaniu trzech filtrów, dolnoprzepustowego, środkowoprzepustowego i górnoprzepustowego, i podłączeniu wyjścia każdego z filtrów do wejścia przetwornika ADC uC. Drugi sposób to zastosowanie programowej analizy FFT. 

https://pl.wikipedia.org/wiki/Szybka_transformacja_Fouriera 

http://pdf.helion.pl/arduak/arduak.pdf 

komentarz 8 sierpnia 2017 przez użytkownika grankee (80)
Dzięki, niesłusznie zapomniane filtry przeleciały mi od ucha do ucha, kiedy oglądałem odcinek o nich. Nie widziałem wówczas potrzeby ich stosowania. BTW googlując wczoraj w poszukiwaniu wskazówek natrafiłem na MSGEQ7, którym można odczytywać informacje na temat amplitudy na poszczególnych predefiniowanych częstotliwościach. Ja sam go nie będę stosował, bo jest ich za dużo na moje potrzeby, nie mam czasu czekać na zamówienie itd,  ale napisałem o tym jakby ktoś jeszcze szukał rozwiązania.

Potrzebuję jeszcze jakoś sprawdzić kilka utworów na jakich częstotliwościach są grane, aby miało to ręce i nogi, jak to zrobić? Myślałem o programie, który w kilku słupkach  będzie na bieżąco pokazywał natężenie dźwięki na konkretnych częstotliwościach podczas odtwarzania, włącznie z informacją jaka to dokładnie częstotliwość, ale takowego nie znalazłem. Jakaś wskazówka?
komentarz 7 stycznia przez użytkownika grankee (80)
Wyczekałem się na MSGEQ7 i okazało się, że wszystkie przyszły wadliwe. Każdy pokazywał co innego, ale każdy źle. Podłączyłem jak w poradniku Korneliusza Jarzebskiego, czytając komentarze zorientowałem się, że nie tylko mi coś nie trybi. Postanowiłem spróbować FFT i działa całkiem ładnie, ale tylko do ok 4.5kHz. Próbowałem zwiększyć podane tam wartości zdefiniowane
#define SAMPLES 2048             //Must be a power of 2
#define SAMPLING_FREQUENCY 9000 //Hz, must be less than 10000 due to ADC
nawet samples dałem na tak duże, a i tak nic to nie dało. W arduino nawiększego możliwe jest 128 ograniczone brakiem pamięci na więcej, użyłem wemos d1, nic to nie pomogło. Rozumiem, że tego ograniczenia nie idzie przeskoczyć?
...