gpt4 book ai didi

cocoa - 使用 AVFoundation/CoreMedia/其他框架检测节拍/起始

转载 作者:行者123 更新时间:2023-12-03 16:03:50 34 4
gpt4 key购买 nike

(前言:这是我在 Stack Overflow 上提出的第一个与音频相关的问题,因此我会尽力用最好的措辞来表达。欢迎编辑。)

我正在创建一个允许用户循环播放音乐的应用程序。目前,我们的原型(prototype)允许这些“循环标记”(作为 UISlider 实现)每秒捕捉一次,指定循环的开始和结束。显然,当循环音乐时,秒是一种非常粗暴的处理方式,所以我想使用节拍来代替。

除了标记 UISlider 捕捉到的节拍之外,我不想做任何其他事情:

  • 向我们的 loadMusic 方法提供音频文件。
  • 通过库运行它来检测节拍或它们之间的间隔(也许)。
  • 将该值输入到 slider 的 setNumberOfTickMarks: 方法中。
  • 利润!

不幸的是,我通过 Google 和 SO 得到的大部分结果都产生了更高级的节拍检测库,例如混音器将使用的库。对我来说太过分了。

这是 CoreMedia、AVFoundation 或 AudioToolbox 可以处理的吗?如果没有,是否有其他库可以处理这个问题?我对 Apple 文档的研究仅产生了 MIDI 文件的相关结果。但苹果自家的软件就有这样的功能,比如iMovie's snap-to-beats functionality .

此时任何指导、代码或摘要都会非常有帮助。

编辑:经过更多的挖掘后,我正在寻找的正确术语似乎是起始检测

最佳答案

起始点检测算法有多种形式,从查看原始音乐信号到使用频域技术。

如果您想要一种快速、简单的方法来确定节拍的位置:

  1. 将音乐信号切成小段(20-50ms block )

  2. 计算信号的平方和平均值:Sum(Xn ^2)/N(其中 N 是每 20 的样本数-50ms)

如果您想要更复杂的技术,请查看:

https://adamhess.github.io/Onset_Detection_Nov302011.pdf

或者对其进行硬核处理:

https://scholar.google.com/citations?view_op=view_citation&hl=en&user=PMHXcoAAAAAJ&citation_for_view=PMHXcoAAAAAJ:uJ-U7cs_P_0C

关于cocoa - 使用 AVFoundation/CoreMedia/其他框架检测节拍/起始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9355524/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com