我正在尝试在 iOS 应用程序中实现节拍检测。我找到了一个相当简单的框架,叫做 SoundTouch 并尝试根据
不幸的是,我的以下努力似乎都没有奏效,目前处于僵局状态,因此我在 Stackoverflow 上发帖。
我采取了以下步骤:
- 创建基于单视图的项目
- 导入了
- 将 mainViewController.m 重命名为 ViewController.mm 以使其与 c++ 兼容
- 指示 ViewController 的 UIViewController 类符合 AVFoundationPlayerDelegate 协议。
- 复制/粘贴解决方案@MrHappyAsthma 发布到他的问题
重构
player =[[AVAudioPlayer alloc] initWithData:data error:NULL];
到
AVAudioPlayer *player =[[AVAudioPlayer alloc] initWithData:data error:NULL];
现在编译器抱怨:
soundtouch::SAMPLETYPE sampleBuffer[len]; (use of undeclared variable soundtouch)
soundtouch::BPMDetect BPM(player.numberOfChannels, [[player.settings valueForKey:@"AVSampleRateKey"] longValue]); (use of undeclared variable soundtouch)
BPM.inputSamples(sampleBuffer, len/player.numberOfChannels); (use of undeclared variable BPM)
NSLog(@"Beats Per Minute = %f", BPM.getBpm()); (use of undeclared variable BPM)
我认为我对 C++ 的了解不应该是这样,并且应该声明/初始化对象 soundtouch 和 BPM。
谢谢各位!