【CRIWARE】BEATWIZ功能解说故事 第一话:打节拍的秘密

发表于2020-12-18
评论1 9.2k浏览
8Dvt3f7qdG6WVlUZfhWO.gif

 

大家好,我是CRIWARE的增野。

“想听着己喜欢的音乐,来享受音游”

由我的这个想法而诞生的BEATWIZ,到今年为止已经开发了15年了。

 

BEATWIZ可以解析现存的乐曲,可以高速且高精度的解析乐曲的速度,节拍数,节拍开始时间等等信息,是一款特化了乐曲解析的引擎。

在这15年的乐曲解析技术的进步里,还添加了比如乐曲的激烈程度的指标,特定的打击乐器的追踪,乐句的推定,清唱声的抽出,主旋律的乐谱的生成,和音解析等等各式各样的功能。

 

我会分为3话,尽量的给大家讲解BEATWIZ所拥有的其他地方没有的丰富的功能。

 

不管你对音游制作有或者是没有兴趣,和声音素材制作,声音设计,程序,策划相关的大家都可以来看一看,或许能够对你们有所启发。

DanceGameSS1-800x445

▲通过BEATWIZ的乐曲解析功能,只需输入一般的曲目,就可以自动生成舞蹈动作分类和谱面按键信息的DEMO。

 

打节拍的秘密

 

为什么人在听音乐的时候,会自然的想要动一动身子,又或是想要打节拍呢?

那是因为人和音乐同步的进行动作的时候,能感受到“快乐”,主动的享受音乐是人类的一种本能的行为。

 

那么,人是对音乐的什么进行了反应呢?其实是对音乐的速度(节拍)做出了反应。音乐传过来了之后,根据音乐的速度同步,自然的想拍手这个行为正是“人类能够正确的认识到音乐的速度并对其做出反应”的证据。

 

根据自己喜欢的音乐的节奏,按下按键,或者跳舞的游戏,也就是说“可以用任意的音乐进行音游”的设计和开发,就必须要进行一个“可以自动且高精度的解析任意的音乐的节拍速度”的功能的开发。

 

BEATWIZ的开发所经历的15年,则正是一个关于如何解开“打节拍的秘密”的冒险故事。

 

什么是音乐的速度(即节拍数,BPM)

大家谁都在小学或者中学的音乐课里看到过“乐谱”。

在乐谱的一开始的地方有可能会写着“Andante”。

SpeedAndante

或者也有可能写着“♩=120”。

SpeedBPM120

这个就是表示乐谱速度的记号。

顺带一提“Andante”指的差不多是♩=72。

 

在BEATWIZ里,使用“BPM”来表示来表示音乐的速度。

BPM是“Beat Per Minute”的缩写,最早是用来表示心脏跳动速率的医学用语。

BEATWIZ使用“在1分钟里演奏了多少次4分音符”来定义BPM值。

也就是说上面的“♩=120”和“120BPM”是同一个意思。

 

推定音乐的速度(BPM值)的魔法

刚开始打算开发BEATWIZ的15年前的那时候,从一般的乐曲中推测BPM的研究工作基本没有人做,论文也很少。基本上就是“从零开始制作从一般的乐曲中如何推测BPM值的魔法书”的状态这样说也不为过。

 

当时的BPM推定主要还是实际听着音乐,然后跟着节拍按按钮的“按键法”,但是这种方法不可能自动化。

 

找了无数的论文,试过了许多方法,在经历了无数次的失败之后,最终得出了通过使用以下暂定的方法来推定BPM,可以得到最高精度的结果。

 

1. 打击乐器的声音(节奏),可以支配BPM的推定值

2. 这个节奏是一个频率非常低的超低频音波

3. 为了观测超低频音波,准备一个能够装入10秒长度的波形的巨大的窗口(VLW(Very Large Window)),然后传入音乐波形进行解析。

 

幸运的是,通过上述方法推测BPM的话,还能得到以下

1. 节拍开始时刻(第一小节的第一拍是什么时候)

2. 节拍数(是3节拍还是4节拍)

的信息也可以高精度的推测出来了。

 

刚开始用这个方法进行尝试的时候,处理非常的耗时,解析时间甚至超过了原乐曲的时间。

A4DSPEngineSS2008

▲现在来看非常珍贵的10年以前的BPM解析画面。由于并没有实现高速化,解析需要花上和原曲一样的时间,而且经常检出假的BPM值,所以当时只能和“按键法”一起使用。

 

在这之后的高速化和优化的结果,可以实现当初的2000倍以上的高速化,1分钟的乐曲可以在0.1秒以内解析完毕。也就是说,一般的音乐的话,都可以在1秒钟之内解析完毕。

BEATWIZ-440-Batch

▲这是最新的BEATWIZ的用乐曲文件为单位的解析结果。
第一个音轨(ID:1)这个大约7分半的比较长的曲子,用了大约0.43秒解析完成。可以看到BPM值为122.00,第一小节的第一拍的时间为0.1453秒,且这是一个4节拍的曲子。

 

RIA-Results-122bpm

▲并且还会表示解析结果的详细。BPM候补的前7名会表示出来,而且,各个BPM候补的正确率(Reliability%)也会表示出来。

 

高速化的结果,不光是可以解析乐曲文件,还可以实现串流的解析了。比如你现在听的乐曲通过麦克风输入之后,马上就可以获取这个曲子的BPM和节拍开始时刻,就像魔法一样。

 

RIAX-Trend-132bpm

▲132BPM的曲子通过麦克风输入之后一边串流一边解析的画面。可以干净的检测出BPM值和节拍开头。

 

BEATWIZ的高精度以及处理的轻量,使得可以接入不仅仅是游戏机,手机,电器等等硬件,甚至照明道具,玩具,乐器等等,实现广泛的应用。

 

下回预告

这次为大家解开了BEATWIZ打节拍的秘密。

一旦了解了这些秘密之后,就可以获取乐曲中富含的大量的信息了。

在下一回,我会介绍曲子的激烈程度以及乐句的解析,并且介绍应用了这些技术的音游谱面自动生成的概要。

尽请期待。

 

BEATWIZ的产品页面

  • 允许他人重新传播作品,但他人重新传播时必须在所使用作品的正文开头的显著位置,注明用户的姓名、来源及其采用的知识共享协议,并与该作品在磨坊上的原发地址建立链接
  • 可对作品重新编排、修改、节选或者以作品为基础进行创作和发布
  • 不可将作品进行商业性使用
  • 需在以作品基础上创作的演绎作品上适用相同类型的知识共享许可条款

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引