BMS文件数字化及其应用
[align=center][font=黑体][size=6]BMS文件数字化及其应用[/size][/font][/align][align=left][font=宋体][size=5]一.引言[/size][/font][/align][align=left][font=宋体][size=5][/size][/font][/align][align=left][size=3][font=宋体]本人乃[/font][font=Calibri]BMS[/font][font=宋体]新手一枚,信誓旦旦做好了了处女作[/font][font=Calibri]**[/font][font=宋体]交给[/font][font=Calibri]FF[/font][font=宋体]验明正身,结果被无情地打击回来,理由“压音不准”,以下对白:[/font][/size][size=3][font=Calibri]Me[/font][font=宋体]:我咋觉得[/font][font=Calibri]0.4[/font][font=宋体]速都没看出啥问题呢?[/font][/size]
[size=3][font=Calibri]FF[/font][font=宋体]:视觉和听觉也要跟理论结合![/font][/size]
[font=Calibri][size=3][/size][/font]
[font=宋体][size=3]具体情况如下图:[/size][/font]
[/align][align=center][font=宋体][/font][/align][align=center][img]http://bbs.chinagames.net/attachments/201008/6/284753475_12811077880600.jpg[/img][/align]
[size=3][font=宋体]稍有经验的[/font][font=Calibri]Noter[/font][font=宋体](甚至菜鸟如我)一眼就能看出来[/font][font=Calibri]Error 1[/font][font=宋体]中一排[/font][font=Calibri]NOTE[/font][font=宋体]应该下移一排,[/font][font=Calibri]Error 2[/font][font=宋体]应该向下微移半格(出现此状况的原因是由于使用了[/font][font=Calibri]64 Grid[/font][font=宋体];注:本图为[/font][font=Calibri]32 Grid[/font][font=宋体]视图)[/font][/size]
[font=Calibri][size=3][/size][/font]
[size=3][font=Calibri]Error 1[/font][font=宋体]及[/font][font=Calibri]Error 2[/font][font=宋体]应该都是新人容易犯的压音问题,出错原因很大程度上是由于不仔细(如理论上有不理解的请参阅论坛相关文章),快速、有效地检查出此两类错误是制作、提交作品时不可或缺的一个步骤,面对上百个小节、上千个[/font][font=Calibri]Note[/font][font=宋体],我对[/font][font=Calibri]FF[/font][font=宋体]大嚎道:“要是有软件检查就好了[/font][font=Calibri]~[/font][font=宋体]”,[/font][font=Calibri]FF[/font][font=宋体]答曰:“[/font][font=Calibri]Just do it![/font][font=宋体]”[/font][font=Calibri] [/font][/size]
[font=宋体][size=3]于是,本文诞生了。[/size][/font]
[size=3][font=宋体]谨以此文献给和我一样新的新手[/font][font=Calibri]Noter[/font][font=宋体],以帮助大家减少压音不准的错误,尽快走上正途(我们的目标[/font][font=Calibri]~[/font][font=宋体]通过审核!)[/font][/size]
[font=Calibri][size=3][/size][/font]
[font=宋体][size=3]废话不多说,正文开始。[/size][/font][color=red][b][font=宋体][size=9pt](对于理论不太感兴趣的同志请直接跳往3L实践篇,但请理解[/size][/font][/b][b][font=宋体][color=blue][size=9pt]“数字串规律”[/size][/color][/font][/b][b][font=宋体][size=9pt]前面[/size][/font][/b][b][font=宋体][color=blue][size=9pt]“压线”[/size][/color][/font][/b][b][font=宋体][size=9pt]的定义)[/size][/font][/b][/color]
[b][font=宋体][/font][/b][b][size=9pt][/size][/b]
[font=宋体][size=5]二.理论篇[/size][/font][font=Calibri][size=3] [/size][/font]
[font=Calibri][size=3][/size][/font]
[size=3][font=宋体]怀着一颗好奇的心,我用笔记本打开了一个[/font][font=Calibri]BMS[/font][font=宋体]文件,得到了以下结果:[/font][/size]
[size=3][font=宋体][size=9pt][font=Calibri]*---------------------- HEADER FIELD[/font][/size]
[size=9pt][font=Calibri]#PLAYER 1[/font][/size]
[size=9pt][font=Calibri]#GENRE Pop[/font][/size]
[font=宋体][size=9pt]………………[/size][/font][size=9pt][font=Calibri]([/font][/size][font=宋体][size=9pt]省略[/size][/font][size=9pt][font=Calibri])[/font][/size]
[size=9pt][font=Calibri]#WAV01 oops.mp3[/font][/size]
[size=9pt][font=Calibri][/font][/size]
[size=9pt][font=Calibri]#BPM01 52.17[/font][/size]
[size=9pt][font=Calibri]#BPM02 122.78[/font][/size]
[font=宋体][size=9pt]……………[/size][/font][size=9pt][font=Calibri]([/font][/size][font=宋体][size=9pt]省略[/size][/font][size=9pt][font=Calibri])[/font][/size]
[size=9pt][font=Calibri]#LNTYPE 1[/font][/size]
[size=9pt][font=Calibri]*---------------------- MAIN DATA FIELD[/font][/size]
[size=9pt][font=Calibri][/font][/size]
[size=9pt][font=Calibri]#00001:00000001[/font][/size]
[font=宋体][size=9pt]………………[/size][/font][size=9pt][font=Calibri]([/font][/size][font=宋体][size=9pt]省略[/size][/font][size=9pt][font=Calibri])[/font][/size]
[size=9pt][font=Calibri]#00603:000000000000000000000000000000000000000000AE003C000000000000005A[/font][/size]
[size=9pt][font=Calibri]#00608:00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000020300000004000000000000[/font][/size]
[size=9pt][font=Calibri]#00611:0002000200020000[/font][/size]
[size=9pt][font=Calibri]#00612:02000000000000000200000000020000[/font][/size]
[size=9pt][font=Calibri]#00613:0002000000020000[/font][/size]
[size=9pt][font=Calibri]#00614:00000000020000000000000000020000[/font][/size]
[size=9pt][font=Calibri]#00615:0002000200020000[/font][/size]
[size=9pt][font=Calibri]#00616:00000000000002000000000000020000[/font][/size]
[size=9pt][font=Calibri]#00618:00000000000002000000000000020000[/font][/size]
[size=9pt][font=Calibri]#00653:00000000000000000000000002020000[/font][/size]
[font=宋体][size=9pt]………………[/size][/font][size=9pt][font=Calibri]([/font][/size][font=宋体][size=9pt]省略[/size][/font][size=9pt][font=Calibri])[/font][/size]
[font=Calibri][/font]
[font=宋体]可以看到一个[/font][font=Calibri]BMS[/font][font=宋体]文件可以完美地用记事本打开(或解码,[/font][font=Calibri]Decode[/font][font=宋体]),打开后文件分为下列几个部分:[/font]
[font=Calibri]1[/font][font=宋体].头文件([/font][font=Calibri]HEADER FIELD[/font][font=宋体]):记录了曲名、曲风、作者等信息[/font]
[font=Calibri]2[/font][font=宋体].[/font][font=Calibri]K[/font][font=宋体]音区(即上文中的[/font][size=6.5pt][font=Calibri]#WAV01[/font][/size][font=宋体][size=10.5pt]),如果是[/size][/font][size=10.5pt][font=Calibri]K-BMS[/font][/size][font=宋体][size=10.5pt],这里将会有一大串[/size][/font][size=10.5pt][/size]
[size=10.5pt][font=Calibri]3[/font][/size][font=宋体][size=10.5pt].变速区,记录了变速的信息[/size][/font][size=10.5pt][/size]
[size=10.5pt][font=Calibri]4[/font][/size][font=宋体][size=10.5pt].面条区,即[/size][/font][size=10.5pt][font=Calibri]#LNTYPE[/font][/size][font=宋体][size=10.5pt]一行[/size][/font][size=10.5pt][/size]
[size=10.5pt][font=Calibri]5[/font][/size][font=宋体][size=10.5pt].[b][i][color=red]重头戏,[/color][/i][/b]主要数据区([/size][/font][size=10.5pt][font=Calibri]MAIN DATA FIELD[/font][/size][font=宋体][size=10.5pt]),记录了谱面信息[/size][/font][size=10.5pt][/size]
[font=Calibri][/font]
[font=宋体]从上面叙述我们可以看出,用记事本打开的[/font][font=Calibri]BMS[/font][font=宋体]文件详细完整地记录了歌曲的[/font][font=Calibri]Note[/font][font=宋体]信息,换言之,我们完全可以只用记事本而无需[/font][font=Calibri]BMSE[/font][font=宋体]做出[/font][font=Calibri]Note[/font][font=宋体](前提是你的头脑足够发达,具体见下文)更直白的说,用[/font][font=Calibri]BMSE[/font][font=宋体]只是一个[/font][font=Calibri]GUI[/font][font=宋体]([/font][font=宋体][size=10pt]图形用户接口),关于这点的讨论详见后文[/size][/font][font=宋体][size=9pt]“四[/size][/font][color=red][size=9pt][font=Calibri].[/font][/size][/color][font=宋体][size=9pt]应用之自动[/size][/font][color=red][size=9pt][font=Calibri]Note[/font][/size][/color][font=宋体][size=9pt]机”[/size][/font]
[font=宋体][size=10pt]下面关注[/size][/font][u][font=宋体][size=10pt]数据区([/size][/font][/u][u]main data field[/u][u][font=宋体][size=10pt])[/size][/font][/u][font=宋体][size=10pt],和[/size][/font]BMSE[font=宋体][size=10pt]上所见一样,数据的记录也是按小节来记的,如[/size][/font]#000****[font=宋体][size=10pt]、[/size][/font]#001****[font=宋体][size=10pt]、[/size][/font]#002****[font=宋体][size=10pt]……那么以[/size][/font]006[font=宋体][size=10pt]节为例,[/size][/font]#006[font=宋体][size=10pt]后面的数字又代表什么意思呢?[/size][/font]
[font=宋体][size=10pt]经过实验,可以得出结论:[/size][/font]#0061X[font=宋体][size=10pt]记录的是米粒[/size][/font]Note[font=宋体][size=10pt],[/size][/font]#0065X[font=宋体][size=10pt]记录的是面条[/size][/font]Note[font=宋体][size=10pt],也就是说[/size][/font]BMS[font=宋体][size=10pt]里面米粒和面条是分开记录的。自然地,我们可以猜测,[/size][/font]#0060X[font=宋体][size=10pt]记录的是变速信息(为何存在[/size][/font]#00603[font=宋体][size=10pt]和[/size][/font]#00608[font=宋体][size=10pt]两行?有待研究)[/size][/font]
[font=宋体][size=10pt]进一步,我们通过实验可以的出上文所提到的[/size][/font]X[font=宋体][size=10pt]代表的是[/size][/font]Note[font=宋体][size=10pt]所在列[/size][/font]----BMS[font=宋体][size=10pt]记录每小节的[/size][/font]NOTE[font=宋体][size=10pt]信息是以[b][u]列[/u][/b]记录的[/size][/font][font=宋体][size=10pt],具体[/size][/font][b][font=宋体][size=10pt]对应关系如下:([/size][/font][/b][b]X[/b][b][font=Wingdings][size=10pt][font=Wingdings]à[/font][/size][/font][/b][b][font=宋体][size=10pt]键)[/size][/font][color=red][/color][/b]
[b][color=red][font=Calibri]6[/font][/color][/b][b][font=Wingdings][size=10pt][font=Wingdings]à[/font][/size][/font][color=red][font=Calibri]1
1[/font][/color][/b][b][font=Wingdings][size=10pt][font=Wingdings]à[/font][/size][/font][color=red][font=Calibri]2
2[/font][/color][/b][b][font=Wingdings][size=10pt][font=Wingdings]à[/font][/size][/font][color=red][font=Calibri]3
3[/font][/color][/b][b][font=Wingdings][size=10pt][font=Wingdings]à[/font][/size][/font][color=red][font=Calibri]4
4[/font][/color][/b][b][font=Wingdings][size=10pt][font=Wingdings]à[/font][/size][/font][color=red][font=Calibri]5
5[/font][/color][/b][b][font=Wingdings][size=10pt][font=Wingdings]à[/font][/size][/font][color=red][font=Calibri]6
8[/font][/color][/b][b][font=Wingdings][size=10pt][font=Wingdings]à[/font][/size][/font][color=red][font=Calibri]7[/font][/color][/b]
[font=宋体]记实际击打键位从左至右为[/font][font=Calibri]1-7[/font][font=宋体],详见下图:[/font]
[align=center][font=宋体][font=Cambria][/font][/font][/align][align=center][font=Cambria][/font][/align][align=center][font=宋体][font=宋体][size=9pt][img]http://bbs.chinagames.net/attachments/201008/6/284753475_1281107934HQkI.jpg[/img][/size][/font][/font][/align][align=center][font=宋体][font=宋体][size=9pt] [/align]如[/size][/font][size=9pt][font=Calibri]#00611[/font][/size][font=宋体][size=9pt]后面的一串数字“[/size][/font][size=9pt][font=Calibri]0002000200020000[/font][/size][font=宋体][size=9pt]”(下称为[color=red]数字串[/color])就是[/size][/font][size=9pt][font=Calibri]X=1[/font][/size][font=宋体][size=9pt],即实际击打的[/size][/font][size=9pt][font=Calibri]2[/font][/size][font=宋体][size=9pt]号键(左蓝)的米粒[/size][/font][size=9pt][font=Calibri]NOTE[/font][/size][font=宋体][size=9pt]信息(因为是[/size][/font][size=9pt][font=Calibri]1X[/font][/size][font=宋体][size=9pt],注[/size][/font][size=9pt][font=Calibri]5X[/font][/size][font=宋体][size=9pt]为面条信息),[/size][/font][size=9pt][font=Calibri]02[/font][/size][font=宋体][size=9pt]为[/size][/font][size=9pt][font=Calibri]#WAV 02[/font][/size][font=宋体][size=9pt]的意思,代表该位置排了一个[/size][/font][size=9pt][font=Calibri]#WAV 02[/font][/size]
[font=宋体][size=9pt]为什么有的数字串为[/size][/font][size=9pt][font=Calibri]16[/font][/size][font=宋体][size=9pt]位(如[/size][/font][size=9pt][font=Calibri]#00611[/font][/size][font=宋体][size=9pt],[/size][/font][size=9pt][font=Calibri]#00613[/font][/size][font=宋体][size=9pt])有的数字串为[/size][/font][size=9pt][font=Calibri]32[/font][/size][font=宋体][size=9pt]位(如[/size][/font][size=9pt][font=Calibri]#00612[/font][/size][font=宋体][size=9pt],[/size][/font][size=9pt][font=Calibri]#00614[/font][/size][font=宋体][size=9pt])?这与排放[/size][/font][size=9pt][font=Calibri]NOTE[/font][/size][font=宋体][size=9pt]的位置有关,见下图:[/size][/font][/font][font=宋体]
[align=center][img]http://bbs.chinagames.net/attachments/201008/6/284753475_12811073134N8Z.jpg[/img][/align]
[align=left]
[font=宋体][size=9pt] 注:此图[b][color=red]不与[/color][/b]上文所述[/size][/font][size=9pt][font=Calibri]#006[/font][/size][font=宋体][size=9pt]对应!(假设该小节为[/size][/font][size=9pt][font=Calibri]#001,[/font][/size][font=宋体][size=9pt]且除所示[/size][/font][size=9pt][font=Calibri]Note [/font][/size][font=宋体][size=9pt]外无其余[/size][/font][size=9pt][font=Calibri]Note[/font][/size][font=宋体][size=9pt])[/size][/font][size=9pt][/size]
[size=9pt][font=Calibri][/font][/size]
[color=blue][b][font=宋体][size=9pt]我们称[/size][/font][/b][b][size=9pt][font=Calibri]1[/font][/size][/b][b][font=宋体][size=9pt]号键位第一个[/size][/font][/b][b][size=9pt][font=Calibri]Note[/font][/size][/b][b][font=宋体][size=9pt](自下往上数)压在[/size][/font][/b][b][size=9pt][font=Calibri]Grid 4[/font][/size][/b][b][font=宋体][size=9pt]上,[/size][/font][/b][b][size=9pt][font=Calibri]2[/font][/size][/b][b][font=宋体][size=9pt]号(蓝)压在[/size][/font][/b][b][size=9pt][font=Calibri]Grid 8[/font][/size][/b][b][font=宋体][size=9pt]上,[/size][/font][/b][b][size=9pt][font=Calibri]3[/font][/size][/b][b][font=宋体][size=9pt]号(白)压在[/size][/font][/b][b][size=9pt][font=Calibri]Grid 16[/font][/size][/b][b][font=宋体][size=9pt]上,[/size][/font][/b][b][size=9pt][font=Calibri]4[/font][/size][/b][b][font=宋体][size=9pt]号[/size][/font][/b][b][size=9pt][font=Calibri]([/font][/size][/b][b][font=宋体][size=9pt]黄[/size][/font][/b][b][size=9pt][font=Calibri])[/font][/size][/b][b][font=宋体][size=9pt]压在[/size][/font][/b][b][size=9pt][font=Calibri]Grid 32[/font][/size][/b][b][font=宋体][size=9pt]上,[/size][/font][/b][b][size=9pt][font=Calibri] 5[/font][/size][/b][b][font=宋体][size=9pt]号(右白)压在[/size][/font][/b][b][size=9pt][font=Calibri]Grid 64[/font][/size][/b][b][font=宋体][size=9pt]上[/size][/font][/b][b][size=9pt][font=Calibri] [/font][/size][/b][b][font=宋体][size=9pt](本图为[/size][/font][/b][b][size=9pt][font=Calibri]Grid 32[/font][/size][/b][b][font=宋体][size=9pt]视图,每一节有[/size][/font][/b][b][size=9pt][font=Calibri]32[/font][/size][/b][b][font=宋体][size=9pt]格线,每一拍有[/size][/font][/b][b][size=9pt][font=Calibri]8[/font][/size][/b][b][font=宋体][size=9pt]格线)[/size][/font][/b][b][size=9pt][/size][/b]
[size=9pt][font=Calibri][/font][/size]
[b][u][font=宋体][size=9pt]数字串规律:[/size][/font][/u][/b][/color]
[b][u][color=#0070c0][size=9pt][/size][/color][/u][/b]
[font=Calibri][size=9pt][font=Calibri]1.[/font][/size][/font][font=宋体][size=9pt]数字串位数为该键位该节所压[color=red]最细[/color]的[/size][/font][size=9pt][font=Calibri]Gird[/font][/size][font=宋体][size=9pt]数乘[/size][/font][size=9pt][font=Calibri]2[/font][/size][font=宋体][size=9pt](由于[/size][/font][size=9pt][font=Calibri]#WAV [/font][/size][font=宋体][size=9pt]后面的编号由两位,如[/size][/font][size=9pt][font=Calibri]#WAV 01[/font][/size][font=宋体][size=9pt],[/size][/font][size=9pt][font=Calibri]#WAV 02[/font][/size][font=宋体][size=9pt])如[/size][/font][size=9pt][font=Calibri]1[/font][/size][font=宋体][size=9pt]号键(对应[/size][/font][size=9pt][font=Calibri]X=6[/font][/size][font=宋体][size=9pt])在第一节([/size][/font][size=9pt][font=Calibri]#001[/font][/size][font=宋体][size=9pt])压的最细的[/size][/font][size=9pt][font=Calibri]Grid[/font][/size][font=宋体][size=9pt]为[/size][/font][size=9pt][font=Calibri]4[/font][/size][font=宋体][size=9pt],则[/size][/font][size=9pt][font=Calibri]#00116[/font][/size][font=宋体][size=9pt]:后面的字串有[/size][/font][size=9pt][font=Calibri]4*2=8[/font][/size][font=宋体][size=9pt]位[/size][/font]
[size=9pt][/size]
[font=Calibri][size=9pt][font=Calibri]2.[/font][/size][/font][font=宋体][size=9pt]记录[/size][/font][size=9pt][font=Calibri]Note[/font][/size][font=宋体][size=9pt]的顺序总体上为从上向下(以一个最细[/size][/font][size=9pt][font=Calibri]Grid[/font][/size][font=宋体][size=9pt]线为单位上移),例如[/size][/font][size=9pt][font=Calibri]1[/font][/size][font=宋体][size=9pt]号键压的最细格线为[/size][/font][size=9pt][font=Calibri]4[/font][/size][font=宋体][size=9pt],则[/size][/font][size=9pt][font=Calibri]#00116[/font][/size][font=宋体][size=9pt]:后面的数字串由[/size][/font][size=9pt][font=Calibri]4[/font][/size][font=宋体][size=9pt]部分(每部分[/size][/font][size=9pt][font=Calibri]2[/font][/size][font=宋体][size=9pt]位)从上向下记录该节[/size][/font][size=9pt][font=Calibri]1[/font][/size][font=宋体][size=9pt]号键的[/size][/font][size=9pt][font=Calibri]Note[/font][/size][font=宋体][size=9pt]米粒信息。[/size][/font][size=9pt][/size]
[size=9pt][font=Calibri][/font][/size]
[/align][/font][/font][/size]
[[i] 本帖最后由 handsome8848 于 2010-8-6 23:23 编辑 [/i]] [font=宋体][size=9pt]看完这两条大家或许有些晕头转向了,下面以上图所示例子(设为[/size][/font][size=9pt][font=Calibri]#001[/font][/size][font=宋体][size=9pt])写出对应的[/size][/font][color=red][size=9pt][font=Calibri]BMS[/font][/size][/color][font=宋体][size=9pt]语言[/size][/font][font=宋体][size=9pt]:[/size][/font][size=9pt][/size]
[size=9pt][font=Calibri][/font][/size]
[size=9pt][font=Calibri]1[/font][/size][font=宋体][size=9pt]号键:对应[/size][/font][size=9pt][font=Calibri]X=6[/font][/size][font=宋体][size=9pt](见上文提到的[color=red]对应关系[/color]),最细压在[/size][/font][size=9pt][font=Calibri]Grid 4[/font][/size][font=宋体][size=9pt],故一共有[/size][/font][size=9pt][font=Calibri]8[/font][/size][font=宋体][size=9pt]位,[/size][/font][size=9pt][font=Calibri]Grid 4[/font][/size][font=宋体][size=9pt]视图如下[/size][/font]
[align=center][size=9pt][/size][/align][size=9pt][/size][align=center][img]http://bbs.chinagames.net/attachments/201008/6/284753475_1281107331jwJS.jpg[/img][/align]
[size=9pt][font=宋体][size=9pt]第一个[/size][/font][size=9pt][font=Calibri]Grid[/font][/size][font=宋体][size=9pt]无[/size][/font][size=9pt][font=Calibri]Note[/font][/size][font=宋体][size=9pt],即第一部分为[/size][/font][size=9pt][font=Calibri]00[/font][/size][font=宋体][size=9pt],第二个[/size][/font][size=9pt][font=Calibri]Grid[/font][/size][font=宋体][size=9pt]线上有一个[/size][/font][size=9pt][font=Calibri]Note[/font][/size][font=宋体][size=9pt]([/size][/font][size=9pt][font=Calibri]#WAV 02[/font][/size][font=宋体][size=9pt]),故第二部分为[/size][/font][size=9pt][font=Calibri]02[/font][/size][font=宋体][size=9pt],后[/size][/font][size=9pt][font=Calibri]2[/font][/size][font=宋体][size=9pt]个[/size][/font][size=9pt][font=Calibri]Grid[/font][/size][font=宋体][size=9pt]都无[/size][/font][size=9pt][font=Calibri]Note[/font][/size][font=宋体][size=9pt],故后[/size][/font][size=9pt][font=Calibri]2[/font][/size][font=宋体][size=9pt]个部分为[/size][/font][size=9pt][font=Calibri]0000[/font][/size][font=宋体][size=9pt],综上,记录为[/size][/font][size=9pt][font=Calibri]#00116:00020000.[/font][/size]
[size=9pt][font=Calibri][/font][/size]
[size=9pt][font=Calibri]2[/font][/size][font=宋体][size=9pt]号键:对应[/size][/font][size=9pt][font=Calibri]X=1[/font][/size][font=宋体][size=9pt](见上文提到的[color=red]对应关系[/color]),最细压在[/size][/font][size=9pt][font=Calibri]Grid 8[/font][/size][font=宋体][size=9pt],故一共有[/size][/font][size=9pt][font=Calibri]16[/font][/size][font=宋体][size=9pt]位,[/size][/font][size=9pt][font=Calibri]Grid 8 [/font][/size][font=宋体][size=9pt]视图如下[/size][/font][/size]
[size=9pt][font=宋体][/font][size=9pt][/size]
[align=center][img]http://bbs.chinagames.net/attachments/201008/6/284753475_12811073409QtT.jpg[/img][/align]
[font=宋体][size=9pt]第一个[/size][/font][size=9pt][font=Calibri]Grid [/font][/size][font=宋体][size=9pt]无[/size][/font][size=9pt][font=Calibri]Note[/font][/size][font=宋体][size=9pt],为[/size][/font][size=9pt][font=Calibri]00[/font][/size][font=宋体][size=9pt],第二个[/size][/font][size=9pt][font=Calibri]Grid [/font][/size][font=宋体][size=9pt]有一个[/size][/font][size=9pt][font=Calibri]Note[/font][/size][font=宋体][size=9pt],为[/size][/font][size=9pt][font=Calibri]02[/font][/size][font=宋体][size=9pt],第三个[/size][/font][size=9pt][font=Calibri]Grid [/font][/size][font=宋体][size=9pt]有一个[/size][/font][size=9pt][font=Calibri]Note[/font][/size][font=宋体][size=9pt],为[/size][/font][size=9pt][font=Calibri]02[/font][/size][font=宋体][size=9pt],后均无[/size][/font][size=9pt][font=Calibri]Note[/font][/size][font=宋体][size=9pt],故[/size][/font][size=9pt][font=Calibri]4-8[/font][/size][font=宋体][size=9pt]“部分”(每部分[/size][/font][size=9pt][font=Calibri]2[/font][/size][font=宋体][size=9pt]位构成)均为[/size][/font][size=9pt][font=Calibri]00[/font][/size][font=宋体][size=9pt],总计为[/size][/font][size=9pt][font=Calibri]#00111:0002020000000000[/font][/size]
[size=9pt][font=Calibri][/font][/size]
[font=宋体][size=9pt]同样可以写出[/size][/font][size=9pt][font=Calibri]3[/font][/size][font=宋体][size=9pt]号键(压[/size][/font][size=9pt][font=Calibri]Grid 16[/font][/size][font=宋体][size=9pt]),[/size][/font][size=9pt][font=Calibri]4[/font][/size][font=宋体][size=9pt]号键(压[/size][/font][size=9pt][font=Calibri]Grid 32[/font][/size][font=宋体][size=9pt])……的[/size][/font][size=9pt][font=Calibri]BMS[/font][/size][font=宋体][size=9pt]。[/size][/font][size=9pt][/size]
[size=9pt][font=Calibri]3[/font][/size][font=宋体][size=9pt]号键[/size][/font][size=9pt][font=Calibri]([/font][/size][font=宋体][size=9pt]白,[/size][/font][font=Calibri][size=9pt]X=2)[/size][size=3] [/size][size=9pt]#00112:00020000020000000000000000000000[/size][/font]
[size=9pt][font=Calibri]4[/font][/size][font=宋体][size=9pt]号键(黄,[/size][/font][size=9pt][font=Calibri]X=3[/font][/size][font=宋体][size=9pt])[/size][/font][size=9pt][font=Calibri]#00113:0002000000000000020000000000000000000000000000000000000000000000[/font][/size]
[size=9pt][font=Calibri]5[/font][/size][font=宋体][size=9pt]号键压[/size][/font][size=9pt][font=Calibri]Grid 64[/font][/size][font=宋体][size=9pt],[color=red]数字串[/color]位数则有[/size][/font][size=9pt][font=Calibri]128[/font][/size][font=宋体][size=9pt]位之多。[/size][/font][size=9pt][/size]
[size=9pt][font=Calibri][/font][/size]
[font=宋体][size=9pt]别忘了[/size][/font][size=9pt][font=Calibri]6,7[/font][/size][font=宋体][size=9pt]号键的面条,只需要将“[/size][/font][size=9pt][font=Calibri]#001YX[/font][/size][font=宋体][size=9pt]”中的[/size][/font][size=9pt][font=Calibri]Y[/font][/size][font=宋体][size=9pt]由[/size][/font][size=9pt][font=Calibri]1[/font][/size][font=宋体][size=9pt]换成[/size][/font][size=9pt][font=Calibri]5[/font][/size][font=宋体][size=9pt]即可([/size][/font][size=9pt][font=Calibri]Y=1[/font][/size][font=宋体][size=9pt]为米粒,[/size][/font][size=9pt][font=Calibri]Y=5[/font][/size][font=宋体][size=9pt]为面条),即[/size][/font][size=9pt][font=Calibri]6[/font][/size][font=宋体][size=9pt]号键(对应[/size][/font][size=9pt][font=Calibri]X=5[/font][/size][font=宋体][size=9pt],并参照[/size][/font][size=9pt][font=Calibri]1[/font][/size][font=宋体][size=9pt]号键的[/size][/font][size=9pt][font=Calibri]BMS[/font][/size][font=宋体][size=9pt]语言)为[/size][/font][size=9pt][font=Calibri]#00155: 00020000[/font][/size][font=宋体][size=9pt],[/size][/font][size=9pt][font=Calibri]7[/font][/size][font=宋体][size=9pt]号键为([/size][/font][size=9pt][font=Calibri]X=8[/font][/size][font=宋体][size=9pt])[/size][/font][size=9pt][font=Calibri]#00158: 00020000[/font][/size]
[size=9pt][font=Calibri][/font][/size]
[font=宋体][size=9pt]不妨试着写这样一段[/size][/font][size=9pt][font=Calibri]NOTE[/font][/size][font=宋体][size=9pt],用记事本打开看看是不是这样?[/size][/font][size=9pt][/size]
[font=宋体][size=9pt]同样的,如果用记事本写下这一段[/size][/font][size=9pt][font=Calibri]BMS[/font][/size][font=宋体][size=9pt]语言,用[/size][/font][size=9pt][font=Calibri]BMSE[/font][/size][font=宋体][size=9pt]打开,即可看到[/size][/font][size=9pt][font=Calibri]NOTE[/font][/size][font=宋体][size=9pt]效果![/size][/font][size=9pt][/size]
[size=9pt][font=Calibri][/font][/size]
[font=宋体][size=9pt]至此我们已经可以用记事本写无[/size][/font][size=9pt][font=Calibri]K-BMS[/font][/size][font=宋体][size=9pt]了([color=red]变速问题仍未解决,召唤神牛参与变速部分的破译工作,为何变速有两行信息[/color][/size][/font][color=red][size=9pt][font=Calibri]03[/font][/size][/color][font=宋体][size=9pt]和[/size][/font][color=red][size=9pt][font=Calibri]08[/font][/size][/color][font=宋体][size=9pt],且有些[/size][/font][color=red][size=9pt][font=Calibri]#BPM[/font][/size][/color][font=宋体][size=9pt]没有在变速列表之中?[/size][/font][font=宋体][size=9pt])[/size][/font][size=9pt][/size]
[size=9pt][font=Calibri][/font][/size]
[font=宋体][size=9pt]有人可能纳闷,费这么大劲弄这个干吗?依我看来,至少有[/size][/font][size=9pt][font=Calibri]2[/font][/size][font=宋体][size=9pt]个作用:一是自己可以开发写[/size][/font][size=9pt][font=Calibri]Note[/font][/size][font=宋体][size=9pt]的程序了(依据[/size][/font][size=9pt][font=Calibri]BMS[/font][/size][font=宋体][size=9pt]语言)可以制作出新的[/size][/font][size=9pt][font=Calibri]BMS[/font][/size][font=宋体][size=9pt]制作软件(讨论见[color=red]“四[/color][/size][/font][color=red][size=9pt][font=Calibri].[/font][/size][/color][font=宋体][size=9pt]应用之自动[/size][/font][color=red][size=9pt][font=Calibri]Note[/font][/size][/color][font=宋体][size=9pt]机”[/size][/font][font=宋体][size=9pt]);二是本文的高潮与主题[/size][/font][size=9pt][font=Calibri]---[/font][/size][b][font=宋体][size=12pt]“[/size][/font][/b][b][color=red][size=12pt][font=Calibri]BMS[/font][/size][/color][/b][b][font=宋体][size=12pt]文件数字化在压音检查中的应用”[/size][/font][/b][b][color=red][size=12pt][/size][/color][/b]
[/size]
[[i] 本帖最后由 handsome8848 于 2010-8-6 23:24 编辑 [/i]] [size=5][b]三.应用之压音检查篇:
[/b][/size]
如何将上文繁琐的BMS数字化应用在压音检查上?(注:此检查只针对由于粗心导致的错误,如下图Error 1,Error 2所示,对于抓音问题无法查出)
[align=center][img]http://bbs.chinagames.net/attachments/201008/6/284753475_12811077880600.jpg[/img][/align]
[size=3][font=宋体]首先,我们需要观察整首曲子的[u]大致[/u]最细压音[/font][color=red][font=Calibri]Grid[/font][/color][font=宋体](忽略变速处用到的[/font][font=Calibri]64Grid[/font][font=宋体]以及歌曲高潮密集处,取大部分谱面),就上图而言,如果无错误情况(见下图)[/font][/size]
[align=center][size=3][font=宋体][/font][/size][/align][align=center][font=宋体][size=3][/size][/font][/align][align=center][font=宋体][size=3][font=宋体][img]http://bbs.chinagames.net/attachments/201008/6/284753475_1281107323F7FD.jpg[/img][/align]应该是压的[/font][font=Calibri]Grid 8[/font][font=宋体](每拍[/font][font=Calibri]2[/font][font=宋体]线足矣,也就是每节[/font][font=Calibri]8[/font][font=宋体]线),以此方法观察整曲发现最细压的大致是[/font][font=Calibri]Grid 16[/font][font=宋体](一般歌曲大概都是这个,即一小节[/font][font=Calibri]16[/font][font=宋体]线,[/font][font=Calibri]NOTE[/font][font=宋体]基本都落在[/font][font=Calibri]16[/font][font=宋体]线上,某些[/font][font=Calibri]High[/font][font=宋体]歌可能大量音符排列在[/font][font=Calibri]Grid 32[/font][font=宋体]上,下面方法类推)[/font][/size]
[font=Calibri][size=3][/size][/font]
[size=3][font=宋体]然后,我们用记事本打开歌曲的[/font][color=red][font=Calibri]BMS[/font][/color][font=宋体]文件,复制到[/font][color=red][font=Calibri]WORD[/font][/color][font=宋体]中[/font][font=宋体](此举为了防止直接修改[/font][font=Calibri]BMS[/font][font=宋体]文件,要知道记事本中修改[/font][font=Calibri]BMS[/font][font=宋体]文件对[/font][font=Calibri]NOTE[/font][font=宋体]会有影响!)删去多余部分,即[/font][font=Calibri] [/font][font=宋体]“[/font][font=Calibri]*---------------------- MAIN DATA FIELD[/font][font=宋体]”之前的部分都[color=red]删去[/color],只保留数据区([/font][font=Calibri]MAIN DATA FIELD[/font][font=宋体])。[/font][/size]
[font=Calibri][size=3][/size][/font]
[size=3][font=宋体]接着进行如下[/font][color=red][font=Calibri]WORD[/font][/color][font=宋体]操作[/font][color=red][font=Calibri]:[/font][/color][/size]
[size=3][font=Calibri]0.CTRL+H[/font][font=宋体](替换),点击“更多[/font][font=Calibri]>>[/font][font=宋体]”并勾选“使用通配符”(重要!)如图[/font][/size]
[size=3][/size]
[align=center][size=3][font=宋体][/font][/size][/align][align=center][size=3][/size][/align][align=center][size=3][font=宋体][font=宋体][img=517,310]http://bbs.chinagames.net/attachments/201008/6/284753475_1281108227OY00.jpg[/img][/font][/font][/size][/align][size=3][/size]
[size=3][font=宋体][font=宋体]在“查找内容”中粘贴“[/font][font=Calibri][color=red]#0??0?:*^13[/color][/font][font=宋体]”,“替换为”保持空格状态,点击“全部替换”(注:此操作删除掉“[/font][font=Calibri]#0xx0x:[/font][font=宋体]……”的部分,即删除所有变速段,此法检查压音不考虑变速部分的压音,因为变速部分经常使用高[/font][font=Calibri]BPM[/font][font=宋体]以及密格线)[/font]
[font=Calibri][/font]
[font=Calibri][font=Calibri]1.[/font]
[/font][font=Calibri]CTRL+H[/font][font=宋体](替换)查找内容:“[/font][font=Calibri]#?????:??^13[/font][font=宋体]”[/font][font=Wingdings][font=Wingdings]à[/font][/font][font=宋体]替换为空格[/font][font=Wingdings][font=Wingdings]à[/font][/font][font=宋体]全部替换(删除掉所有压[/font][font=Calibri]Grid 1[/font][font=宋体]的部分,冒号后[/font][font=Calibri]2[/font][font=宋体]个问号)[/font]
[font=Calibri][font=Calibri]2.[/font]
[/font][font=Calibri]CTRL+H[/font][font=宋体](替换)查找内容:“[/font][font=Calibri]#?????:????^13[/font][font=宋体]”[/font][font=Wingdings][font=Wingdings]à[/font][/font][font=宋体]替换为空格[/font][font=Wingdings][font=Wingdings]à[/font][/font][font=宋体]全部替换(删除掉所有压[/font][font=Calibri]Grid 2[/font][font=宋体]的部分,冒号后[/font][font=Calibri]4[/font][font=宋体]个问号,注:[/font][font=Calibri]Grid 1[/font][font=宋体]和[/font][font=Calibri]Grid 2[/font][font=宋体]在[/font][font=Calibri]BMSE[/font][font=宋体]中没有视图,[/font][font=Calibri]Grid 1[/font][font=宋体]即为[/font][font=Calibri]1[/font][font=宋体]小节[/font][font=宋体]最多[/font][font=Calibri]1[/font][font=宋体]个[/font][font=Calibri]Note[/font][font=宋体],[/font][font=Calibri]Grid 2[/font][font=宋体]为[/font][font=Calibri]1[/font][font=宋体]小节最多[/font][font=Calibri]2[/font][font=宋体]个[/font][font=Calibri]Note[/font][font=宋体]且压在小节均分处)[/font]
[font=Calibri][font=Calibri]3.[/font]
[/font][font=Calibri]CTRL+H[/font][font=宋体](替换)查找内容:“[/font][font=Calibri]#?????:????????^13[/font][font=宋体]”[/font][font=Wingdings][font=Wingdings]à[/font][/font][font=宋体]替换为空格[/font][font=Wingdings][font=Wingdings]à[/font][/font][font=宋体]全部替换(删除掉所有压[/font][font=Calibri]Grid 4[/font][font=宋体]的部分,冒号后[/font][font=Calibri]8[/font][font=宋体]个问号)[/font]
[font=Calibri][font=Calibri]4.[/font]
[/font][font=Calibri]CTRL+H[/font][font=宋体](替换)查找内容:“[/font][font=Calibri]#?????:????????????????^13[/font][font=宋体]”[/font][font=Wingdings][font=Wingdings]à[/font][/font][font=宋体]替换为空格[/font][font=Wingdings][font=Wingdings]à[/font][/font][font=宋体]全部替换(删除掉所有压[/font][font=Calibri]Grid 8[/font][font=宋体]的部分,冒号后[/font][font=Calibri]16[/font][font=宋体]个问号)[/font]
[font=Calibri][font=Calibri]5.[/font]
[/font][font=Calibri]CTRL+H[/font][font=宋体](替换)查找内容:“[/font][font=Calibri]#?????:????????????????????????????????^13[/font][font=宋体]”[/font][font=Wingdings][font=Wingdings]à[/font][/font][font=宋体]替换为空格[/font][font=Wingdings][font=Wingdings]à[/font][/font][font=宋体]全部替换(删除掉所有压[/font][font=Calibri]Grid 16[/font][font=宋体]的部分,冒号后[/font][font=Calibri]32[/font][font=宋体]个问号)[/font]
[font=Calibri][/font]
[font=宋体]至此,剩下的[/font][font=Calibri]Note[/font][font=宋体]信息都是压[/font][font=Calibri]Grid 32[/font][font=宋体]和[/font][font=Calibri]Grid 64[/font][font=宋体]的了,即为“变速密集区”、歌曲密集区及可能的错误区(超出了普遍的压线密度),以上例说明,替换后得到的结果如下:[/font][/font][/size]
[size=3][font=宋体]
[font=Calibri]#00111:02000000000000000000000000000000020000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000[/font]
[font=Calibri]#00112:00000000000000000200000000000000000000000000000000020000000000000000000000000000000000000000000002000000000000000000000000000000[/font]
[font=Calibri]#00113:0000000002000000000000000000000000000000000200000000000002000000[/font]
[font=Calibri]#00115:00000000000000000000000000000000000000000000000000020000000000000000000000000000000002000000000000000000000000000000000000000000[/font]
[font=Calibri][/font]
[align=left][font=宋体]说明第一节的[/font][font=Calibri]1,2,5[/font][font=宋体](对应[/font][font=Calibri]2,3,6[/font][font=宋体]号键)压了[/font][font=Calibri]64[/font][font=宋体]线(有[/font][font=Calibri]128[/font][font=宋体]位),[/font][font=Calibri]3[/font][font=宋体](对应[/font][font=Calibri]4[/font][font=宋体]号键)压了[/font][font=Calibri]32[/font][font=宋体]线[/font][/align]
[align=center][img]http://bbs.chinagames.net/attachments/201008/6/284753475_12811077880600.jpg[/img][/align]
[align=left][font=宋体]与实际情况完全相符([/font][font=Calibri]6[/font][font=宋体]号键既犯了[/font][font=Calibri]Error 1 [/font][font=宋体]压了[/font][font=Calibri]32[/font][font=宋体]线,又犯了[/font][font=Calibri]Error 2[/font][font=宋体]压了[/font][font=Calibri]64[/font][font=宋体]线,取更细的线即[/font][font=Calibri]64[/font][font=宋体]线)。[/font][/align]
[align=left][font=Calibri][/font][/align]
[align=left][font=宋体]对于几十个小节,上百个小节的[/font][font=Calibri]BMS[/font][font=宋体]文件,只需要上述步骤,经过筛选即可得到压线过细(相对于整曲大致最细压线水平),即为可能的粗心摆错线的小节(问题小节)。当然,对于由于变速、或者歌曲自身原因需要压[/font][font=Calibri]32[/font][font=宋体]线、[/font][font=Calibri]64[/font][font=宋体]线的小节也会被[color=red]误判[/color]为“问题小节”,这时我们只需要[color=red]在“问题小节”中筛选出真正有问题的[/color][/font][color=red][font=Calibri]Note[/font][/color][font=宋体]即可(忽略变速、音乐密集的小节)[/font][/align]
[align=left][font=Calibri][/font][/align]
[align=left][font=宋体]有此方法,可以大大缩短[/font][font=Calibri]NOTER[/font][font=宋体]检查粗心导致的压音错误的时间([/font][font=Calibri]BTW[/font][font=宋体],也可作为[/font][font=Calibri]FF[/font][font=宋体]检查上传作品的方法之一)。需要强调的是,该方法不能检查出所有(特别是抓音不准等问题导致的)压音不准的问题。但对于检查粗心所导致的摆放错误,这无疑是一个筛选的好方法。[/font][/align]
[/font][/size][align=left][size=3]
[/size][/align][align=left][/font][/align]
[[i] 本帖最后由 handsome8848 于 2010-8-8 11:44 编辑 [/i]] [size=5][b][font=宋体]四.应用之自动[/font][font=Cambria]Note[/font][font=宋体]机[/font][/b][/size]
[b][font=宋体][size=5][/size][/font][/b]
[align=left][size=3][font=宋体]记得向[/font][font=Calibri]FF[/font][font=宋体]抱怨要是有软件检查“压音失误”时,[/font][font=Calibri]FF[/font][font=宋体]戏言:“要是自动写[/font][font=Calibri]Note[/font][font=宋体]那不更好”,通过二。理论篇的研究,我们是完全可以制造一个[/font][font=Calibri]Note Generator[/font][font=宋体]的(在变速问题没有完美解决前,至少是可以做出恒定[/font][font=Calibri]BPM[/font][font=宋体]的歌曲)[/font][/size][/align]
[align=left][font=宋体][size=3]大致思路如下:[/size][/font][/align]
[align=left][font=Calibri][font=Calibri][size=3]1.[/size][/font][/font][size=3][font=宋体]测[/font][font=Calibri]BPM[/font][/size][/align]
[align=left][font=Calibri][font=Calibri][size=3]2.[/size][/font][/font][font=宋体][size=3]用频谱分析的方法测出音所在的位置(压哪格线?)和强弱、甚至音色[/size][/font][/align]
[align=left][font=Calibri][font=Calibri][size=3]3.[/size][/font][/font][size=3][font=宋体]用随机数生成的方法即可自动生成“[/font][font=Calibri]#001[/font][font=宋体]……”这些信息[/font][/size][/align][align=left][font=宋体][size=3][/size][/font] [/align]
[align=left][font=宋体][size=3]可改进的有以下几方面:[/size][/font][/align]
[align=left][font=Calibri][font=Calibri][size=3]1.[/size][/font][/font][size=3][font=宋体]加入自动识别重复旋律的功能以实现重复旋律[/font][font=Calibri]Note[/font][font=宋体]的循环排列[/font][/size][/align]
[align=left][font=Calibri][font=Calibri][size=3]2.[/size][/font][/font][size=3][font=宋体]判别音色排列出更有规律的[/font][font=Calibri]Note[/font][font=宋体](避免纯随机)[/font][/size][/align]
[align=left][font=Calibri][font=Calibri][size=3]3.[/size][/font][/font][size=3][font=宋体]音响决定[/font][font=Calibri]Note[/font][font=宋体]个数[/font][/size][/align][align=left][font=宋体][size=3][/size][/font] [/align]
[align=left][font=Calibri][size=3][/size][/font][/align]
[align=left][size=3][font=宋体]发明是伟大的(至少像嘻哈练习曲、[/font][font=Calibri]NOF[/font][font=宋体]等很有规律的曲子跑个程序就能出一套[/font][font=Calibri]Note[/font][font=宋体])然而,有了[/font][font=Calibri]Note Generator[/font][font=宋体],咱这些[/font][font=Calibri]Noter[/font][font=宋体]还享受什么乐趣呢?[/font][/size][/align][align=left][font=宋体][size=3][/size][/font] [/align]
[align=left][font=Calibri][size=3][/size][/font][/align]
[font=宋体][size=5][b]五.结论[/b][/size][/font]
[b][font=宋体][size=5][/size][/font][/b]
[align=left][size=3][font=宋体]本文通过对[/font][font=Calibri]BMS[/font][font=宋体]文件的数字化研究,得出了检查“压音失误”的有效方法,可以有效提高[/font][font=Calibri]Noter[/font][font=宋体]检查[/font][font=Calibri]Note[/font][font=宋体]排列失误的效率,同时提出了自动[/font][font=Calibri]Note[/font][font=宋体]机[/font][font=Calibri](Note Generator)[/font][font=宋体]的构想(有点[/font][font=Calibri]Crazy[/font][font=宋体])。[/font][/size][/align][align=left][font=宋体][size=3][/size][/font] [/align]
[align=left][size=3][font=宋体]最后,感谢[/font][font=Calibri]CCTV[/font][font=宋体],感谢浆糊论坛,感谢[/font][font=Calibri]FF[/font][font=宋体]大大,祝大家的[/font][font=Calibri]NOTE[/font][font=宋体]越写越好[/font][font=Calibri]~[/font][font=宋体]红名作品越来越多[/font][font=Calibri]~[/font][/size][/align][align=left][font=Calibri][size=3][/size][/font] [/align]
[align=left][font=Calibri][size=3][/size][/font][/align]
[align=left][size=3][b][font=宋体](就本文有任何问题与想法,欢迎联系[/font][color=red][font=Calibri]QQ拍砖[/font][/color][/b][b][font=宋体],[/font][color=red][font=Calibri]QQ[/font][/color][/b][b][font=宋体]:[/font][color=red][font=Calibri][/font][/color][/b][b][font=宋体])[/font][color=red][/color][/b][/size][/align]
[align=left][b][color=red][font=Calibri][size=3][/size][/font][/color][/b][/align]
[align=left][b][color=red][font=Calibri][size=3][/size][/font][/color][/b][/align]
[align=left][b][font=Calibri][size=3][/size][/font][/b][/align]
[align=right][b][size=3][font=Calibri]handsome8848[/font][/size][/b][/align]
[align=right][b][size=3][font=Calibri]2010.8.6[/font][/size][/b][/align]
[[i] 本帖最后由 handsome8848 于 2013-8-19 16:35 编辑 [/i]] 拍砖 自动机其实我并不赞成,不过提高效率倒是很值得支持(这两者概念是不同的,人可以稍微偷点懒,不过超过一个“度”的话肯定要出事)
这篇文章还是很新颖的,加精了,希望LZ加油做出好的BMS:) 技术性很强 不过貌似用不到哎 好复杂 不过应该支持一下技术贴 。。。。东西少没有问题。。。东西多了以后。。。很复杂的说。。。昨天我用程序生成BMS,结果这个编码我足足复制了5分钟。。。。 - -嘛嘛,GUI本身就是开发人员为使用者创造的工具.就像PS是艺术家的工具一样,不可能所有人都是程序员的,研究源码与制作BMS并没有太多关系,最重要的不是用什么工具,而是找到可以尽情发挥的方法. 这文章有个很大的漏洞。
[url]http://www.o2mania.com/4_Download/8_BMS_Music/20098/Soft200907220005977.htm[/url]
别人的BMS我不清楚,这是我去年做的忍者神龟3,请用你的“快速检查方法”对此BMS进行一次检查,你就明白文章的漏洞在哪了。
实际检查压音,还得靠放慢。文章中的这个方法仅仅适用于BPM完全恒定且旋律变化反差很小的一部分曲子。可以说适用范围极小。
如果审核单单用此方法会很容易造成大量的冤案错案假案。
当然,作为技术帖,值得鼓励,有认真研究的心态,这是很好的。
不过方法的可用性和可行性就值得商榷了。
[[i] 本帖最后由 Bombtrack 于 2010-8-7 19:55 编辑 [/i]]
回复 #10 Bombtrack 的帖子
拜读过您关于这歌的测BPM的帖子,我感觉这首歌属于比较另类的吧,测个BPM都用了您所说的3种方法,此文方法不适用也似乎在情理之中。这篇文章提出的方法具有一定的普遍使用性(毕竟一般的曲子BPM不会经常浮动),特别是对于新手和压音效率有很大帮助,由于某些个案而否定了此方法似有不妥。
当然了,放慢速度来检查压音乃是根本方法,并不与此文冲突,本文提出的是快速检查(强调效率)由于粗心所犯的压音错误(手一抖放错了线等情况)
欢迎继续讨论~ 社友者(37969986) 19:54:01
还有一点,RO的变速经常是移动NOTE的,而且经常出现64线甚至192线的NOTE
社友者(37969986) 19:54:28
碰到这种,他的“快速检查压音法”也是无能为力
道·Freefire(183203079) 19:55:34
所以本来就是新手用的
道·Freefire(183203079) 19:55:43
当时我跟他说起过这个的
道·Freefire(183203079) 19:55:56
不过如果只是以提高效率来说的话,也勉强可以吧
社友者(37969986) 19:56:02
也不行的
道·Freefire(183203079) 19:56:07
你一个个检查,这样跳跃起来快写
道·Freefire(183203079) 19:56:25
就像word里的查找一样,不一定查找的都是你的不表,不是的话就跳过去就行了
道·Freefire(183203079) 19:56:39
毕竟大多的地方还是比较规律的
社友者(37969986) 19:56:45
毕竟他是以记事本来检查,从记事本的代码转到BMSE的小节,又得花大工夫去找
道·Freefire(183203079) 19:57:13
这方法发明者自己用或许还不错
道·Freefire(183203079) 19:57:20
别人用的话可能就不适应了
社友者(37969986) 19:57:29
你就算找到有几个是不合规律的,还得用BMSE再进行确认
再者,这只能针对无变速或纯A类变速的BMS
社友者(37969986) 19:58:03
有这工夫一点一点找,我MANIA放慢2次看都整曲看完了
道·Freefire(183203079) 19:58:33
那得看曲子有多长了
社友者(37969986) 19:58:41
以技术帖来说,这帖写得是有创意
但是从可行性来说,太低
道·Freefire(183203079) 19:58:43
这个方法某种场合还是很适用的
道·Freefire(183203079) 19:59:09
越是时间长,BPM稳定的曲子就越实用
社友者(37969986) 19:59:19
就是这某些场合具体是多大的场合
实际上据我看来,5个曲子有1个都不错了
社友者(37969986) 19:59:40
因为现在的投稿很少出现完全没变速的
道·Freefire(183203079) 19:59:43
从总体投稿的BMS来看的话,应该远远不止
社友者(37969986) 19:59:51
一碰到变速的,这办法就行不通了
道·Freefire(183203079) 19:59:53
只能说,如果是RO的话,估计没啥用
道·Freefire(183203079) 20:00:13
包括DB这种比较喜欢渐进缓冲变速的
社友者(37969986) 20:00:34
就说新手的变速吧,新手不会用RO那种级别的变速,我就简单举例,某个地方旋律缓慢,新手整体来个0.5倍BPM,这怎么办
道·Freefire(183203079) 20:01:30
那段直接跳过就行了
道·Freefire(183203079) 20:01:35
做的人应该自己有数的
社友者(37969986) 20:01:48
所以你还得去查这段对应在记事本里是什么位置
道·Freefire(183203079) 20:01:54
不过如果在0.5BPM的段落出现压音问题的话,就不行了
社友者(37969986) 20:02:02
是啊
道·Freefire(183203079) 20:02:02
我先重启
社友者(37969986) 20:02:16
所以说实用性太低 "毕竟他是以记事本来检查,从记事本的代码转到BMSE的小节,又得花大工夫去找"
上文提到的方法是“用笔记本打开BMS文件,然后在WORD中剔除到只剩下压64线,128线”,[color=red]剔除[/color]后剩余的结果为#0xy????:的形式,其中XY即代表所在小节,直接在BMSE中查看即可,本文提出的方法没有在“不使用BMSE”的条件下呀,只是为了方便查找需要检查的、可能出错的小节。不信的话您可以拿一首变速不太多的歌曲实验一下,由于可以成片跳过剔除结果(如变速段、高潮段),检查效率其实是挺高的。
至于所说只有发明人会用,就此问题特别在3L总结了使用方法,可以不必透彻研究理论,按照3L的方法操作几步WORD即可知道出现问题的小节,何乐而不为呢?
另,我有一点疑问,传说中RO的超级变速难道变完了不压小节线的吗?如果变完了还是要[color=red]压小节线[/color],我们要做的只是[color=red]检查的时候“跳过变速段”,[/color]文中已经提到,此方法不检查变速度(因为经常压高线)的错误!当然,如果变完速不压小节线,后面的NOTE全排在64,128线上,那就无能为力咯~
综上,我认为在一个“规律的歌曲”(变速不太多)和规律的BMS writing(对齐小节线)情况下,该方法还是可以起到一定作用的~
当然,如果习惯了用放慢速度检查的方法,那也是可以的~
打个不太恰当的比方,原子弹和小刀都可以杀人,原子弹杀人速度快但精确度可能有所欠缺(不能解决所有问题),小刀可以一个一个杀(精确)但是效率低,喜欢那种杀人方式任君选择~ 再提出一点疑问:文中提到的两种Error 靠“放慢速度”似乎难以听出!
以BPM 100的歌曲为例,每一小节0.6秒,Error 2这种错误引起的误差是1格64线,也就是0.6/64约为0.01秒,Error 2引起的误差为1格32线,约0.02秒,不知道要放慢到什么样的速度才能察觉出0.01秒数量级的误差呢?(不知道0.1速能否看出,也就是视听之间有0.01(~0.02)/0.1=0.1(~0.2)秒的误差,话又说回来,一首5分钟的歌用0.1速听一遍可是50分钟)
是以,我认为对于这两种粗心所导致的误差,还是本文提出的方法比较适用,而放慢速度的方法,恰是对付本文没有涉及到的错误(如抓音不准等),望指正 应该说两种方法各有利弊吧,不过不论是哪种方法,用得熟练的人一般很快直接扫一遍就能看出来了
小B的那种放慢方式说的也不全面,事实上尤其像Rock里那种电吉他的面条音在放慢的情况下更难听出来,(面条收尾音就更不用提了),而LZ你这个方法的局限刚才也提到的,就是不适用于不规则的变速。
至于恒速下,哪怕是一段0.5倍变速段中,如果这个方法用的得当的话,自己显然也可以辨认的,毕竟是自己的作品,大概在什么地方会出现怎么样的“信号”应该有数的,反之,如果是检查别人的问题那么又另当别论了。
关键还是个习惯问题,如果新人看了这篇文,觉得很能接受并且会投入使用的话,这也绝对是件好事呢~ [quote]原帖由 [i]handsome8848[/i] 于 2010-8-8 08:45 发表 [url=http://bbs.rohome.net/redirect.php?goto=findpost&pid=11910438&ptid=1048409][img]http://bbs.rohome.net/images/common/back.gif[/img][/url]
再提出一点疑问:文中提到的两种Error 靠“放慢速度”似乎难以听出!
以BPM 100的歌曲为例,每一小节0.6秒,Error 2这种错误引起的误差是1格64线,也就是0.6/64约为0.01秒,Error 2引起的误差为1格32线,约0.02秒,不知道要放慢到什么样的速度才能察觉出0.01秒数量级的误差呢?(不知道0.1速能否看出,也就是视听之间有0.01(~0.02)/0.1=0.1(~0.2)秒的误差,话又说回来,一首5分钟的歌用0.1速听一遍可是50分钟)[/quote]
对于BPM100的4/4拍歌曲, 每一小节是[b]2.4秒[/b], 类似Error2的错误引起的误差是0.0375秒, 类似Error1的错误引起的误差是0.075秒.
用半速来检查的话, Error1这样的错误会引起0.15秒的误差, 很明显的.
[[i] 本帖最后由 Farseeker 于 2010-8-8 20:33 编辑 [/i]]
回复 #16 Farseeker 的帖子
不好意思,算时间的时候忘了每小节有4拍~不知道0.15秒的误差以及0.075秒的误差能否看得出来,要知道这是放慢速度后还有0.15秒:)
人类视觉分辨最短时间大概是1/11秒吧?0.15秒可能有点玄~ 况且还有个听觉到视觉的传递过程。。。 [quote]原帖由 [i]handsome8848[/i] 于 2010-8-8 21:27 发表 [url=http://bbs.rohome.net/redirect.php?goto=findpost&pid=11912195&ptid=1048409][img]http://bbs.rohome.net/images/common/back.gif[/img][/url]
不好意思,算时间的时候忘了每小节有4拍~
不知道0.15秒的误差以及0.075秒的误差能否看得出来,要知道这是放慢速度后还有0.15秒:)
人类视觉分辨最短时间大概是1/11秒吧?0.15秒可能有点玄~ 况且还有个听觉到视 ... [/quote]
不了解你所说的 "1/11秒" 的数据, 请给出数据的出处~ 我了解的数据是1/24秒.
如果你所说的 "人类视觉分辨最短时间" 指的是视觉暂留的时间, 那么不用担心视觉暂留现象的影响~ 原因是这样的:
Note下落的时候, 它在某一时刻t具有的影像会 "留" 在我们眼中一段时间, 设这个影像的坐标为y. 其后的t+Δt时刻, 这个Note具有的影像变了位置, 设新位置的坐标为y'. 因为Note在Δt时间内做了运动, 所以y和y'并不相等, "留" 在眼中的影像y并不会妨碍我们观察影像y'.
也就是说, 视觉暂留现象并不妨碍咱们观察Note是什么时候落到红线上的.
实践上看, BPM在120左右的歌, 1/32小节的误差确实挺明显的~ xD
也许多做两首歌就适应了吧. 我感觉, 做BMS, 经验真的很重要~ 除了经验,悟性更重要。我做了50多还是一点进步都没有。 [quote]原帖由 [i]Farseeker[/i] 于 2010-8-9 21:41 发表 [url=http://bbs.rohome.net/redirect.php?goto=findpost&pid=11915528&ptid=1048409][img]http://bbs.rohome.net/images/common/back.gif[/img][/url]
不了解你所说的 "1/11秒" 的数据, 请给出数据的出处~ 我了解的数据是1/24秒.
如果你所说的 "人类视觉分辨最短时间" 指的是视觉暂留的时间, 那么不用担心视觉暂留现象的影响~ 原因是这样的:
Note下落的 ... [/quote]
学习了~:) 平时使用16格线不就没事了?
干嘛自找麻烦去用那么密的格线?又不是在变速
话说楼主的帖我能完全明白,因为我曾经深入研究过笔记本与BMSE之间的紧密联系。
笔记本还能让你知道你的变速有没有溢出等问题。
顺便说我习惯吧MP3用WAV2 表示,然后用WAV1 和WAV3 分别代表米粒/面条开头 和 面条结尾。 太棒了!
分析得如此透彻,以后直接看你的研究成果,这可为我省了不少时间哦 :)
留个爪印先 已收录在Mania技术贴中
[url=http://bbs.rohome.net/thread-904145-1-1.html][color=red][b]★☆ BMS 技术贴总览 ☆★[/b][/color][/url]
这篇论文写的很认真,图文并貌,作者用心可见一斑,虽则有些许争议,不过艺术之路本身就没固定的方法,只希望对后人有用。
感谢支持我们共同的BMS爱好,一起加油吧~
[[i] 本帖最后由 Freefire1943 于 2010-9-13 08:45 编辑 [/i]] 我想知道这个方法对FF的极速+写字是否可行。。。。 不实用。有这样的时间放慢也对完了,还能顺便测试下手感
页:
[1]