欢迎光临散文网 会员登陆 & 注册

关于自制"Mod" Rsmplayer所使用的rsm文本格式的介绍

2019-02-07 14:43 作者:Flinx_方凌旭  | 我要投稿

用语解释:

文件头  设想中的在音轨定义前进行预定义信息的文本,内容包括歌曲信息、作者信息、预定义音色、音量、音量渐变模式(函数)及参数、自动建造模式参数及各音轨偏移参数(不过全都暂未实现……);

主音轨  rsm文本中第一次出现的$所标记的音轨;

元参数  在解析rsm文本时每遇到各种记号便对两个预定义的RsmNote对象noteA和noteB进行修改,新增的音符由noteA复制并修改而来,它的参数称作元参数;

临时记号  将要修改的元参数赋给noteB后再修改元参数,其后添加音符之后再从noteB还原该参数;

参数n  带有参数的标记用n代表参数,使用时n可取值0~61,用0~9,a~z,A~Z共62个字符依序代替;

音符、控制音符、标记  “音符”和“控制音符”对应单个RsmNote对象,具有各种用于发音的成员变量,区别在于后者soundID成员变量等于0,且将其他成员变量用作控制参数起控制作用;标记起操控元参数和RsmNote序列的作用;


已实现:

$  标记一个音轨的开始,初始化当前音轨;

;  标记一个音轨的结束,将该音轨添加至List<RsmTrack> trackList中;

@n  标记另一个音轨在此启动,参数n由该音轨的结束标记是第几次出现并减去1确定(主音轨是0,请不要使用@0);

~  修改元delay参数为四分音符时值(12);

_  修改元delay参数为八分音符时值(6);

=  修改元delay参数为十六分音符时值(3);

.  修改元delay参数为原来的1.5倍,即附点音符,不建议在"="标记后使用;

*  修改元delay参数为原来的三分之二,实现三连音;

-  将已添加至List<RsmNote> thisNotes的最新音符的delay参数加12,即延长一拍;

,  标记其后的音符与前一个音符同时播放;

0  向List<RsmNote> thisNotes中添加休止符;

1~7  对应一个钢琴音组的七个白键,以对应noteNum值生成RsmNote对象添加至thisNotes中;

8  增加已添加至thisNotes的最新音符的时值,将它的delay参数加上当前元delay参数的值,实现连音符;

9  复制已添加至thisNotes的最新音符,降八度后添加,且设置为同时播放;

>  升八度前缀标记;

<  降八度前缀标记;

#  临时升半音前缀标记;

b  临时降半音前缀标记;

+  临时升八度前缀标记;

!  临时降八度前缀标记;

Zn  暂未分配字母标记的杂项功能标记,参数n表示功能号:

    Z1  启动自动音符9功能

    Z2  关闭自动音符9功能


暂未实现:

%n  复制标记,将已添加至thisNotes的最新的“参数n”个音符(包括控制音符)复制一次再次添加;

An,Bn  标记复制起始点和结束点,参数n相等的AB标记确定了一个音符组,结合P标记实现重复音符复制功能;

Pn  复制参数n代表的音符组添加到thisNotes中;

K  标记歌词文本的开始,代码会搜索其后出现的第一个字符";",截取"K"与";"之间的文本作为一行歌词,建议在所有音轨定义完成后,在rsm文本的末尾写入歌词;

Ln  控制音符,标记某行歌词的启用,参数n由该行歌词的"K"标记是第几次出现确定,L0表示空行;


以下是将音轨1略简化后的无歌词《千本樱》rsm文本(看上去很让人眼花……将来做个专用编辑器吧……)

视频地址:https://www.bilibili.com/video/av38250376/

static String rsm_senbon_zakura_3 = "" //

+ "$@1 _.6,+2 _.6,+2 _5,+1 _.6,+2 _.6,+2 _5,+1 _.6,+2 _.6,+2 _5,+1 ~6,+2 ~+1,+4" // 1-2

+ "_.6,+2 _.6,+2 _5,+1 _.6,+2 _.6,+2 _5,+1 ~6,+2 ~+4,+6 ~+3,+5 ~+4,+6>" // 3-4

+ "_56=2121 _56=2121 _56=2121 _4=*343_21 _56=2121 _56=2121 _56>_14 =3432_1<6" // 5-8

+ "_56=2121 _56=2121 _56=2121 _4=*343_21 _2=12_4=24 _6=56>14<6>1 _4=*343_21 ~2_24" // 9-12

+ "_56=2121 _56=2121 _56=2121 _4=*343_21 _56=2121 _56=2121 _56>_14 =3432_1<6" // 13-16

+ "_56=2121 _56=2121 _56=2121 _4=*343_21 _5=6>121<65 _2456 _.2.2_1~2-" // 17-20

