Skip to content

按规则转换音符

根据你上一步(寻找合适的乐谱)挑选的乐谱,按一定的规则进行转换,暂且把这一步得到的文本叫做”*音符时机文本“吧(吐槽:所以到底要叫什么名字?第二步得到的文本?)。

老实讲,这一步是最难的了,没点乐理知识和耐心,还真折腾不出来。。。需要计算每个音符的响起的时机,很耗时耗力。

规则

风物之诗琴如下图所示:

乐谱转换规则

图片中音符对应的规则如下:

音高/序号1234567
高音/HC5D5E5F5G5A5B5
中音/MC4D4E4F4G4A4B4
低音/LC3D3E3F3G3A3B3

H-1(高音第1个音符)对应C5,M-1(中音第1个音符)对应C4,等等。

以上规则依赖基础基础乐理和MIDI知识,对照如下:

MIDI

除上述规则外,还需要确定每个音符响起的时机,单位是毫秒,ms。

新建记事本,从上至下顺序按照H-1-400的格式写下每行代码,设置初始等待时长一个小节(4/4拍即为四个4分音符),设置不同时值音符时长诸如:

3200-全音符时长,1600-2分音符时长,800-4分音符时长
400-8分音符时长,200-16分音符时长,100-32分音符时长

因此我们可以得到如下样式的文本:

L-6-800
M-7-400
L-1-400
M-7-800
L-1-200
...

注意:H、M、L写的时候,可以不用区分大小写。

此文本的每一行,表示某个音符响起的时机,例如L-6-999表示A3音符在第999毫秒时响起,之后是M-7-333,它表示B3音符在上个音符响起后的第333毫秒响起。

如何表示和弦?

一组和弦写作文本时,从低音往高音依次记录,只有第一个音符记录时长,其他音符全部记作0.

和弦记录方式

以这组和弦为例:

和弦

图片中的音符依次可以写作如下样式的文本:

M-2-800
M-3-0
M-6-0

如何表示双手五线谱?

左右手合并写作文本时,将左右手五线谱合并看做一条五线谱,仍然依照和弦记录方式写。

小节记录方式

以这小节为例:

小节

图片中的音符依次可以写作如下样式文本:

L-6-800
M-2-0
M-3-0
M-6-0

L-3-400

L-6-400

M-3-1600
M-5-0

M-7-400

注意:该小节第一组音符中,右手和弦下面对应的左手单音原应是A2,由于原神风物之诗琴音域内没有这么低的音,所以灵活处理为A3。

如何计算乐曲速度?

先计算出该曲最快音符(一般为32分音符)的时值,由于小数代码读取有误差所以一律取整,用当前曲子最快音符时值除以预设标准音符时值(100ms)即可得速度比例。

以这个乐谱为例:

乐曲速度计算

计算取整得该曲32分音符时值为70ms,除以100ms,为0.7,随后在转换器中修改代码数值为0.7,保存为当前乐曲速度的适用转换器。

转换器中修改部分如下:

转换器速度