木星劲乐团

 找回密码
 立即注册
搜索
查看: 2461|回复: 0
打印 上一主题 下一主题

[教程类] CRS论文-优雅的变速[上篇]

[复制链接]

管理员

有问题加我qq/微信:1844502392

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

UID
64
主题
648
帖子
1682
金钱
6557
积分
11570
在线时间
5180 小时
注册时间
2013-8-18
跳转到指定楼层
楼主
发表于 2020-4-18 01:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
【全文转自浆糊论坛,不代表本人观点】
【本文作者:CRS
【原文链接:http://bbs.rohome.net/thread-920309-1-1.html




优 雅 的 变 速[上篇]



初级篇
第一章:变速的分类及bpm与格线的定义
第二章:A类变速的基本原理
第三章:B类变速的基本原理

中级篇
第四章:A类变速的一般式函数方程及其函数图形
第五章:A类变速的Excel变速方程表及其运用
第六章:B类变速的Excel格线变速表及其运用

高级篇
第七章:C类变速的应用之A类变速的等时点
第八章:A类变速的比时点与B类变速的联系
第九章:C类变速的应用之复合式B类变速

超级篇
第十章:简单的复合式A类变速
第十一章:复合式A类变速与复合式B类变速的等效应用

究级篇
第十二章:变速的可视性效果与播放器的关系
第十三章:变速的值域选择与格线的动态分配

终级篇
第十四章:变速的微分和微分变速的制作
第十五章:其它变速和变速的制作规律

无级篇
第十六章:变速与音乐的艺术融合

前言

Bms音乐游戏中的变速是一种加速减速效果,是bms制作中很重要的一部分。它的艺术效果可以很好地配合音乐和键型,使得bms更加的美妙。这里的变速是指在bms中,同行的键的以不同的速度下落。所谓同行,就是指在同一个水平线上的键。bms文件本身无法实现各轨的分轨变速,而mania里面的“4D notes”特效就是每个轨道一个速度的分轨变速的一种特例。另外,bms也无法实现0速和负值速度(就是键往回走-_-)。这些变速在此仅提及,不讨论这些。下面分层次探讨bms优雅的变速。


    



第一章:变速的分类及bpm与格线的定义

Bms里的变速大致分为三类,这里以ABC区分。

A类变速是我们最常用的变速,可以说是纯粹的视觉变速,处理对象通常以一行键为单位,使其掉落之前呈现快或慢的视觉效果,并且变速过程中没有其他的键落下。A类变速不会影响键在格线中的位置,所以也可以叫做非变格变速
B类变速是整体的变速,也是很常用的一种,处理对象通常是一串键或者是很多行键,使它们整体的速度与原速度不同,而是使用一个新的不变的速度掉落,变速过程中可以有很多键。B类变速会影响键在格线中的位置,所以也可以叫做变格变速
C类变速是AB两类变速的混合体,既有整体变速也有某行键的视觉变速,比较复杂,也是很多初学者不易掌握的变速方式。C类变速会影响键在格线中的位置,也会限制视觉变速的取值范围,我们可以叫它混合变速

BPM的意思就是Beat Per Minute,每分钟的节拍数。如120bpm的歌曲就是每分钟120拍,而4=1小节,也就是说每分钟有30小节。反过来算,就是1=1/2秒,1小节=2秒。从这里可以推理出一个公式:


1=60/bpm()

用这个公式我们可以算一下贵族ⅢSHDbpm150)最后一段秒杀的难度:
一拍=60/150=0.4秒,而键用的是64线,也就是说一拍里面有16行键只用了0.4秒,就算是只按一列的键,那么就是16/0.4=40,要有1秒种点40下的手速,人类是不可能的。这个公式在bms制作的其他领域可能会用到,这里不详细介绍。

