Witam!
Chcialbym Was poprosic o wyjasnienie mi paru rzeczy odnosnie sygnalow audio. Nie bardzo mam kogo zapytac, a nie wszystko jest jeszcze dla mnie jasne. Bede wdzieczny za odpowiedz.
Problem 1.
Funkcja BASS_ChanellGetData ma taki opis:
BASS_DATA_FFT512 512 sample FFT (returns 256 floating-point values) BASS_DATA_FFT1024 1024 sample FFT (returns 512 floating-point values)
BASS_DATA_FFT2048 2048 sample FFT (returns 1024 floating-point values)
BASS_DATA_FFT4096 4096 sample FFT (returns 2048 floating-point values)
Rozumiem to tak, ze maksymalna liczba par: czestotliwosc-amplituda, jaka sie da wycisnac z BASSa to 2048. Ale jak to sie ma do rodzaju sygnalu (mono/stereo) - czy jest to jakos od tego zalezne? Przykladowo dla BASS_DATA_FFT4096 otrzymam 2048 liczb - czy to znaczy, ze pierwsze 1024 jest dla kanalu Lewego, a drugie 1024 dla Prawego (albo raz lewy a raz prawy)? A moze FFT w BASSie nie rozroznia kanalow? Jak to jest?
Albo inaczej - co tak wlasciwie otrzymuje sie uzywajac BASS_DATA_FFT4096 i czy zalezy to od rodzaju sygnalu (mono/stereo) albo od sposobu inicjacji biblioteki BASS, albo też od parametrow nagranego dzwieku (w przypadku pliku)?
Problem 2.
Czy dobrze rozumiem: jezeli czestotliwosc probkowania dzwieku wynosi 44100 Hz i uzywam funkcji BASS_DATA_FFT4096 to interwal czestotliwosciowy wynosi:
dF = 44100/(2*2048) czyli 10,7 Hz
czy moze inaczej?
I jak sie to ma do problemu 1. - bo jezeli jako zwrot z BASS_DATA_FFT4096 otrzymam kanal L i R to interwal bedzie dwa razy dluzszy (21,4 Hz)?
*Problem 3. *
Rozumiem, ze interwal czestotliwosciowy zalezy od czestotliwosci probkowania sygnalu, a maksymalny rozmiar tablicy FFT jest staly (2048). Czyli, ze jak mam nagranie w czestotliwosci np 96 kHz to interwal bedzie duzo wiekszy (23,44 albo 46,88) niz w przypadku probkowania 44100 (10,7 albo 21,4 - zaleznie od problemu 2)?
Problem 4.
Jaka jest rozdzielczosc czasowa dla poszczegolnych ustawien BASS_DATA_FFT(IlesTam) - obliczenie wiekszej liczby punktow musi przeciez dluzej trwac. Slyszalem gdzies, ze dla BASS_DATA_FFT2048 czas obliczen wynosi 43 ms - czy tak jest w BASSie?
Problem 5.
Dlaczego funkcja BASS_DATA_FFT4096 daje dwa razy mniejsza liczbe punktow (2048)? W helpie BASSa cos jest o tym, ale nie jestem mocny z angielskiego.
Problem 6.
Powiedzmy, ze w wyniku dzialania BASS_DATA_FFT(IlesTam) otrzymam tablice wartosci.
Jakiej czestotliwosci dotyczy pierwszy punkt tablicy (ewentualnie jak to sie oblicza), a jakiej ostatni? I czy kazdy punkt dotyczy jednej konkretnej czestotliwosci, czy tez okreslonego przedzialu? Jezeli przedzialu, to jakiego i jak jest przyjmowana srednia wartosc tego przedzialu?
Problem 7.
Jak wyskalowac tablice otrzymana z BASS_DATA_FFT(IlesTam), aby pokazywane wartosci (na osi Y) byly w dB?
Problem 8.
Jedna z funkcji jakie chce, aby moj program posiadal jest okreslenie czestotliwosci sygnalu otrzymywanego z mikrofonu (a wlasciwie pewnego maksimum tego sygnalu). Czy robil ktos kiedys cos takiego i czy sensowne byloby zastosowanie interpolacji albo aproksymacji do zwiekszenia dokladnosci metody? Bo jezeli interwal czestotliwosciowy jest rzedu kilkudziesieciu Hz, to dla niskich czestotliwosci bedzie to obarczone sporym bledem.
Problem 9.
Czy mozna jakosc zwiekszyc dokladnosc FFT w BASSie (chodzi o poprawienie dokladnosci z problemu 8)?
Problem 10
W BASSie sa dwa rodzaje wizualizacji: spektrum i oscyloskop. Co wlasciwie przedstawia wykres na oscyloskopie?
Mam nadzieje, ze nie zameczylem Was na moimi pytaniami, ale znajomosc tych spraw bardzo by mi pomogla w moich poczynanich. Bede bardzo wdzieczny za wszelkie informacje.
Pozdrawiam,
Wojtek.