(前言:这是我的第一个关于堆栈溢出的音频相关问题,所以我会尽力将其尽可能最好地表达出来,编辑欢迎。 )使用AVFoundation/CoreMedia /其他框架来检测节拍/发音
我正在创建一个允许用户循环播放音乐的应用程序。目前我们的原型允许这些“循环标记”(实现为UISliders)每秒捕捉一次,指定循环的开始和结束。显然,当循环播放音乐时,秒是处理这种情况的一种非常粗糙的方式,所以我想用beat来代替。
我不想做的比标记以外的任何击败了UISliders捕捉到:
- 订阅我们的
loadMusic
方法的音频文件。 - 通过库运行它来检测节拍或它们之间的时间间隔(也许)。
- 将该值输入到滑块的
setNumberOfTickMarks:
方法中。 - 利润!
不幸的是,我通过Google和SO运行的大部分结果都产生了更多高级节拍检测库,如混音器将使用的那些。夸大我的情况。
这是CoreMedia,AVFoundation或AudioToolbox可以处理的事情吗?如果没有,是否还有其他库可以处理这个问题?我对苹果文档的研究仅仅为MIDI文件产生了相关的结果。但是苹果自己的软件具有这样的功能,例如iMovie's snap-to-beats functionality。
在这一点上,任何指导,代码或摘要都是非常有用的。
编辑:做了一些更四处之后,它似乎是正确的术语为我正在寻找的是开始检测。
那么,你需要获得纯PCM数据。选择音频库提供的内容并将现有的algortihms应用于数据 – 2012-02-20 11:11:25
看到这个问题?它似乎有一些相当不错的解决方案的链接。 http://stackoverflow.com/questions/657073/how-to-detect-bpm-of-the-song-by-programming – 2012-03-03 22:55:39