我正在尝试在iOS应用程序中实现beatdetection。我发现了一个名为SoundTouch的相当简单的框架,并尝试根据
实现这一点iOS SoundTouch framework BPM Detection example
不幸的是,以下所有努力似乎都无法正常工作,而且我目前处于死锁状态,因此我发布了Stackoverflow。
我采取了以下步骤:
重构
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。
谢谢大家!
答案 0 :(得分:4)
您需要执行以下操作才能编译项目:
将#import <SoundTouch/BPMDetect.h>
添加到您的ViewController.mm
;
将AVFoundation框架添加到您的目标(见图片);
设置语言设置如图所示(具体来说,使用GNU C ++ libstdc ++)。
我没有尝试过运行程序,但它至少构建了。