+ "<~2_.2=1 _2445 ~2_.2=1 _21<6>1  ~2_.2=1 _2456 ~6_*565 ~42" // 21-24

+ "~2_.2=1 _1245 ~2_.2=1 _211<6>  ~2_.2=1 _1245 ~6_*565 ~42" // 25-28

+ "4321 _1=12<_65~6- _6>1~253 4_31~2-" // 29-32

+ "4321 _1=12<_65~6_6>1 2~2_2~45 3--_24" // 33-36

+ "_.5.5_6 ~.6_6 >12<54 ~6_24 _.5.5_6 ~.6_6 b7654 ~4_24" // 37-40

+ "_.5.5_6 ~.6_6 >12<54 ~6_24 ~b76 54 _5631 ~2_24" // 41-44

+ "_.5.5_6 ~.6_6 >12<54 ~6_24 _.5.5_6 ~.6_6 b7654 ~4_24" // 45-48

+ "_.5.5_6 ~.6_6 >12<54 ~6_24 ~b76 54 _546>1 ~2-" // 49-52

+ "_2222 22=1<7_6 5555 55=54_2 2222 22=21_<6 5=65 6>124 6>124 _3=<24" // 53-56

+ "64268624 64268624 b754b78b754 b754b78b754" // 57-58

+ "b742b78b742 b742b78b742 53158531 63168631" // 59-60

+ "6426 +2642 5426 +4+264 b742b7 +2b742 b742b7 >432<b7" // 61-62

+ "+2b74b7 >4!b724 b742<b7 b742!b7 ~1 =<135+1 ~+#1 =#14#5>#1" // 63-64

+ "=5646 5432 3212 21<65 6546 5434 ~2-" // 65-66

+ "_2346 =56>23 4324 ~.6_+1 ~6-" // 67-68

+ "<_2154 64>21 64=*+16+16+16 ~+1-" // 69-70

+ "_4=2<b7 4b7>24 _5=31 !5135 _.6.b6=6b6 ~6-" // 71-72

+ "4321 _1=12<_65~6- _6>1~253 4_31~2-" // 73-76

+ "4321 _1=12<_65~6_6>1 2~2_2~45 3--_24" // 77-80

+ "_.5.5_6 ~.6_6 >12<54 ~6_24 _.5.5_6 ~.6_6 b7654 ~4_24" // 81-84

+ "_.5.5_6 ~.6_6 >12<54 ~6_24 ~b76 54 _5656 ~6_35" // 85-88

+ "_.6.6_7 ~.7_7 >23<65 ~7_35 _.6.6_7 ~.7_7 +1765 ~5_35" // 89-92

+ "_.6.6_7 ~.7_7 >23<65 ~7_35 ~+17 65 _657>2 ~3_<35" // 93-96

+ "67=3232 _67=3232 _67=3232 _5=*#45#4_32" // 97-98

+ "67=3232 _67=3232 _67>25 =#45#43_2<7" // 99-100

+ "67=3232 _67=3232 _67=3232 _5=*#45#4_32" // 101-102

+ "_3=23 _5=35 _6=67 >25!72 _5=*#45#4_32 ~3_35" // 103-104 ">"

+ "67=3232 _67=3232 _67=3232 _5=*#45#4_32" // 105-106

+ "67=3232 _67=3232 _67>25 =#45#4#3_2<7" // 107-108

+ "67=3232 _67=3232 _67=3232 _5=*#45#4_32" // 109-110

+ "_6=7>2 32<76 _3567 .3.3_2 ~3-" // 111-112

+ "_.3.3_2 ~3- 0000;"// 113-114

+ "$< A1 _.2,6,+2 _.2,6,+2 _2,6,+2 B1 P1 P1 P1" // 1-2

+ "P1 P1 ~2,6,+2 ~2,6,+2 ~1,5,+1 ~1,5,+1" // 3-4

+ "A2 _!b7_4,b7 _!b7_4,b7 _1_5,+1 _1_5,+1 _2_6,+2 _2_6,+2 _2_6,+2 _2_6,+2 B2" // 5-6

+ "P2 P2 P2 P2 P2 P2 P2" // 7-20

+ "A3 _2_6,+2 _2_6,+2 _2_6,+2 _2_6,+2 _!b7_4,b7 _!b7_4,b7 _1_5,+1 _1_5,+1 B3" // 21-22

+ "P3 P3 P3" // 23-28

+ "A4 _!b7_4,b7 _!b7_4,b7 _!b7_4,b7 _!b7_4,b7 >_!4_1,4 _!4_1,4 _!4_1,4 _!4_1,4" // 29-30

+ "<_!b7_4,b7 _!b7_4,b7 _1_5,+1 _1_5,+1 B4 _2_6,+2 _2_6,+2 _2_6,+2 _2_6,+2" // 31-32

+ "P4 _!6_3,6 _!6_3,6 ~3,6,+#1,+3 8" // 33-36

