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

作者:CRIWARE游戏音频视频中间件
2020-11-10
7 10 0

HI,各位同学好久不见,这一次来分享一下、BEATWIZ 的神奇魔法。相信各位在开发音乐游戏的过程中肯定有很多次“游戏两分钟,制作两个月”这种难受的情况发生,因此也让很多开发者望之儿退却。

所以 BEATWIZ 也就这么的诞生啦!它可以高速且高精度的解析乐曲的速度,节拍数,节拍开始时间等等信息,是一款特化了乐曲解析的引擎。怎么样?让 CRIWARE 的增野老师带领我们一起以及 BEATWIZ 的世界吧!

第一话:打节拍的秘密

大家好,我是 CRIWARE 的增野。

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

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


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

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


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


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

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


打节拍的秘密

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

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

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

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

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


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

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

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

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

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

顺带一提“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 节拍)

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


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

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

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

▲ 这是最新的 BEATWIZ 的用乐曲文件为单位的解析结果。

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

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

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

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

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

下回预告

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

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

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

尽请期待。

本文为用户投稿,不代表 indienova 观点。

近期点赞的会员

 分享这篇文章

CRIWARE游戏音频视频中间件 

CRIWARE的Indienova专栏,介绍CRIWARE的使用及项目案例 

您可能还会对这些文章感兴趣

参与此文章的讨论

暂无关于此文章的评论。

您需要登录或者注册后才能发表评论

登录/注册