如何开发音游所用的节奏点编辑器

您所在的位置:网站首页 可以自己导入音频的音游 如何开发音游所用的节奏点编辑器

如何开发音游所用的节奏点编辑器

2024-02-24 07:05| 来源: 网络整理| 查看: 265

开发音游编辑器 写在前面 结合之前做的一个音游Demo,谈谈自己的感受; 一开始,对音游并不是很熟悉,只是轻度玩过几款音游,再加上对乐理知识的欠缺,导致一开始面对这种需求的时候是比较懵逼的。

后来下载了几款音游,观察了一下大部分音游对节奏点的处理,然后补充的看了一些乐理知识,慢慢明白了怎么来用数据量化一首歌曲。 要做一个东西首先得把它量化。

那么要完成一首音游那就是: 节奏点数据+运动算法(恒定速度运动,在节奏点的时候正好到达判定线) 当然可以不恒定速度运动(提前做一个位置偏移,改一下速度,看起来就相对地图在做运动,然后在这个节奏点时刻上它也正好运动到我们给定的位置)

节奏点数据: 歌曲的谱子前面都会写几几拍,比如4/4拍,前面表示拍数,后面表示四分音符,其实他们之间并没有什么联系,这里我的理解就是这首歌一小节是4拍,一拍的长度是一个四分音符的长度,这里我们只管拍数,然后就是一首歌会有BPM(没分钟节拍数),还有这首歌的长度,都是我们需要的信息

然后我发现一些节奏比较快的音乐可能一个小节的拍数会比较多,可能有8拍:比如我经常听的trap音乐里面的很多beat的hit-hat都是用8拍把一个小节占满: 图: 在这里插入图片描述 然后这是这首歌的BPM: 在这里插入图片描述 比如用Beat制作软件随便做一节: 在这里插入图片描述 红色的地方一般都会是重音,也一般会是我们的节奏点,看样子在制作工程中,鼓点的节奏还是对齐的(是在一拍开始得地方),所以利用时刻来量化是没什么大的问题的。

然后在第一拍或者第三拍上会有808鼓的重鼓,然后发现乐理书上面讲的一般16分音符的音乐就非常少了(一拍的长度是一个16分音符)。 所以取舍了一下,我把一个小节分成了32个时间点,这样就算你是32拍的乐谱那也是够用了(主要是为了在配置音游谱面的时候能够更加细化的调节)

那我们的一个小节的时间是多长呢? 首先的算出一拍的多长: 假如我们这首歌是4/4拍的歌曲(很常见),一小节就是4拍

1拍的时间 = 60/BPM(一分钟60秒);1 Bar(小节)的时间 = 1拍 * 4(上面的前提,是4/4拍乐谱,所以一小节是4拍);

那么其实我们之前给一拍分得32份的时间也算出来了:

DeltaTime = BarTime/32;

一首歌有多少拍:

bar = Convert.ToInt32(len / BarTime);

当然,有些音乐的前奏很长,或者是我们不想再前奏放置节奏点,所以会提供一个偏移值:

CurrentTime = OffsetTime;

这样一来其实就描述完毕了,哦,还有一个分轨问题,经常看到的音游会有4轨左右:

List1 = new KeyNode[bar * 32]; List2 = new KeyNode[bar * 32]; List3 = new KeyNode[bar * 32]; List4 = new KeyNode[bar * 32];

现在就是给每条轨道初始化每个节奏点的时刻了:

for (int i = 0; i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3