首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >低音WASAPI BPMCounter

低音WASAPI BPMCounter
EN

Stack Overflow用户
提问于 2017-01-20 09:36:27
回答 1查看 1.2K关注 0票数 0

我想分析我的默认播放设备和检测节拍。我一直在使用低音WASAPI来获取所选设备的FFT数据:

代码语言:javascript
复制
int ret = BassWasapi.BASS_WASAPI_GetData(_fft, (int)BASSData.BASS_DATA_FFT2048);

现在,我使用这些数据生成频谱数据,并将其显示给用户。此外,我想检测的Beats使用BPMCounter类从低音。但是,据我所知,为了工作,BPMCounter.ProcessAudio()函数需要一个流(我没有使用WASAPI)。有什么方法可以将BPMCounter与WASAPI结合使用吗?如果有人能给我指明正确的方向,那就太好了。谢谢

编辑:尝试将数据转换为流,但没有成功:

代码语言:javascript
复制
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数据是一致的。

EN

回答 1

Stack Overflow用户

发布于 2017-01-29 14:23:52

几个小时前,我刚刚开始使用这个库,我仍然在学习这些示例。所以我的答案可能不是你想要的。对于我的项目,我还想将WASAPI转换成流,并将其用于显示频谱。我所做的就是在StreamPush初始化之后创建一个BASS_WASAPI。

要插入您的WASAPI,请使用此调用和此委托:

代码语言:javascript
复制
private InitWasapi()
{
  WASAPIPROC _process = new WASAPIPROC(Process); // Delegate
  bool res = BassWasapi.BASS_WASAPI_Init(_YourDeviceNumber, 0, 0, BASSWASAPIInit.BASS_WASAPI_BUFFER, 1f, 0f, _process, IntPtr.Zero);
  if (!res)
  {
    // Do error checking
  }      

  // This is the part you are looking for (maybe!)
  // Use these flags because Wasapi needs 32-bit sample data
  var info = BassWasapi.BASS_WASAPI_GetInfo();
  _stream = Bass.BASS_StreamCreatePush(info.freq, info.chans, BASSFlag.BASS_STREAM_DECODE | BASSFlag.BASS_SAMPLE_FLOAT, IntPtr.Zero);

  BassWasapi.BASS_WASAPI_Start();
}

private int Process(IntPtr buffer, int length, IntPtr user)
{
  Bass.BASS_StreamPutData(_stream, buffer, length);
  return length;
}

--请注意:这很有效,但我还在做实验。例如,当我从音乐文件本身创建流时,我没有得到相同的频谱输出。有一些(小的)差别。也许是因为我在Winamp中使用自定义的情商来播放相同的.mp3。所以,如果有人对这个问题有更多的了解,我也想听听!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41760288

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档