为了在规定的120个控制器之外扩展使用更多的控制器,MIDI规定中准备了RPN(Registered Parameter Number注册参数号)和NRPN(Non Registered Parameter Number非注册参数号)两套控制器,它们之间的区别仅在于RPN是MMA协会“官方”定义的,而NRPN可以由厂商们自行定义。使用方法完全相同。
目前定义的RPN参数仅限于00 00H(弯音音域)、00 01H(标准音细调)、00 02H(标准音粗调)、00 05H(调制深度)、7F 7FH(阻止为RPN和NRPN输入控制值)五个。
为了讲清RPN和NRPN的使用方法,首先简单复习一下简单的控制变换(Control Change)命令。
控制变换命令属于通道信息,由3个字节组成,第一个字节为状态码,表明控制变换的属性和目标通道;第二字节由0开头,是控制器编号,因为只有7比特,最多有128个编号;第三个字节也由0开头,是控制器值,最大值127。
当数值超过128的时候需要使用2条控制器命令,一条发最高位,一条发最低位,构成14比特的数值,最大数值可达16384。根据MIDI的规定,0-31和32-64号控制器分别结对,前者发最高位,后者发最低位。
我们再介绍6条控制变换命令:
100号控制器——RPN最高位
101号控制器——RPN最低位
98号控制器——NRPN最高位
99号控制器——NRPN最低位
6号控制器——输入数据最高位
38号控制器——输入数据最低位
下面我们以发送1通道弯音音域12半音命令为例具体说明用法。
弯音音域命令有一点特殊,它的数据值只用最高位,以半音为单位。发送的顺序是:
100号控制器00(RPN最高位)
101号控制器00(RPN最低位)
6号控制器0C(16进制0C等于十进制12,12个半音)
38号控制器00(虽然最低位没有定义,也要发送,否则可能出错)
如果这以后要把弯音音域改为纯五度,只发6号控制器07即可。
没有再次发送100和101号控制器命令之前,6号控制器始终可以改变1通道的弯音音域。
==============================================================
NRPN由98号和99号控制器共同组成。而RPN由100号和101号控制器共同组成。同时有一个6号控制器配合他们使用。其原则是首先赋予RPN或NRPN一个值,这个值确定了它们控制什么内容,然后再由6号控制器决定具体的量的多少。而RPN和NRPN都是由两个控制器组成的,所以在输入值时需要输入两个数据,因此它们就有先后关系,MIDI协议规定,98号和100号为“低元组数值”,99号和101号为高元组数值,前者简称LSB,后者简称MSB。在输入数据时一定要先输入MSB,后输入LSB。比方说一个很常用的控制,我们用RPN来控制Pitch Bend(弯音轮)的幅度,默认值是两个半音 ,我们想改成三个半音,就依次输入控制器101,值=0,100,值=0,6,值=3。当你的音源接受到这个信息后,你去试验一下,Pitch Bend的幅度是否变成三个半音了。那么就有人问了,为什么101号控制器的值是0呢?为什么100号控制器的值也是0呢?6号控制器的值为3代表什么?答案是这样的,100,101号控制器的值是根据MIDI协议的规定输入的,也就是说人们早就定义好了,当100号值为什么,101号值为什么时,该组合用来控制什么。具体可以参考后面的表格。(摘自ATTIC小组网页)同样,NRPN的组合模式也早被规定好了。至于6号控制器是非常好理解的,输入3就代表3 个半音 。在控制其他内容如音色的混响,Attack, Suntain, Decay, Release等时,6号控制器和普通控制器一样精确改变效果量的大小。
所以通过调整RPN和NRPN可以对音色和其他信息进行编辑,使它们符合我们的需要。还可以解决一些制作上的难题,例如对一个鼓组里的部件施加不同的效果量,就不是用简单的91号和93号控制器可以解决的,用NRPN的控制可以做到大鼓没有什么混响而军鼓有很大的混响,大家多尝试吧。