(前言:这是我在 Stack Overflow 上的第一个与音频相关的问题,所以我会尽我所能说出这个问题。欢迎编辑。)
我正在创建一个允许用户循环播放音乐的应用程序。目前,我们的原型允许这些“循环标记”(实现为 UISlider)每秒捕捉,指定循环的开始和结束。显然,在循环音乐时,秒是一种非常粗略的处理方式,所以我想用节拍代替。
除了标记节拍让 UISlider 捕捉到之外,我不想做任何事情:
- 为我们的
loadMusic
方法提供一个音频文件。 - 通过库运行它以检测节拍或它们之间的间隔(也许)。
- 将该值输入到滑块的
setNumberOfTickMarks:
方法中。 - 利润!
不幸的是,我通过 Google 和 SO 遇到的大多数结果都产生了更高级的节拍检测库,例如混音器将使用的那些。就我而言,矫枉过正。
这是 CoreMedia、AVFoundation 或 AudioToolbox 可以处理的吗?如果没有,是否有其他库可以处理这个问题?我对 Apple 文档的研究只产生了相关的结果……对于 MIDI 文件。但苹果自己的软件也有类似的功能,比如iMovie 的 snap-to-beats 功能。
在这一点上,任何指导、代码或摘要都会非常有帮助。
编辑:在做了更多的挖掘之后,我正在寻找的正确术语似乎是onset detection。