bmse编辑器里的格线是衡量键距的标准,为了更清楚地定义格线的种类,请看下面的图例:
1
分割小节的叫做小节线也就是1线,也就是4拍;
1/2音符的线叫做2线,也就是2拍;
1/4音符的线叫做4线,也就是1拍;
1/8音符的线叫做8线,也就是1/2拍;
1/16音符的线叫做16线,也就是1/4拍;
1/32音符的线叫做32线,也就是1/8拍;
1/64音符的线叫做64线,也就是1/16拍。

我们做歌最常用的制作背景是16线的,图中就是如此。另外还有36122448的格线,原理是一样的,主要用作3拍子的歌和变速中运用,大家应该都理解。值得一提的是“FREE”这个格线并非free,其实它是把64线再分为3格,也就是192线,它的用途不只是做BT歌曲,有些变速是需要用到它的,后面会介绍。

下面几章将分类介绍这三种变速,讨论的话题也将由浅入深。


第二章:A类变速的基本原理

首先,我们回顾一下初中的物理知识,来做一道关于走路的问题。

【例1】如图,两地之间有一段直线路程S,现在要求路人甲用T的时间匀速走完,请问他是速度应该为多少?

2
【解答】:速度=路程/时间
V=S/T


【例2】如图,两地之间有一段直线路程S,现在要求路人乙用T1的时间匀速走完S1的路程,再用T2的时间匀速走完S2的路程,S=S1+S2,请问他在S1路程中的速度和S2路程中的速度各是多少?平均速度是多少?

3
【解答】:速度1=路程1/时间1
V1=S1/T1

速度2=路程2/时间2
V2=S2/T2

平均速度
=
总路程/总时间
V=(S1+S2)/(T1+T2)=S/T


Bms的变速就类似上面的走路问题。Bms文件最终由播放器(如mania等)来读取。读取的方式我们可以看作是由红色标准线由下往上顺序读取,可以比作红色标准线在谱面上由下往上走。如读不到bpm也就是速度指令,那么按照原来的速度读取,开始的速度如果不写就默认为bmse里编写的速度为初速度。有了这种比喻,我们可以轻松的把bmse里的读取与走路问题联系起来:
S就是bmse里面的格线,V就是bpmT就是走过这段格线所需要的时间,如图
  4    5
由以上例题,我们可以清楚地看出SVT三者之间的关系。在bms中,键的T是常量,也就是说键原本应该什么时候到达标准线,变速后仍然是那个时间到线,不会因为变速而导致后面的键不对音。T为常量,而T=S/V,也就是说S/V是常量。由例2我们可以知道,T=T1+T2T1=S1/V1T2=S2/V2,所以我们可以得到以下方程:
S/V=S1/V1+S2/V2

在例2中,如果V1=V2,那么就是变速的特例(其实就是没变速-_-),我们研究时一般都默认V1V2。在上面两个图中,图5是图4的变速效果,我们可以计算一下两种速度的T
S为格线,我们可以有几种看法:
1)把总体看作1,那么S=1S1=1/4S2=3/4
2)把总体看作4,那么S=4S1=1S2=3
3)把总体看作8,那么S=8S1=2S2=6
4)把总体看作16,那么S=16S1=4S2=12
5)把总体看作32,甚至是64……
我们选哪一种呢,最好的选择是2),也就是格线数为整数且无公约数的一组
V为格线开始处的bpm也就是V=120V1=60V2=180
T=S/V=4/120
T1=S1/V1=1/60
T2=S2/V2=3/180
通过计算我们可以验证T=T1+T2,所以证明了以上方程S/V=S1/V1+S2/V2

了解了变速的原理,我们开始自己制作一个变速吧,以最常见为例:

【例3】有两行键,要求在第一个键按下之后,给予第二行键变速,第二行键按下之后回归原速,原bpm=120,目标变速效果为:将原速分为两速,先慢后快。具体如图:
  6
