低音オーディオを使用してオーディオのスペクトルをプロットするアプリを実装しようとしています ( http://www.un4seen.com/ )。私の理解では、次のことを行う必要があります。
ストリームから FFT データを取得する float[] buffer = new float[256]; Bass.BASS_ChannelGetData(handle, buffer, (int)(BASS_DATA_FFT_COMPLEX|BASS_DATA_FFT_NOWINDOW));
各fftについて、その大きさを計算します
ウィンドウ関数を FFT に適用します (ハニングまたはハミングで行います)。
次に、美しいスペクトル分析を描きます
ただし、問題は次のとおりです。
- BASS_DATA_FFT_COMPLEX BassData に到達できないようです。ドキュメントhttp://www.bass.radio42.com/help/html/a13cfef0-1056-bb94-81c4-a4fdf21bd463.htmで利用できるはずですが、BassData というエラーが発生するため使用できません。そのような列挙型は含まれません
- さらに、自分のしていることが正しいかどうか疑問に思っています。スペクトルをプロットするには、単純に fft の大きさをプロットするか、その fft の周波数に対して fft の大きさをプロットする必要がありますか? この場合、その fft に対応する周波数を取得するにはどうすればよいでしょうか。任意の言語 (C/C++、C#、VB、Java など) から切り取られたコードは気にしません。
注: これが役立つかどうかはわかりませんが、これは私が使用しているものです: Microsoft Chart コントロールを使用したプロット。http://www.bass.radio42.com/ による BASS.NET API を使用した C#