陳 兵 許國泰 單一帆
1(上海市信息網絡有限公司 上海 200081) 2(東華大學 上海 201620)
在數字音樂領域,MIDI(Musical Instrument Digital Interface)是音樂設備數字接口。它是一種電子樂器之間以及電子樂器與計算機之間的通信協議。從20世紀80年代初問世至今,經歷了長時間的發展,現已成為電腦音樂的代名詞。
“MIDI控制器”有兩個含義:(1) MIDI協議中的一部分;(2) 用于產生這類數據的設備,在本文中所提出的裝置是用于產生這類數據的設備。
MIDI控制器被用于修飾合成聲音的產生,增加音樂的表現力。傳統上,MIDI控制器裝置是一個臺式的裝置,擁有若干個旋鈕和推子。如圖1所示。

圖1 MIDI控制器裝置
這類設備使用單手或雙手操作,但是在實際制作[2]或者演奏的過程中,音樂人的雙手往往是很忙碌的,需要在MIDI鍵盤、控制器、鼠標等設備上來回操作。如果能夠用身體的其他部分來產生MIDI控制數據,就可以大大解放音樂人的雙手,讓他們可以集中精力演奏,而不必把手離開鍵盤去撥旋鈕、推推子。
因此,本文設計了一種基于航姿參考系統[3]的無線[4]MIDI控制器,可將慣性傳感器佩戴于音樂人的身上(可以是頭上、手臂上等位置)。相比于傳統控制器來說,它的優點是可穿戴,操作無摩擦阻力,可以非常快速高效地進行控制,體積小重量輕,成本低廉。
系統在硬件上由兩部分構成:傳感器、接收機。傳感器上放置九軸傳感器芯片、單片機以及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 系統結構圖
系統采用的主要算法是九軸融合算法和姿態數據/MIDI數據轉換算法。
首先引入兩個坐標系,傳感器坐標系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。
首先將四元數轉換成歐拉角:
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。
上位機可以配置轉換函數的各種參數、CC號、MIDI通道號、貝塞爾控制點的位置等,并且可以監控傳感器的電池狀態等。
將傳感器佩戴于額頭,使用頭部的上下動作來對MIDI控制器的7號控制器數據進行控制。假設合成器將該控制器數據解釋為音量參數,那么演奏者可能會希望在運動過程的兩端進行更粗的控制,在運動過程的中間段進行更細的控制。這時就可以使用貝塞爾函數描述這樣的映射曲線,見第1節的圖2。圖2為兩端平緩,中間陡峭的貝塞爾曲線,適合于希望兩端平緩、中間激進的用戶使用。
如果演奏者希望更為激進地在兩端進行控制以適應自己激進的情感變化(例如甩頭),那么可以使用另一套參數來映射。見第1節的圖3,為兩端陡峭,中間平緩的貝塞爾曲線,適用于希望中間平緩、兩端激進的用戶使用。
通過修改貝塞爾函數控制點參數,可以方便地描述出其他的控制需求。例如半段線性變化、半段激進/平緩變化、中途突變等。圖4為低端接近于線性、高端陡峭的曲線,適用于希望低端中庸、高端激進的用戶使用;圖5為低端接近于線性、高端平緩的曲線,適用于希望低端中庸、高端平緩的用戶使用;圖6為低端平緩、高端陡峭,中端有一個急速變化點的曲線,適用于希望中間有一個計算變化的激進用戶使用。
系統硬件包括傳感器模塊和接收器模塊。傳感器模塊佩戴于使用者身上,接收器模塊插在計算機的USB口上,如圖8所示。

圖8 硬件結構圖
系統使用STM32L151單片機[10]來作為傳感器模塊的主處理器,使用MPU9150來作為三軸加速度計、三軸陀螺儀、三軸地磁傳感器,使用nrf24L01來作為2.4 G無線模塊。另外配上LDO、充電管理芯片、LED、USB接口(用于充電和固件升級)、按鈕等。
STM32L151是低功耗單片機,可以有效地降低系統功耗,并且無需晶振。固件框圖如圖9所示。

圖9 傳感器固件框圖
接收機模塊使用STM32F103單片機作為主處理器,nrf24L01來作為2.4 G無線模塊,并配上LDO以及USB接口。
選擇F103的原因是成本較低。由于接收機不使用電池,因此無需考慮功耗問題。固件框圖如圖10所示。

圖10 接收機固件框圖
MIDI控制器實物如圖11所示。

圖11 MIDI控制器實物圖
圖12為演奏者在工作室中將MIDI控制器佩戴在頭上演奏合成器。使用本文所提出的MIDI控制器之后,演奏者就不再需要將手離開鍵盤去操縱臺式MIDI控制器了。

圖12 應用演奏圖1
如果將傳感器佩戴于手上,則可以非常靈活高速地對音樂進行控制(手比頭更適合高速運動),對于物理建模類合成器尤為有用,例如Sample Modeling的一系列產品(單簧管、薩克斯、小號、長號等)。實際應用如圖13所示。

圖13 應用演奏圖2
目前,經過一段時間的試用,MIDI控制器已在中國和美國的一些私人音樂工作室投入實際使用,并得到了使用者的認可,形成了小批量的銷售,產生了一定的經濟效益。
本文提出的系統除了應用于音樂制作領域,還可以應用于其他行業領域,例如:駕駛汽車、飛機等設備時運用肢體進行體感輔助控制;在VR環境下作為體感輸入;在舞臺上用于燈光控制等。
隨著MIDI控制器在國內外范圍使用的逐步增加,下一步將根據使用意見對產品改進,以及向其他行業應用領域拓寬。