【解答】要求变速的是第二行,也就是我们研究的工作区域是第一行与第二行之间的格线,也就是416线,也就是我们所说的S区域。速度V=bpm=120为变速前速度。然后我们开始变速,先慢后快意味着V1<V<V2,按照通常变速的思路,我们可以选择S1<S2<S,也就是用慢速走完一小部分路程,用快速走完一大部分路程。下面我们来确定格线,按照格线的选择规律及计算方便,我们设S=4S1=1S2=3。然后我们确定分速度,按照简单的变速习惯,我们设慢速V1=1/2V=60。将以上速度带入方程S/V=S1/V1+S2/V2,我们可以得到:
4/120=1/60+3/V2

解方程得,V2=180
写入bmse后如图:
  7
记得要在变速后,也就是第二行键边上写上原来的速度,也就是bpm=120所谓变速,变的是键落到红色标准线之前的速度,而一旦变速完毕,也就是键到红色标准线的时候,如果下行键没有变速,那么记得速度归位为原来的bpm

做完这题,聪明的你一定有一个想法,为什么我们要选择S1=1S2=3?为什么变速的V1要选择60?这道题的解答应该有很多种才对。
没错,对于这种变速而且,答案可以有无数种!我这里只是举出了最常见的一种而已,至于其他的答案,大家可以自己试试,在后面的篇章中我将会详细介绍各种答案之间的关系。在这里就这一题,我再给出两个比较特殊的解答:
  8
  9
(图8中被“210”遮盖的bpm值为“30”,格线为32线)

以上两个解答仍然符合题目的要求,大家可以尝试一下带入公式计算,至于怎么算来的,以后会给予讲解。


第三章:B类变速的基本原理

【例4】如图,现在有总时间T,现在要求路人甲用V的速度匀速行走,请问他能走多远的路程S?如果用(1/2)V的速度,请问S1是多少?如果用2V的速度,请问S2是多少?
【解答】路程=速度×时间
S=VT


S1=(1/2)VT


S2=2VT



10
由图可以看出S=2S1=(1/2)S2,因为S=VT,当T恒定的情况下,SV成正比。
Bms里的B类变速就是这种情况,与其是变速不如说成是加速或者减速更为合理。下面我们把例4的情况运用到bms里:
  11    12    13

以上三个图中以各自bpm走完各自的路程所花费的时间是相等的,也就是说我们在T恒定的情况下,选择与原速不同的速度来前进,从而影响到了格线的数量,且bpm与格线成正比。由此我们可以得到方程:


S1/V1=S2/V2

下面我们运用这个方程来做一个变速题:
【例5】原速为120的两小节键,现在要求降一半速来排列。
  14
【解答】原速V1=120S为键走过的格线数,这里怎么看呢?先看需要变速的所有键所占的格线数,也就是2个小节线,或者看作8个节拍线(也就是4线),或者看作3216线,由于我们要看的是总体,所以看作2个小节线比较好,也就是说S1=2。题目要求V2=(1/2)V1=60,根据公式S1/V1=S2/V2,可以算得S2=1。因为刚才我们算的是总体的格线,也就是说这里算得的S2是整体的S2,就是所有的键都在1个小节线里。下一步确定每个键所占的格线,重新确定各数值。根据上面的方法可以确定每个键占216线,S1=2V1=120V2=60,带入公式可以算得S2=1,也就是说这里算得的S2是一个键的S2,即每个键占216线。由此我们可以写入bmse如图:
  15
如果这样写速度,下一小节的速度仍然为60,如果下一小节需要恢复原速,记得要在第二小节重新写入原速。就这一题我们可以举一反三,也可以用逆向思维来看待。如果题目要求把图14的键加速2倍,那么解答就是图13,计算方法是类似的。其实这题这样的的变速计算简单,主要成倍数关系,所以多做几次不用带公式就会知道怎么做了。当然B类也会有复杂的,在后面会做详细介绍。

    



第四章:A类变速的一般式函数方程及其函数图形