+ "A5 _2_6,+2 _2_6,+2 _!b7_4,b7 _!b7_4,b7 _1_5,+1 _1_5,+1 >_!4_1,4 _!4_1,4<" // 37-38

+ "_2_6,+2 _2_6,+2 _!b7_4,b7 _!b7_4,b7 _1_5,+1 _1_5,+1 >_!4_1,4 _!4_1,4<" // 39-40

+ "_2_6,+2 _2_6,+2 _!b7_4,b7 _!b7_4,b7 _1_5,+1 _1_5,+1 >_!4_1,4 _!4_1,4<" // 41-42

+ "_!b7_4,b7 _!b7_4,b7 _1_5,+1 _1_5,+1 _!b7_4,b7 _!b7_5,+1 ~2,6,+2 8 B5 P5" // 43-52

+ "~2,6,+2 8 ~!b7,4,b7 8 ~1,5,+1 8 ~2,6,+2 8" // 53-54

+ "~2,6,+2 8 ~!b7,4,b7 8 ~1,5,+1 8 ~!6,3,6 8" // 55-56

+ "A6 ~2,6,+2 ~2,6,+2 ~2,6,+2 ~2,6,+2 ~!b7,4,b7 ~!b7,4,b7 ~!b7,4,b7 ~!b7,4,b7 B6" // 57-58

+ "~!b7,4,b7 ~!b7,4,b7 ~!b7,4,b7 ~!b7,4,b7 ~1,5,+1 ~1,5,+1 ~!6,3,6 ~!6,3,6 P6" // 59-62

+ "~!5,2,5 ~!5,2,5 ~!5,2,5 ~!5,2,5 <~1,5,+1 ~1,5,+1 >~!6,#1,3,6 ~!6,#1,3,6" // 63-64

+ "A7 ~!b7,4,b7 ~!b7,4,b7 ~1,5,+1 ~1,5,+1 B7 ~2,4,6 ~2,4,6 ~2,4,6 ~2,4,6" // 65-66

+ "P7 ~2,4,6 ~2,4,6 ~2,4,6 ~2,4,6" // 67-68

+ "P7 ~2,6,+2 ~2,6,+2 ~2,6,+2 ~2,6,+2" // 69-70

+ "P7 ~!6,3,6 ~!6,3,6 ~!6,3,6 ~!6,3,6" // 71-72

+ "A8 ~!b7,4,b7 ~!b7,4,b7 ~!b7,4,b7 ~!b7,4,b7 ~!4,1,4 ~!4,1,4 ~!4,1,4 ~!4,1,4 B8" // 73-74

+ "~!b7,4,b7 ~!b7,4,b7 ~1,5,+1 ~1,5,+1 ~2,6,+2 ~2,6,+2 ~2,6,+2 ~2,6,+2 P8" // 75-78

+ "_!b7,4,b7 ~!b7,4,b7 _!b7,4,b7 ~!b7,4,b7 ~!b7,4,b7 ~!6,3,6 ~!6,3,6 ~3,6,+#1,+3 8" // 79-80

+ "A9 ~2,6,+2 8 ~!b7,4,b7 8 ~1,5,+1 ~1,5,+1 >~!4,1,4 8< B9 P9 P9" // 81-86

+ "~!b7,4,b7 ~!b7,4,b7 ~1,5,+1 ~1,5,+1 ~!b7,4,b7 ~1,5,+1 ~2,6,+2 8" // 87-88

+ "Aa _3_7,+3 _3_7,+3 _1_5,+1 _1_5,+1 _2_6,+2 _2_6,+2 _5_+2,+5 _5_+2,+5 Ba Pa Pa" // 89-94

+ "_1_5,+1 _1_5,+1 _2_6,+2 _2_6,+2 _1_5,+1 _2_6,+2 ~3,7,+3 8" // 95-96

+ "Ab _1_5,+1 _1_5,+1 _2_6,+2 _2_6,+2 _3_7,+3 _3_7,+3 _3_7,+3 _3_7,+3 Bb Pb Pb" // 97-102

+ "_1_5,+1 _1_5,+1 _2_6,+2 _2_6,+2 _1_5,+1 _2_6,+2 ~3,7,+3 8 Pb Pb Pb" // 103-110

+ "_1_5,+1 _1_5,+1 _2_6,+2 _2_6,+2 _.3,.7,.+3 _.3,.7,.+3 _3,7,+3 ~3,7,+3 _3,7,+3 =2,+2 =#2,+#2" // 111-112

+ "_.3,.7,.+3 _.3,.7,.+3 _3,7,+3 ~3,7,+3 <~3,7,+3 ~0000;" // 113-114

+ "";


关于自制"Mod" Rsmplayer所使用的rsm文本格式的介绍的评论 (共 条)

分享到微博请遵守国家法律