如何使用AS3 SoundMixer.computeSpectrum找出歌曲的模式(节奏)?

Nes*_*bos 5 flash audio actionscript-3

现在,我正在努力想出一个歌曲的模式(节奏)来直观地表现它们.因此,例如,歌曲(鼓)的主要节拍将是红色正方形,次要节拍(低音)蓝色圆圈等等.因此,每次它们各自的节拍声音都会出现.

我知道一首歌可能有很多模式(节拍),这就是我遇到问题的原因.现在我正试图只获得主要节拍.我试图用这种方式解决它:

我使用的是SoundMixer.computeSpectrum得到一个ByteArray由强度/频率规格组成.这ByteArray是每1/10秒进给一次.我试图在词典中对类似的强度/频率数据进行分组以找出歌曲的模式.

一个更好地解释它的数字.

我通过以下方式获得模式:

  • 家庭(每个1/10的整个int/freq规范):然而,让一个家庭在一首歌中重复是非常罕见的.实际上从未发生过.
  • 家庭成员(个人int/freq id):家庭成员通常是重复的,但是一个人,他们没用.
  • 家庭成员双胞胎兄弟(总是听起来在一起的家庭成员):这是有效的,但我有很多孪生兄弟,所以很难分析它们并找出哪些是主要的节拍.

你知道是否有更好的方法来使用AS3 SoundMixer.computeSpectrum或任何其他对象/框架/ api 来计算歌曲的模式(节奏)?

PD:我没有音乐理论高级致谢.

小智 2

Julapy 发布了一个演示和代码,可以检测到一些明显的节拍。Julapy 聚合来自computeSpectrum 的能量。Julapy 在宽频带上聚合,而不是同时出现的窄频带(家庭成员):http://www.julapy.com/blog/2007/12/30/beat-detection-in-flash/

老实说,我从未编写过下面的算法,但文章“节拍检测算法”的第 2 页建议通过估计相同频段的周期来估计每分钟的节拍。听起来你可以增强 Julapy 的方法: http://archive.gamedev.net/archive/reference/programming/features/beatdetection/page2.html

顺便说一句,HYPE 框架中的声音分析器演示和代码还以新颖的方式可视化了computeSpectrum。虽然没有解决相同的问题,但与computeSpectrum相关的代码可能值得一读: http ://www.hypeframework.org/02_examples/soundanalyzer/content/01_soundanalyzer/