![[AUDIO] 5-cio pasmowy korektor parametryczny z rejestratorem stereo [AUDIO] 5-cio pasmowy korektor parametryczny z rejestratorem stereo](https://obrazki.elektroda.pl/9234332600_1529619820_thumb.jpeg)
Ode mnie:
Opis jest powierzchowny ze względu na brak czasu. Postaram się odpowiedzieć na rzeczowe, techniczne pytania dotyczące konkretnych zagadnień. Urządzenie jest projektem jednostkowym, niekomercyjnym.
Schemat:
![[AUDIO] 5-cio pasmowy korektor parametryczny z rejestratorem stereo [AUDIO] 5-cio pasmowy korektor parametryczny z rejestratorem stereo](https://obrazki.elektroda.pl/4430277100_1529619777_thumb.jpeg)
Z potrzeby korekcji odsłuchu w trzech miejscach (warsztat, pokój, samochód) wykonałem opisywane urządzenie w liczbie trzech egzemplarzy, choć wszystkie należy traktować jako prototypy. Estetyka nie była tu na pierwszym miejscu a samo urządzenie jest amatorskie. Opisywany układ pozwala poprawić charakterystykę odsłuchu (kolumny-pomieszczenie) poprzez możliwość precyzyjnego filtrowania. Możemy np. stłumić szkodliwe rezonanse czy też podrównać charakterystykę zestawów głośnikowych. Zwykłe, konsumenckie, kilkupasmowe korektory nie zapewnią takiej funkcjonalności - tak naprawdę są zabawkami. Tak samo jak regulacja barwy dźwięku czy filtr fizjologiczny (loudness), uważany za niezbędny przez niedoświadczonych słuchaczy. Sam kiedyś uważałem, że muszą być poodkręcane gały od basu i sopranów, żeby było dobrze. Czas i doświadczenie zweryfikowało jednak ten pogląd - zasadniczą cechą dobrze brzmiącego zestawu jest jak najlepsza liniowość przetwarzania a nie "uśmiech dyskoteki".
Dodatkową funkcją opisywanego urządzenia jest możliwość nagrywania dźwięku na karty SD - np. nagrywanie radia podczas jazdy samochodem.
Cechy urządzenia:
-2 kanały
-częstotliwość próbkowania 50kHz 16bit
-nagrywanie na karty SD przy parametrach 32kHz 12bit stereo
-5 filtrów parametrycznych (dobroć, wzmocnienie, częstotliwość)
-4 pamięci na ustawienia
-matryca kanałów (stereo, mono, mid, side, L solo, R solo, mute L, mute R). Przydatna przy realizacji nagrań.
-wskaźnik wysterowania (wejście lub wyjście)
-regulacja czułości wejściowej i poziomu wyjściowego
-poziom standardowy 0dbV (1V RMS)
-regulacja czułości wejściowej która dla 0dBFS pozwala ustawić:
poziom we maks.: +5dbV (1,8V RMS) poziom we min.: -18dbV (120mV RMS)
-regulacja poziomu wyjściowego, która dla 0dBFS pozwala ustawić:
poziom wy maks.: 0dbV (1V RMS) poziom wy min.: -12dbV (250mV RMS)
-pominięcie DSP (cyfrowe)
-włączany tłumik 6dB, cyfrowy (dla uniknięcia przesteru po filtrach gdy pracujemy z maksymalnym poziomem wejściowym)
-układ zapobiegania zakłóceniom wskutek powstawania pętli masy - zarówno dla wejścia jak i wyjścia.
Układ elektryczny.
Urządzenie oparte jest o mikrokontroler PIC32MX250 oraz przetwornik WM8776. Wejścia i wyjścia audio zapewniają eliminację spadków napięcia na pętli masy, jeśli takowa powstanie. Napięcie odkładające się na rezystorach włączonych pomiędzy masę wejścia a masę urządzenia jest odejmowane od sygnału użytecznego. W zależności od egzemplarza, stosowałem wzmacniacze TL072 i NE5532. Ujemne napięcie zasilania wzmacniaczy wytwarzane jest przez prostą przetwornicę pojemnościową, dla wygody w prosty sposób sterowaną przebiegiem LRC interfejsu I2S. W jednej z wersji urządzenia napięcie ujemne zapewnia zasilacz sieciowy. Jeśli chodzi o parametry szumowe, to albo popełniłem jakieś błędy, albo przetworniki z aliexpress są jakieś lewe. Podając na przetwornik same zera nie udało mi się uzyskać poziomu szumu niższego niż około -86dBV, zarówno dla wyjścia słuchawkowego przetwornika jak i liniowego. W jednym z egzemplarzy urządzenia zwarcie masy cyfrowej z analogową zaraz przy przetworniku zmniejszało nieco szum. W ostateczności zaakceptowałem istniejący stan rzeczy gdyż dynamika okazała się mimo wszystko zadowalająca. Jeśli ktoś przeczuwa, gdzie jest pies pogrzebany to proszę o informację. Interfejs użytkownika opiera się na wyświetlaczu OLED i 5 przyciskach. Przyciski skanowane są z użyciem tych samych linii, które obsługują wyświetlacz. W związku z powyższym na linii RESET wyświetlacza dodany został obwód RC, by podczas używania klawiatury nie występowały resety wyświetlacza.
Przy okazji resetów - okazało się, że chiński OLED 1,3" ze sterownikiem SSH1106, zastosowany w jednym z trzech urządzeń, bardzo nie lubi wolno narastającego napięcia zasilania. Transformator zasilacza ładujący kondensator filtra za prostownikiem nie zapewniał wystarczającej prędkości narastania napięcia i OLED czasami nie dawał się zainicjalizować. Walczyłem programowo poprzez machaniem RESETem i kilkukrotną inicjalizację ale kompletnie nic to nie dawało. Skończyło się na przekaźniku włączającym zasilanie z opóźnieniem, kiedy to naładuje się filtr zasilacza.
Oprogramowanie.
Napisane w C, stworzone w środowisku MPLAB X, z użyciem PLIB'a. Kompilator XC32 w darmowej wersji (optymalizacja -o1).
Trochę mocy obliczeniowej zabrała obsługa wyświetlacza oraz matryca stereo i limiter (zapobiegający zmianie znaku przy przesterowaniu). Gdyby to odchudzić to procek pociągnął by pewnie nawet 7 filtrów (14 filtrów mono). Finalnie nie sprawdziłem, czy kompilator kod dla procedur DSP wygenerował rzeczywiście jako "inline". Nie użyłem atrybutu "always_inline" a jedynie składni "inline [typ] [nazwa funkcji]" - być może tutaj jest jeszcze sporo taktów zegara do odzyskania. Kanały DMA wykorzystywane są praktycznie do wszystkiego - karta SD, wyświetlacz oraz oczywiście przetwornik A/D i D/A. Sporo zabawy kosztowało mnie takie zorganizowanie sposobu działania buforów dla przetwornika, by nie gubić żadnych sampli.
Filtry powstały poprzez modyfikację algorytmów znalezionych na stronie:
http://www.musicdsp.org/archive.php?classid=3
Użyty procesor jest stałoprzecinkowy w związku z tym potrzebne było skalowanie współczynników. Użyłem zmiennych całkowitych 32-bitowych i pewną trudność sprawiło takie skalowanie by filtry były stabilne i zarazem nie przesterowywały się. Poniżej 250Hz zmieniany jest typ filtru z biquad na state-variable ze względu na lepsze działanie tegoż filtru w dolnym paśmie (lepsza stabilność i efekty korekcji). Co do regulacji dobroci to wpisane w program, wyświetlane na wyświetlaczu, wartości szerokości pasma podane w oktawach mogą odbiegać od rzeczywistości.
Procedury inicjalizacji i obsługi niskopoziomowej karty SD są oparte na modyfikacjach istniejących w sieci przykładów (CC Dharmani, Chennai (India) www.dharmanitech.com)
Programowe I2C: eXtreme Electronics, India www.eXtremeElectronics.co.in
Część funkcji obsługi OLED pochodzi z chińskich przykładów dla SSD1306 (sterownik zgodny z SSH1106 lecz z inną ilością RAM 128x64pix zamiast 132x64pix).
Karta SD
Zapis odbywa się bez użycia systemu plików - sektor po sektorze. Na początku nośnika jest jedynie TOC z indeksami nagrań. Nagrań może być wiele, można je przewijać i przeskakiwać pomiędzy nimi. Kasować można tylko ostatnie lub całą kartę. Karta nie musi być szybka ale, ze względu na bardzo małą pamięć RAM procesora, nie może za długo "zamulać" w momencie zapisu. Karty SD mają to do siebie, że sektory zapisują się szybko lecz do pewnego momentu. Producenci co prawda nie kłamią z ogólną przepustowością, lecz karty mają nieprzyjemną cechę - co pewien czas karta każe czekać dłużej na zapis i wtedy łatwo o przepełnienie bufora zapisu. Właśnie z tego powodu, a nie z powodu szybkości procesora, musiałem ograniczyć parametry zapisu do 12 bit 32kHz. W innym przypadku bufor się przepełniał. Druga sprawa to sama karta - mimo ograniczenia szybkości strumienia danych zwykłe konsumenckie karty nie oferowały wystarczająco szybkiego zapisu grupy sektorów. Większy bufor rozwiązałby problem ale mając 32kB RAM i nie chcąc komplikować urządzenia sięgnąłem po inne środki. Kupiłem kartę przemysłową (prawdopodobnie SLC) 2GB. Koszt większy ale to jedyna karta, która umożliwiła pracę z tak małym buforem. Załączam przykładowe nagranie, plik źródłowy WAV oraz nagranie wykonane urządzeniem z wyjścia liniowego karty dźwiękowej. Nagranie zostało zgrane z karty do formatu WAV z użyciem komputera, poprzez odczyt karty w trybie RAW (z pominięciem systemu plików) oraz konwersję z powrotem do 16 bitów.
Złączam przykładowe nagranie oraz oryginał. Nagranie występuje też w wersji skonwertowanej do fs=44100Hz gdyż zauważyłem, że karty dźwiękowe potrafią fs=32000Hz wewnętrznie resamplować, wprowadzając dodatkowe zakłócenia.
wav:
Obsługa klawiatury [klawisz]...funkcja
[w lewo] menu poprzednie (pierwsza pozycja to ekran główny) / podczas odtwarzania klawisz ten przełącza na poprzednie nagranie
[w prawo] menu następne / podczas odtwarzania klawisz ten przełącza na następne nagranie
[góra] jeśli w menu: parametr +, jeśli ekran główny: start nagrywania, przytrzymanie podczas odtwarzania przewija w tył
[dół] jeśli w menu: parametr -, jeśli ekran główny: start odtwarzania, przytrzymanie podczas odtwarzania przewija w przód
[środkowy] stop - zatrzymuje odtwarzanie lub nagrywanie
Zdjęcia:
![[AUDIO] 5-cio pasmowy korektor parametryczny z rejestratorem stereo [AUDIO] 5-cio pasmowy korektor parametryczny z rejestratorem stereo](https://obrazki.elektroda.pl/9110647500_1529619845_thumb.jpeg)
![[AUDIO] 5-cio pasmowy korektor parametryczny z rejestratorem stereo [AUDIO] 5-cio pasmowy korektor parametryczny z rejestratorem stereo](https://obrazki.elektroda.pl/5094061700_1529619844_thumb.jpeg)
![[AUDIO] 5-cio pasmowy korektor parametryczny z rejestratorem stereo [AUDIO] 5-cio pasmowy korektor parametryczny z rejestratorem stereo](https://obrazki.elektroda.pl/2894383300_1529619844_thumb.jpeg)
![[AUDIO] 5-cio pasmowy korektor parametryczny z rejestratorem stereo [AUDIO] 5-cio pasmowy korektor parametryczny z rejestratorem stereo](https://obrazki.elektroda.pl/3824700900_1529619847_thumb.jpeg)
![[AUDIO] 5-cio pasmowy korektor parametryczny z rejestratorem stereo [AUDIO] 5-cio pasmowy korektor parametryczny z rejestratorem stereo](https://obrazki.elektroda.pl/5267361100_1529619847_thumb.jpeg)
Filmy (kamera telefonu ma na stałe włączony filtr środkowoprzepustowy, dodatkowo - gratis: ogromne zniekształcenia geometryczne obrazu).
Próbowałem filmy dodać na elektrodę ale oprogramowanie elektrody to jakiś żart! Nie mam czasu na dziesiątki prób konwersji filmów by forum łaskawie łyknęło plik. Sprawdziłem dwie opcje: konter mp4, audio aac, video H263 oraz kontener avi audio mp3 video H263. Rozdzielczość 1920x1080. Nie zadziałało..... za pierwszym razem stopklatka, za drugim 3 sekundy filmu.
Skończyło się na youtube:
film korekcja
film nagrywanie i odtwarzanie
Płytki (brak obwodu RC na linii RESET wyśw.):
Źródła i wsad:
Cool? Ranking DIY