第二章我们介绍了A类变速的基本原理,但是很多问题仍然存在,在最通常的慢快变速种,我们怎么来定bpm的快慢值,怎么确定格线,除了一些特殊的简单的变速方法之外,有没有其他的更为普遍的定量方式呢?答案是有,这就是CRS研究出的A类变速的一般式函数方程,下面详细为你介绍,要认真看哦!
上面我们研究出的方程S/V=S1/V1+S2/V2其实就是一般式,但是这是从走路的问题上得到的,我们学会了基本的变速,就可以把其中的一些量直接换作与bms里的量了。
S为总格线,我们换作字母A来代替;
V是原速度,我们就用bpmB来代替;
S1为第一变速的格线,我们用字母m来代替;
S2为第二变速的格线,我们用字母n来代替;
V1是第一变速的速度,我们设为X
V2是第二变速的速度,我们设为Y
带入原来的公式,得到以下一般式函数方程:
A/B=m/X+n/Y

(A=m+nX>0Y>0A>0B>0m>0n>0Amn为正整数)


方程共6个量,B为常量,其他的5个量均为变量,而这5个量中的Amn由我们来定,但是仍然可以变化,XY是我们最终要求得的值。
由此我们可以画出其函数曲线图:

16

图形其实还是比较复杂的,我们可以看出是一个以45角为中心线的对称曲线,其中有一些特殊点和区域这里需要详细说明一下:

