Poszukuję prostego (pseudo) kodu odwracającego spektrum próbkowanego sygnału audio. Idealnie C++Odwrócenie spektrum próbkowanego sygnału audio
Kod powinien obsługiwać różne częstotliwości próbkowania (16/32/48KHz).
Poszukuję prostego (pseudo) kodu odwracającego spektrum próbkowanego sygnału audio. Idealnie C++Odwrócenie spektrum próbkowanego sygnału audio
Kod powinien obsługiwać różne częstotliwości próbkowania (16/32/48KHz).
Miksowanie sygnału przez Fs/2
zamieni wysokie częstotliwości i niskie częstotliwości - pomyśl o obróceniu spektrum wokół koła jednostki o pół obrotu. Ten obrót można osiągnąć, mnożąc co drugą próbkę przez -1.
Mieszanie przez Fs/2
jest równoznaczne z mieszaniem przez exp(j*pi*n)
. Jeśli x
jest y
wejście i wyjście,
y[n] = x[n] * exp(j*pi*n) = x[n] * [cos(pi*n) + j*sin(pi*n)]
Upraszcza to łatwo, ponieważ sin(pi*n)
oznacza 0, i cos(pi*n)
jest zmienny 1 -1.
Tak prosty ... Niewiarygodny –
Ta sztuczka często pojawia się w DSP. Na przykład, jeśli chcesz zaprojektować filtr górnoprzepustowy, zwykle łatwiej jest zaprojektować filtr dolnoprzepustowy z pożądaną wartością odcięcia, a następnie obrócić go wokół okręgu jednostki, aby górny przebiegał. – mtrw
Aby uzyskać coś, co ma ten sam typ struktury czasowej jak oryginał, trzeba
Ponieważ jest to sygnał dźwiękowy, nie ma znaczenia, że wszystkie fazy zostaną zawiedione. Zasadniczo nie można ich usłyszeć. Z wyjątkiem części odwracającej, ARSS tworzy spektrogram i wykonuje resyntezę dźwięku.
W przeciwnym razie wystarczy wziąć FFT, odwrócić amplitudy komponentów i przyjąć odwrotną FFT. Będzie to jednak zasadniczo bezsensowne, ponieważ całkowicie pobudzi strukturę czasową dźwięku, a także strukturę częstotliwości.
Dziękuję, ARSS używa banku filtrów częstotliwości, więc jedyne, co mogę zrobić, to odwrócić beczki częstotliwości.Zastanawiam się, czy istnieją pewne matematyczne manipulacje, które odwracają częstotliwości "płynnie" (bez dzielenia ich na przedziały). –
Można używać falek, które nie są jawnie binned, ale w twoim przypadku, które nie ma znaczenia. Dźwięki o niskiej częstotliwości zmieniają się znacznie wolniej niż dźwięki o wysokiej częstotliwości, tak więc i tak zmiana będzie łagodzić. –
nie ma sensu używać cosinusów. dla sygnału cyfrowego nie jest konieczne, aby uruchomić prawdziwy ringmod tutaj, w nyquist konsola jest kwadrat i tak.
, więc wystarczy pomnożyć co drugą próbkę przez * -1 i gotowe.
bez opóźnień, bez aliasingu, bez niczego.
Tak brzmi przyjęta odpowiedź. –
Co to jest "inwersja spektrum"? Zabawne jest to, że Google jako pierwsze trafienie ujawniło twoje pytanie. Chcesz odwrotności fazy i amplitudy dla każdej częstotliwości? A może po prostu potrzebujesz MFF? Czy coś zupełnie innego? – zerm
Przepraszamy za nieprofesjonalne słownictwo: chcę, aby niskie częstotliwości stały się wysokimi i na odwrót (przesunięcie DC stanie się sinusem z połową częstotliwości próbkowania). –
Teraz jestem bardzo ciekawa, jak to brzmi ... – PeterAllenWebb