- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试创建一个类似吉他英雄的游戏(类似于 this )并且我希望能够分析用户提供的音频文件并自动创建关卡,但我不确定如何这样做。
我想也许我应该使用 BPM 检测算法并在节拍上放置一个箭头,在一些循环模式上放置一个轨道,但我不知道如何实现这些。
此外,我正在使用 NAudio 的 BlockAlignReductionStream,它有一个读取字节 [] 数据的读取方法,但是当我读取一个 2 声道音频文件时会发生什么?它从第一个 channel 读取 1 个字节,从第二个 channel 读取 1 个字节吗? (因为它说的是 16 位 PCM)24 位和 32 位 float 是否也会发生同样的情况?
最佳答案
节拍检测(或更具体地说是 BPM 检测)
使用梳状滤波器的节拍检测算法概述:
看起来像他们:
您必须在此处实现许多算法。不过,梳状滤波器据说速度很慢。 The wiki article没有向我指出其他具体方法。
编辑:这篇文章有关于节拍检测的流统计方法的信息。这听起来是个好主意:http://www.flipcode.com/misc/BeatDetectionAlgorithms.pdf - 我打赌它们实时运行得更好,但准确性较低。
顺便说一句,我只是浏览并提取了关键字。我只玩过 FFT、整流和衰减滤波器(低通滤波器)。其余的我一无所知,但你有链接。
这将为您提供歌曲的 BPM,但不会为您生成箭头。
关卡生成
至于“在节拍上放置箭头,在某些循环模式上放置轨道”,要获得良好的结果,实现起来会有点棘手。
您可以采用更积极的内容提取方法,并尝试从歌曲中提取音符。
您还需要对这部分使用节拍检测。这可能类似于上面的 BPM 检测,但在不同的范围内,对乐器范围使用带通滤波器。您还可以换出或删除算法的某些部分,并且必须对整首歌曲进行采样,因为您没有检测到全局 BPM。您还需要某种 pitch detection .
我认为这种方法会很困惑,并且会保证您需要手动删除每首歌曲的结果。如果您对此没有意见,并且只是想避免最初的手写转录工作,那么这可能会很有效。
您也可以尝试采用内容生成方法。
大多数程序性内容生成都是通过反复试验的方式完成的,人们发布或申请专利的算法并不完全糟糕。通常无法对内容生成算法进行真正的定性分析,因为它们会产生美感。因此,您只需要选择那些似乎能提供令人满意的样本结果的样本并进行尝试即可。
大多数算法都围绕视觉内容生成,包括地形、建筑、人形、植物等。有一些关于音频内容生成的研究,Generative Music等。您的要求并不完全符合其中任何一项。
我认为程序“舞步”(如果存在这样的东西 - 我只找到动画技术)或生成音乐的算法将是最接近的匹配,如果由您在歌曲中检测到的节奏驱动的话。
如果你想深入了解合成生成方法,请准备好了解许多完全不同的算法,这些算法通常只是暗示,而不是详细解释。
例如:
关于c# - 分析音频以自动创建吉他英雄关卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8200010/
我正在关注 Angular 的 Tour of Heroes Tutorial我现在正在尝试将 observables 集成到我的项目中。将我的 hero.service.ts 文件更改为如下所示后
我正在关注 Angular 的 Tour of Heroes Tutorial我现在正在尝试将 observables 集成到我的项目中。将我的 hero.service.ts 文件更改为如下所示后
新一期王者荣耀登录礼包 免费领取三天皮肤+英雄 这是最新一期的活动 登录游戏即可获得共四次抽奖机会 有一定概率可中永久皮肤 经常玩游戏的可以领两天玩玩 活动地址:http://t.cn/A
我正在尝试制作一个网站,但我遇到了一个问题。我有一张图片,我需要它始终填满整个屏幕。就像他们在这个网站上所做的那样:http://mollyandmepecans.com这是我的网站:https://
我试图让 slider 上的图像在容器内全宽显示。我试过分离英雄文本 div,但它仍然不起作用。我多年来一直坚持这个,并意识到它可能是愚蠢的,所以堆栈溢出是我最后的选择。请参阅下面的代码和显示方式的图
我看过 Heroku 的 Taps 项目 ( http://devcenter.heroku.com/articles/taps )但是外键有很大的限制,所以我不太愿意使用它。 我想做的就是安全地获取
我正在运行 Angular 教程,但我无法理解某一部分实际发生的情况。我通过搜索找到了一些例子,但没有具体回答这个问题。这是代码: getHeroes (): Observable { retur
我正在运行 Angular 教程,但我无法理解某一部分实际发生的情况。我通过搜索找到了一些例子,但没有具体回答这个问题。这是代码: getHeroes (): Observable { retur
一位客户表示,他们非常喜欢 Google Play 处理他们的英雄 slider 的方式。我试过在 jQueryCycle 中复制效果,但无济于事。谁能阐明实现相同效果的最佳方法? 对于那些不熟悉的人
我正在做 Angular2 英雄之旅项目 https://angular.io/docs/ts/latest/tutorial/toh-pt2.html. {{hero.name}} 这里我可以使用下
我运行了 google page speed,它说我应该 Gzip 我的 javascript 文件? 我如何 gzip 我的 javascript 文件?如果有问题,我的网站托管在 heroku 上
前几天我将我的 Rails 4.1.7 应用程序发布到 Heroku 中,CSS 似乎工作正常。 但 javascript 文件部分响应。我有一个警报(“在 Charts-other.js 中”);
我不太熟悉 jQuery 和/或 JavaScript,但我正在尝试使用 Hero Slider对于我正在构建的网站。我几乎修改了代码来执行我想要的操作,但由于某种原因,第一张幻灯片似乎无法加载。奇怪
我正在学习着名的 Angular 教程,英雄之旅,但我正在努力迈出一步。 关于 sixth course, HTTP ,我们正在使用一种工具来模拟对 API 的 API 调用。 我想我遵循了所有步骤,
因此,我通常不会在将应用程序部署到 heroku 时遇到任何问题,但是,在这种特定情况下,我会遇到预编译失败错误... 这里的这一行对我来说很突出: remote: NoMethodEr
好吧,只是对这个发疯。 我在之前的 mx.datagrid 中使用了 rowcount 现在,使用“s:datagrid”,我尝试使用 requesteMaxRowCount 和 RequestMin
环境:Angular 5+ 来源:https://angular.io/tutorial 在 heroes.component.ts 类中有一个带冒号的赋值,如下所示: export class He
flask 应用程序可以在本地主机上正常登录和注册。但是当我把它推到 heroku 时,这就成了一个问题。它显示了上述错误。这是 app.py 代码 from flask import Flask,
我是一名优秀的程序员,十分优秀!