顶点(BB:也就是说V1=X=BV2=Y=BV1=V2,这就是最特殊的等速点,也就是说第一速与第二速相等,相当于没有变速。
值域(Y>X:即顶点左边的区域,此时V2=YV1=XV2>V1,就是第二速大于第一速,即先慢后快。
值域(X>Y):即顶点右边的区域,此时V1=XV2=YV1>V2,就是第一速大于第二速,即先快后慢。
X极限点(mB/A+∞):就是X的极限最小值,此时A/B=m/Xn/Y=0,因为n>0,所以Y是无穷大。这就相当于X以第一速度走完它的格线已经花费了所有的时间,Y必须以无穷大的速度才能走完剩下的格线。其实这一点是取不到的,但是可以无限逼近,所以图中是虚线表示,就是说当X接近mB/A时,Y的速度可以很大。
Y极限点(+∞,nB/A:就是Y的极限最小值,此时A/B=n/Ym/X=0,因为m>0,所以X是无穷大。这就相当于X要走过他的格线但是所拥有的时间却是0,所以速度必须是无限大,然后Y以第二速度走完剩下的格线。其实这一点也是取不到的,但是可以无限逼近,所以图中也是虚线表示,就是说当Y接近nB/A时,X的速度可以很大。

有了函数方程,又了解了其曲线特征,我们就可以更清晰地了解变速。以上是数学上的理论,拿到bms中还需要一些附加的条件。
bms中,bpm的值不是在任何情况都可以取很大的,因为这牵涉到bms的判定问题。bpm值越大,判定就越高。具体为什么这里不详细讨论,但是这提醒我们制作变速的时候,要考虑到这一点。一般来说,制作普通的A类变速时,变速后的所有的bpm值最大不要超过原bpm值的4只有一种情况可以使用很大的甚至上千(极限是65536,否则文件无法给播放器识别)的bpm值,就是空变速,这种变速在ABC三类变速中都会有,后面会介绍。


第五章:A类变速的Excel变速方程表及其运用

上一章我们研究出的一般式方程A/B=m/X+n/Y中,除了Bbpm定值以外,其余的Amn由我们确定,最后再确定XY其中的一个值,就能最终确定所有的量。

【例6】有两行键,要求在第一个键按下之后,给予第二行键变速,第二行键按下之后回归原速,原bpm=160,目标变速效果为:将原速分为两速,先慢后快。具体如图
  17
【解答】B=bpm160;而其中的A很容易确定,就是两行键之间的格线数,可以为416线),也可以是832线),而A的最终确定要看mn的取值;关于mn的大小关系也是很有讲究的,一般情况下为了保证分速度与原速的差异感,我们选择慢的取小,快的取大,也就是慢速V1对应的m取小,快速V2对应的n取大(m>nm=n的情况会在后面的篇章中讨论),最终确定要看A的值。下面问题就是Amn怎么取的问题了,因为它们是相互的。
按照m<n的前提,
A=4m=1n=3
A=8m=1n=7m=3n=5
A=8m=2n=6的情况排除,因为它等效于A=4m=1n=3
A=1632时,mn也都有相应的值可以选择,这里不一一列出。
其实A=4A=8是我们最常用的两种情况。尤其是A=4m=1n=3的情况最为普遍,号称“平民变速”,稍微会点变速的人都会。
我们这里取A=8m=1n=7来研究。这样ABmn四个数值都有了,最后只要确认X的值就能知道Y的值了。CRS就此做了一个Excel函数方程表格,可以很轻松的帮你计算XY的值。表格如下:





18



它的操作很简单,就这一题我们只需把B=160A=8m=1输入黄色区域,然后这组变速的nX极限点,Y极限点都会自动计算出来。更重要的是,表格中已经列出了一些X的值,从1开始的整数,所以第二分速度Y的值自然也就确定下来了。下面是写入后的表格:




19



为了减少误差,我们最好选择XY都为整数的值,这也是为什么要先列出X的原因。又因为Y的值不能过大,所以我们可以选择X=30Y=420这样的组。当然(30420)与(34340)的视觉感觉是不一样的,至于选哪个最好就要根据歌曲本身的属性来看了,如果歌曲需要很强的变速崩发感,就选择XY差异较大的一组,如果只是轻柔的变速,就选择差值小一点的一组。当然你也可以不选择都是整数的,取小数bpm所造成的误差其实也很小,一般我们取小数点后2位就足够了。对于原bpm值为小数的歌曲,我们可以自己确定X的值,写入绿色区域,可以为B值的1/21/4等等,这样算出的Y值有时会是有限非循环小数,就可以精确取值了。如果X的整数域不够,可以把各列用“+”保留函数往下拉。还要注意的是,函数过了(BB)点之后,m所对应的V1会比n所对应的V2要大,也就是说m<n但是V1>V2的情况,这就与我们当初先慢后快的条件所违背,所以我们不取这些值。那么要做先快后慢的变速时候,我们同样可以看成先慢后快,算出各自的数值之后再把顺序颠倒过来就可以了。

依照变速方程表的计算,我们最终的答案有无数种,当A=8m=1n=7的时候也有无数种,以下列出其中的2种:
  20
(图20中被“340”遮盖的bpm值为“34”,格线为32线)
  21
(图21中被“280”遮盖的bpm值为“40”,格线为32线)

如果题目要求是先快后慢,那么仍然可以按照先慢后快的方式计算然后颠倒顺序,也可以直接重新定义mn的值计算,最终效果是一样的,图21如果改成先快后慢的话效果如下:
  22
(图21中被“160”遮盖的bpm值为“40”,格线为32线)

熟练地运用CRS变速方程表可以节省你大量的变速计算时间,提高bms制作的效率,它会成为和uBMplay一样必不可少的bms制作工具。表格种的“等时点”即“比时点”也是非常重要的,它的作用是制作C类变速,后面会详细介绍。


第六章:B类变速的Excel格线变速表及其运用

在第三章中,我们介绍了B类变速,也就是变格变速的的基本原理及简单应用。以bpm的半速或者两倍速进行的变速是最常用的一种,相对应的V1=(1/2)VV2=2V,其变速前后的相互关系为2的整次方数倍,就是2416等倍数关系。一般的情况下,这样的变速对于以小节为整体的键来说,变速后恢复原速的时候可以保证下面的键在新的小节线上。

【例7】一首bpm=160歌曲中的4个小节(从图最下面的小节开始)需要半速变速,要求变速后的小节恢复原速,且要求对齐小节线。
  23
(图23中的最小格线为16线,键的位置在4线上)

【解答】V2=(1/2)VS2=(1/2)S
  24
(图24中的最小格线为16线,键的位置在8线上)

如果题目要求是加倍变速的话,那么整体键所占的小节为4小节,每个键的位置在2线上,可以用bmse自己试试。

下面我们来看B类变速的另一个方法,运用其他的格线来制作。

【例8】一首bpm=150歌曲中的1个小节中所有的键需要加速变速,不考虑变速后的对线问题。如果加速后的速度不能超过450,那么有几种变速方法?

  25

【解答】B类变速的一个最重要的要求是,所有键变速后都要在格线上,简称为对线。我们来分析一下各种变现对应的速度关系:
首先我们要确定原键所占的格线,由于我们要进行的是各种格线的应用,所以我们不仅要看总体的格线,还要考虑每个键所占的格线。就图24,我们可以看出总体键共占1小节也就是4拍,设为S1;而每个键所占的是一个16线格,设为s1
假设加速2倍,S2=2S1=2小节=8拍,s2=2s2=216线=18线
假设加速3倍,S2=3S1=3小节=12拍,s2=3s2=316线
假设加速1.5倍,S2=1.5S1=1.5小节=6拍,s2=1.5s2=1.516线=332线
假设加速2.5倍,S2=10拍,s2=532线
……
下面是1.5倍速情况下的图形:
  26
(图26中的最小格线为32线,键的位置在32线上)

那么这题的答案是无数种吗?不,B类变速会因为格线而受限制。上面列出的几种情况,我们可以找到相应的格线来满足键的排列;但是,假设我们做一个加速为2.25倍的变速可能吗?S2=2.25S1=2.25个小节=9拍,是可以的,s2=2.25s1=2.2516线=4.58线=964线,也是可以的。假设做一个2.2倍的呢?S2=2.2个小节=8.8=35.216线=70.432线=140.864线=422.4FREE线,无法找到这样的线。s2=2.216线=4.432线=8.864线=26.4FREE线,这样也不行。只要一个键没有办法放在线上,就无法使用。
其实我们完全可以反过来思考,因为最终能确定可行性的是格线,而我们所能用的格线就那几个,把每种格线对应的速度关系写出来就好了。这就是CRS研究出的第二个工具-格线变速表。





27


它的操作不难,但是其计算的结果新手可能不容易看懂。我们需要知道的是原键的格线数,就这一题我们只要考虑每个键的格线,只要最小格线满足变速要求,整体自然也可以满足。s=16(这里是指116线,输入16即可),bpm=150,写入表格的蓝色区域,我们可以得到以下计算结果:




28


由图我们可以看见,按照1.5倍(11/2倍)进行的变速参数在表格的第30行已经被计算出来。看其纵横对应关系,可以发现变速后的格线应为“1.516线”,“332线”,“664线”,“2.2524线”,“4.548线”,“18192线(FREE线)”,我们理所当然的选择最简单的一个,也就是“332线”。答案与我们之前计算的一致。不但如此,我们还能从表格中看到其他的B类变速方式,但是那么多种,怎么选择呢?B类变速最基本的要求是对线,也就是说我们只能选择计算结果为正整数的值,然后找到它所对应的格线,而且最好取最简单的一组。另外也要注意变速后速度本身的bpm值,还要尽可能用简单的格线,一般情况下是没有必要用到FREE线的。图中有紫红色的行是常用行,淡紫色的是次常用行,其余的一般不怎么用,而且很多情况下也不可用。图中列出的速度倍数也只是一部分,理论上有无数种,但是考虑到其它的速度倍数算出来的值大多都不能满足对线的要求,所以我就没有列出来了。紫色行的值已经完全够用了,它能帮助我们完成好几种不同速的B类变速,也为复合式B类变速(属于C类变速的一种)打下了基础。
qq微信:1844502392
官方答疑qq群:648502217
微信聊天群:1844502392
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /6 下一条


QQ|Archiver|手机版|木星劲乐团

GMT+8, 2024-12-22 22:55 , Processed in 0.092168 second(s), 21 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表