【发布时间】:2013-12-31 01:58:50
【问题描述】:
我最近开始尝试创建一个移动应用程序 (iOS/Android),它会自动匹配 (http://en.wikipedia.org/wiki/Beatmatching) 两首歌曲。
我知道这是存在的,并且已经有其他人取得了一些成功,但我遇到了与球员准确性有关的问题。
具体来说,我遇到了“节拍”不对齐的“同步”问题。迄今为止使用的各种方法是:
提前计算 BPM,识别“节拍”(使用 sonicapi.com 之类的东西),并尝试适当排列,并在调整播放速率(节奏调整)的情况下开始混音
利用一堆元数据来触发特定的启动和停止
什么不起作用:
- 利用 echonest 的 API(它在服务器上击败了比赛,我们想在客户端上进行)
- 类似 pydub 的东西(不实时执行)
今天谁在使用这个算法:
iwebdj
拖拉机
有人对如何解决这个问题有任何建议吗?我见过很多人这样做,但在移动设备上实时进行似乎是个问题。
【问题讨论】:
-
@svenoaks:我愿意;有些人玩糖果迷恋,有些人为了好玩而匹配节拍:)
-
你不能只使用一个共同的位置。如果它们的速度相同,则文件应该在相同的时间和地点读取,所以虽然它们可能不是第一次,但在同一时间精确启动,不会有任何可检测的延迟。
-
@svenoaks:我想在手机上以特定方式混合音乐。只是我正在做的一个很酷的小项目,没有什么疯狂的。
-
@BobbyDigital:你会这么想,但由于某种原因,延迟开始了,它“听起来”并不好。更重要的是,进来的音乐总是在变化,这意味着这是一个可以接受任何歌曲的动态算法。
标签: java android ios objective-c