基于航姿参考系统的MIDI控制器
2018-09-26许国泰单一帆
陈 兵 许国泰 单一帆
1(上海市信息网络有限公司 上海 200081) 2(东华大学 上海 201620)
0 引 言
在数字音乐领域,MIDI(Musical Instrument Digital Interface)是音乐设备数字接口。它是一种电子乐器之间以及电子乐器与计算机之间的通信协议。从20世纪80年代初问世至今,经历了长时间的发展,现已成为电脑音乐的代名词。
“MIDI控制器”有两个含义:(1) MIDI协议中的一部分;(2) 用于产生这类数据的设备,在本文中所提出的装置是用于产生这类数据的设备。
MIDI控制器被用于修饰合成声音的产生,增加音乐的表现力。传统上,MIDI控制器装置是一个台式的装置,拥有若干个旋钮和推子。如图1所示。
图1 MIDI控制器装置
这类设备使用单手或双手操作,但是在实际制作[2]或者演奏的过程中,音乐人的双手往往是很忙碌的,需要在MIDI键盘、控制器、鼠标等设备上来回操作。如果能够用身体的其他部分来产生MIDI控制数据,就可以大大解放音乐人的双手,让他们可以集中精力演奏,而不必把手离开键盘去拨旋钮、推推子。
因此,本文设计了一种基于航姿参考系统[3]的无线[4]MIDI控制器,可将惯性传感器佩戴于音乐人的身上(可以是头上、手臂上等位置)。相比于传统控制器来说,它的优点是可穿戴,操作无摩擦阻力,可以非常快速高效地进行控制,体积小重量轻,成本低廉。
1 系统设计
系统在硬件上由两部分构成:传感器、接收机。传感器上放置九轴传感器芯片、单片机以及2.4 G无线电,采集三轴加速度[5]、三轴陀螺仪、三轴电子罗盘的数据进行九轴融合[6],生成姿态四元数,通过2.4 G无线电发送给接收机。接收机是一个外形上接近U盘的设备,具备USB接口,将收到的姿态四元数[7]转换成欧拉角,取出横滚分量后用贝塞尔函数[8]转换成用于控制音乐设备数字接口的某个通道上的控制数据,通过音乐设备数字接口设备发送给后端的合成器作为合成器控制参数,用于音乐制作以及音乐演奏。
系统还包括一个上位机软件,用于配置转换函数的参数。需要配置的参数包括贝塞尔函数控制点、横滚角度偏移量、音乐设备数字接口通道号、音乐设备数字接口控制器编号。
本文创新点在于使用带参数的贝塞尔函数来将空间姿态数据转换成音乐设备数字接口控制器数据,其运算量小、占用的内存空间小、数据平滑,并且在作为穿戴式设备的时候可以灵活地进行姿态MIDI数据变换来适应人的非线性动作。例如:将传感器佩戴于额头,使用头部的上下动作来对音乐设备数字接口控制器的7号控制器数据(主音量(粗调)控制器数据)进行控制。假设合成器将此控制器数据解释为音量参数,那么演奏者可能会希望在运动过程的两端进行更粗的控制,在运动过程的中间段进行更细的控制。这时可以使用贝塞尔函数描述这样的映射曲线,如图2所示。
图2 映射曲线1
如果演奏者希望更为激进地在两端进行控制以适应自己激进的情感变化(例如甩头),那么可以使用另一套参数来映射(见图3)。
图3 映射曲线2
为实现图3的效果,只需简单修改贝塞尔函数控制点参数。
同样,我们还可以方便地描述出其他的控制需求,例如半段线性变化、半段激进/平缓变化、中途突变等,如图4-图6所示。
图4 映射曲线3
图5 映射曲线4
图6 映射曲线5
系统结构如图7所示。
图7 系统结构图
2 算法设计
系统采用的主要算法是九轴融合算法和姿态数据/MIDI数据转换算法。
2.1 九轴融合算法[6]
首先引入两个坐标系,传感器坐标系S和地理坐标系E。我们可以通过一个四元数[wxyz]来将一个坐标系的数据变换到另一个上。
将一个S坐标系的向量v通过四元数q转换到E坐标系的方程如下:
vE=q×vS×q*
(1)
式中:参数q是一个四维复数,即q=w+xi+yj+zk。w、x、y、x的取值要求为w2+x2+y2+z2=1。q*是q的共轭,即q=w-xi-yj-zk。
三轴陀螺仪是测量角速度的传感器,可以非常高速地检测出细微的角速度。通过角速度积分可以测量出传感器的旋转量,从而得到一个空间向量sw,其四元数形式为[0swxswyswz]。qSE(从S坐标系变换到E坐标系的q)的方程如下:
qSE(t)=0.5×qSE(t-1)×sw(t)
(2)
三轴加速度计是测量加速度的传感器,用来测量地球引力的方向。这个加速度的值非常稳定,大小为g,可以用来提供一个固定的姿态方向(陀螺仪只能提供相对于初态的姿态)。
测得的传感器数据的四元数为aS=[0axayaz],使用其z轴方向的数据gE=[0 0 0 1],则有
f(qSE,aS)=qSE*×gE×qSE-aS=
(3)
要令f(qSE,aS)的值最小,可以采用梯度下降法:
qSE(k+1)=qSE(k)-k(▽f/‖▽f‖)
(4)
三轴电子罗盘是测量磁场的传感器,用来测量地球磁场的方向。上一步的加速度计虽然可以得到重力的方向,但是对于垂直于重力方向的那个平面却是无能为力的,这需要使用磁场方向来弥补。电子罗盘测量数据的四元数为mS=[0mxmymz],取水平方向数据为bE=[0bx0bz]。
f(qSE,bE,mS)=
(5)
hE=[0hxhyhz]=qSE(t-1) ×mS×qSE(t-1)
(6)
(7)
(8)
最后依然采用梯度下降法使得f最小,得到姿态四元数qSE。
2.2 姿态数据/MIDI数据转换算法
首先将四元数转换成欧拉角:
Pitch=arcsin(-2q2q4 + 2q1q3)
(9)
Yaw= arctan2(2(q2q3+q1q4),q1q1+q2q2-
q3q3-q4q4)
(10)
Roll=arctan2(2q3q4+2q1q2,-2q2q2-2q3q3+1)
(11)
然后取出Roll数据,它的范围是-π到π。如果将传感器穿戴于额头上,则Roll的角度同头部的上下动作是同步的。因此可以使用一个转换函数f(Roll)=CCVal来将Roll的角度数据转换成MIDI CC数据。这个转换函数可以通过一个三阶贝塞尔函数来实现。
B(t)=P0(1-t)3+3P1t(1-t)2+
3P2t2(1-t)+P3t3
(12)
只要指定四个控制点P0、P1、P2、P3,就可以根据当前点的坐标t来计算出对应的点B。运算量较小,适合在单片机上使用。
对于MIDI CC数据,其范围是0~127,由MIDI协议所规定,所以B(t)的范围是0~127。
3 配置参数的上位机设计[9]
上位机可以配置转换函数的各种参数、CC号、MIDI通道号、贝塞尔控制点的位置等,并且可以监控传感器的电池状态等。
将传感器佩戴于额头,使用头部的上下动作来对MIDI控制器的7号控制器数据进行控制。假设合成器将该控制器数据解释为音量参数,那么演奏者可能会希望在运动过程的两端进行更粗的控制,在运动过程的中间段进行更细的控制。这时就可以使用贝塞尔函数描述这样的映射曲线,见第1节的图2。图2为两端平缓,中间陡峭的贝塞尔曲线,适合于希望两端平缓、中间激进的用户使用。
如果演奏者希望更为激进地在两端进行控制以适应自己激进的情感变化(例如甩头),那么可以使用另一套参数来映射。见第1节的图3,为两端陡峭,中间平缓的贝塞尔曲线,适用于希望中间平缓、两端激进的用户使用。
通过修改贝塞尔函数控制点参数,可以方便地描述出其他的控制需求。例如半段线性变化、半段激进/平缓变化、中途突变等。图4为低端接近于线性、高端陡峭的曲线,适用于希望低端中庸、高端激进的用户使用;图5为低端接近于线性、高端平缓的曲线,适用于希望低端中庸、高端平缓的用户使用;图6为低端平缓、高端陡峭,中端有一个急速变化点的曲线,适用于希望中间有一个计算变化的激进用户使用。
4 硬件设计
系统硬件包括传感器模块和接收器模块。传感器模块佩戴于使用者身上,接收器模块插在计算机的USB口上,如图8所示。
图8 硬件结构图
4.1 传感器模块
系统使用STM32L151单片机[10]来作为传感器模块的主处理器,使用MPU9150来作为三轴加速度计、三轴陀螺仪、三轴地磁传感器,使用nrf24L01来作为2.4 G无线模块。另外配上LDO、充电管理芯片、LED、USB接口(用于充电和固件升级)、按钮等。
STM32L151是低功耗单片机,可以有效地降低系统功耗,并且无需晶振。固件框图如图9所示。
图9 传感器固件框图
4.2 接收机模块
接收机模块使用STM32F103单片机作为主处理器,nrf24L01来作为2.4 G无线模块,并配上LDO以及USB接口。
选择F103的原因是成本较低。由于接收机不使用电池,因此无需考虑功耗问题。固件框图如图10所示。
图10 接收机固件框图
5 应 用
MIDI控制器实物如图11所示。
图11 MIDI控制器实物图
图12为演奏者在工作室中将MIDI控制器佩戴在头上演奏合成器。使用本文所提出的MIDI控制器之后,演奏者就不再需要将手离开键盘去操纵台式MIDI控制器了。
图12 应用演奏图1
如果将传感器佩戴于手上,则可以非常灵活高速地对音乐进行控制(手比头更适合高速运动),对于物理建模类合成器尤为有用,例如Sample Modeling的一系列产品(单簧管、萨克斯、小号、长号等)。实际应用如图13所示。
图13 应用演奏图2
目前,经过一段时间的试用,MIDI控制器已在中国和美国的一些私人音乐工作室投入实际使用,并得到了使用者的认可,形成了小批量的销售,产生了一定的经济效益。
6 结 语
本文提出的系统除了应用于音乐制作领域,还可以应用于其他行业领域,例如:驾驶汽车、飞机等设备时运用肢体进行体感辅助控制;在VR环境下作为体感输入;在舞台上用于灯光控制等。
随着MIDI控制器在国内外范围使用的逐步增加,下一步将根据使用意见对产品改进,以及向其他行业应用领域拓宽。