我想分析我的默认播放设备并检测节拍。我一直在使用 BASS WASAPI 来获取所选设备的 FFT 数据:
int ret = BassWasapi.BASS_WASAPI_GetData(_fft, (int)BASSData.BASS_DATA_FFT2048);
现在我正在使用数据生成光谱数据并将其显示给用户。此外,我想使用 BASS 的 BPMCounter 类检测节拍。但是,据我所知,该BPMCounter.ProcessAudio()
函数需要一个流(我没有通过 WASAPI 获得)才能工作。有没有办法可以将 BPMCounter 与 WASAPI 一起使用?如果有人能指出我正确的方向,那就太好了。谢谢
编辑:尝试将数据转换为流,但没有成功:
int ret = BassWasapi.BASS_WASAPI_GetData(_fft, (int)BASSData.BASS_DATA_FFT2048); //get channel fft data
var chan = Bass.BASS_StreamCreate(0, 44100, BASSFlag.BASS_DEFAULT, BASSStreamProc.STREAMPROC_PUSH);
Bass.BASS_ChannelPlay(chan, false);
Bass.BASS_StreamPutData(chan, _fft, _fft.Length);
bool beat = _count.ProcessAudio(chan, true);
Debug.Write(beat);
beat
总是False
,但是我可以在频谱上看到 FFT 数据的捕获是正确的。