本發(fā)明涉及檢測(cè)運(yùn)動(dòng)軌跡演奏音響的方法,尤指一種智能架子鼓音效系統(tǒng)及其實(shí)現(xiàn)方法。
背景技術(shù):
架子鼓是樂(lè)器中的佼佼者,然而由于其體積龐大,難以實(shí)現(xiàn)隨時(shí)移動(dòng),是架子鼓不能走進(jìn)小型演唱會(huì)的重要原因。再加上其價(jià)格昂貴,使得架子鼓難以走入尋常百姓家。在可穿戴設(shè)備興起的浪潮中,將架子鼓與可穿戴設(shè)備相融合,使架子鼓音樂(lè)系統(tǒng)變成體積小、成本低的樂(lè)器,提供給架子鼓愛(ài)好者或者沒(méi)有足夠空間擺放真實(shí)架子鼓的場(chǎng)合。是架子鼓發(fā)展市場(chǎng)的需要。
技術(shù)實(shí)現(xiàn)要素:
針對(duì)現(xiàn)有技術(shù)的缺失和市場(chǎng)的需要,本發(fā)明的目的在于提供一種智能架子鼓音效系統(tǒng)及其實(shí)現(xiàn)方法。
本發(fā)明解決其技術(shù)問(wèn)題所采用的技術(shù)方案之一是:提供一種智能架子鼓音效系統(tǒng),其特征在于:包括裝于模擬鼓棒中的微處理器、與微處理器連接的傳感器和氣壓計(jì),所述微處理器通過(guò)藍(lán)牙與上位機(jī)連接,其中:
傳感器和氣壓計(jì)用于捕捉用戶(hù)使用鼓棒時(shí)的姿態(tài)變化數(shù)據(jù);
微處理器用于對(duì)采集的姿態(tài)變化數(shù)據(jù)進(jìn)行處理,整合兩個(gè)鼓棒數(shù)據(jù)并進(jìn)行數(shù)據(jù)分析;
藍(lán)牙模塊用于實(shí)現(xiàn)與上位機(jī)的通信。
進(jìn)一步地:
所述微處理器可以采用STM32微型處理器。
所述傳感器可以采用MPU6050九軸傳感器。
所述氣壓計(jì)可以采用MAS5611-01BA03氣壓計(jì)。
所述藍(lán)牙可以是BLE低功耗藍(lán)牙4.0。
系統(tǒng)可以裝有開(kāi)關(guān),用于控制系統(tǒng)的開(kāi)啟和關(guān)停。
所述上位機(jī)可以是現(xiàn)場(chǎng)的電子音響裝置或移動(dòng)終端(例如手機(jī)、可移動(dòng)的電子音響設(shè)備)。
本發(fā)明同時(shí)提供一種利用上述架子鼓音效系統(tǒng)的架子鼓音效實(shí)現(xiàn)方法,包括如下步驟:
步驟S1,數(shù)據(jù)采集和處理:采集模擬鼓棒的X、Y、Z三軸的加速度、角度和高度值,并求出以下三個(gè)值:
az=((AzH<<8)|AzL)/32768*16*g
其中az為Z軸加速度、AZ為傳感器傳回的Z軸加速度值,H、L分別表示數(shù)據(jù)的高低位、g為重力加速度值;
Yaw=((YawH<<8)|YawL)/32768*180(°)
其中:Yaw為偏航角;
H=((H3<<24)|(H2<<16)|(H1<<8)|H0)(cm)
其中H為高度值,H3、H2、H1、H0為高度數(shù)據(jù)的高低位;
將Z軸加速度az,角度的3個(gè)方向值Yawx,Yawy,Yawz以及高度H分別用q1,q2,q3,q4,q5表示,同時(shí)將第i時(shí)刻的動(dòng)作數(shù)據(jù)用向量表示,在一段連續(xù)的時(shí)間內(nèi),若干個(gè)時(shí)間點(diǎn)的去Qi列向量進(jìn)行組合形成時(shí)間-數(shù)據(jù)矩陣w[i][j](i<=5,j為第j個(gè)時(shí)間點(diǎn)),于是,w[1][j]代表著第j個(gè)時(shí)間點(diǎn)的加速度值,w[2][j]代表著第j個(gè)時(shí)間點(diǎn)的x軸角度值,依次類(lèi)推;
步驟S2,進(jìn)行姿態(tài)分析:
判斷步驟S1所得的w[1][j]是否滿(mǎn)足以下條件:
w[1][j]<w[1][j-1]&&w[1][j]<w[1][j+1]&&w[1][j]<min
w[1][j]-min<D
其中D為識(shí)別判定中,新數(shù)據(jù)與波谷之間的差值需要滿(mǎn)足的閾值;min為識(shí)別判定中,波谷的最大限制閾值;
否則返回步驟S1;是則認(rèn)定該點(diǎn)為敲擊點(diǎn),記錄數(shù)據(jù)j,并由此找出與j相對(duì)應(yīng)的角度Yaw和高度H;依次記錄為t1,t2,t3…,tm,以此確定敲擊方向和高度;
步驟S3,依據(jù)敲擊方向和高度執(zhí)行發(fā)聲函數(shù),確定镲和鼓的發(fā)音選擇,返回步驟S1。
可選地,在步驟S1之前,針對(duì)不同的使用者對(duì)D,min兩個(gè)閾值的設(shè)定進(jìn)行確認(rèn),
步驟S0-1,單次敲擊動(dòng)作閾值確認(rèn):
使用者按照提示,用四肢分別控制相應(yīng)模塊單獨(dú)敲擊十次,在這個(gè)過(guò)程中,不斷地采集數(shù)據(jù)并進(jìn)行濾波處理,確定每次敲擊過(guò)程中數(shù)據(jù)變化的波峰、波谷以及波谷變化到波峰所需要的時(shí)間,舍棄前三次的數(shù)據(jù),根據(jù)剩下的數(shù)據(jù)做如下設(shè)定:
min=剩余數(shù)據(jù)中波谷的最大值;
D=min+(剩余數(shù)據(jù)每組的波峰與波谷的差值的平均值)*30%。
另外,可選地,針對(duì)同一使用者,可以進(jìn)行多次敲擊動(dòng)作閾值優(yōu)化。
步驟S0-2,多次敲擊動(dòng)作閾值優(yōu)化:
在步驟S0-1成功之后的0.1s至0.17s之內(nèi)判定另一次敲擊,該次敲擊所得的min和D進(jìn)行min*110%和D*90%的運(yùn)算,所得值作為新的相應(yīng)的min和D。
另外,為了確定敲擊方向角度值和鼓棒敲擊位置的關(guān)系,可選地,在執(zhí)行步驟S1之前,確定敲擊方向角度閾值,
步驟S0-3,確定敲擊方向角度閾值:
步驟S0-3-1:將鼓棒水平放置,在5秒時(shí)間內(nèi)保持不變,得到初始位置偏航角角度值μ,在使用過(guò)程中,根據(jù)用戶(hù)每次的敲擊動(dòng)作,得到敲擊點(diǎn)的偏航角角度值λ
步驟S0-3-2:計(jì)算得到差值σ=λ-μ;
步驟S0-3-3:將使用者前方[-90°,90°]的區(qū)域平分為6個(gè)角度部分,角度閾值取值點(diǎn)分別為:-60°,-30°,0°,30°,60°的位置,根據(jù)計(jì)算得到6個(gè)不同點(diǎn)的角度閾值σ值,確定鼓棒的敲擊方向,繼而確定對(duì)應(yīng)的發(fā)聲,并根據(jù)高度值確定镲和鼓的選擇。
本發(fā)明的有益效果是:使架子鼓音樂(lè)系統(tǒng)變成體積小、成本低的樂(lè)器,提供給架子鼓愛(ài)好者或者沒(méi)有足夠空間擺放真實(shí)架子鼓的場(chǎng)合。迎合架子鼓發(fā)展市場(chǎng)的需要。
附圖說(shuō)明
下面結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步的描述。
圖1是本發(fā)明一種智能架子鼓音效系統(tǒng)的架構(gòu)示意圖。
圖2是本發(fā)明一種智能架子鼓音效實(shí)現(xiàn)方法的流程示意圖。
圖3是本發(fā)明實(shí)施例的軟件實(shí)現(xiàn)框圖。
具體實(shí)施方式
參見(jiàn)附圖,本發(fā)明一種智能架子鼓音效系統(tǒng),其特征在于:包括裝于模擬鼓棒中的微處理器1、與微處理器1連接的傳感器2和氣壓計(jì)3,所述微處理器1通過(guò)藍(lán)牙4與上位機(jī)5連接,其中:
傳感器2和氣壓計(jì)3用于捕捉用戶(hù)使用鼓棒時(shí)的姿態(tài)變化數(shù)據(jù);
微處理器1用于對(duì)采集的姿態(tài)變化數(shù)據(jù)進(jìn)行處理,整合兩個(gè)鼓棒數(shù)據(jù)并進(jìn)行數(shù)據(jù)分析;
藍(lán)牙4模塊用于實(shí)現(xiàn)與上位機(jī)的通信。
在本發(fā)明的實(shí)施例中:
所述微處理器1采用STM32微型處理器。所述傳感器2采用MPU6050九軸傳感器。具體地,本發(fā)明采用的是集STM32微型處理器和MPU6050九軸傳感器為一體的JY-901系列模塊。該模塊集成高精度的陀螺儀、加速度計(jì)、地磁場(chǎng)傳感器,采用高性能的微處理器和先進(jìn)的動(dòng)力學(xué)解算與卡爾曼動(dòng)態(tài)濾波算法,能夠快速求解出模塊當(dāng)前的實(shí)時(shí)運(yùn)動(dòng)姿態(tài)。模塊內(nèi)部集成了姿態(tài)解算器,配合動(dòng)態(tài)卡爾曼濾波算法,能夠在動(dòng)態(tài)環(huán)境下準(zhǔn)確輸出模塊的當(dāng)前姿態(tài)。
所述氣壓計(jì)3采用MAS5611-01BA03氣壓計(jì)。MS5611-01BA03是由MEAS公司在瑞士分公司(原intersema廠(chǎng)家)設(shè)計(jì)并生產(chǎn)的高分辨率的測(cè)高傳感器,它提供SPI接口和I2C總線(xiàn)兩種接口。適合于高度測(cè)量和氣壓測(cè)量。該傳感器模塊包括一個(gè)高線(xiàn)性壓力傳感器和一個(gè)24位低功耗的AD轉(zhuǎn)換器,傳感器內(nèi)部包含有工廠(chǎng)校準(zhǔn)系數(shù)。它提供了一個(gè)精確的24位壓力和溫度值。該傳感器在測(cè)量氣壓的同時(shí)具有溫度測(cè)量的功能。可以連接到幾乎所有微控制器,通訊協(xié)議簡(jiǎn)單,不需要裝置內(nèi)部編程存儲(chǔ)器。小尺寸,便于集成應(yīng)用。
所述藍(lán)牙4是BLE低功耗藍(lán)牙4.0。
系統(tǒng)裝有開(kāi)關(guān)6,用于控制系統(tǒng)的開(kāi)啟和關(guān)停。
所述上位機(jī)是手機(jī)和可移動(dòng)電子音響設(shè)備。
本發(fā)明同時(shí)提供一種利用上述架子鼓音效系統(tǒng)的架子鼓音效實(shí)現(xiàn)方法,包括如下步驟:
步驟S1,數(shù)據(jù)采集和處理:采集模擬鼓棒的X、Y、Z三軸的加速度、角度和高度值,并求出以下三個(gè)值:
az=((AzH<<8)|AzL)/32768*16*g
其中az為Z軸加速度、AZ為傳感器傳回的Z軸加速度值(16進(jìn)制),H,L表示數(shù)據(jù)的高低位。g為重力加速度值;
Yaw=((YawH<<8)|YawL)/32768*180(°)
其中:Yaw為偏航角;
H=((H3<<24)|(H2<<16)|(H1<<8)|H0)(cm)
其中H為高度值,H3、H2、H1、H0為高度數(shù)據(jù)的高低位(32進(jìn)制);
將Z軸加速度az,角度的3個(gè)方向值Yawx,Yawy,Yawz以及高度H分別用q1,q2,q3,q4,q5表示,同時(shí)將第i時(shí)刻的動(dòng)作數(shù)據(jù)用向量表示,在一段連續(xù)的時(shí)間內(nèi),若干個(gè)時(shí)間點(diǎn)的去Qi列向量進(jìn)行組合形成時(shí)間-數(shù)據(jù)矩陣w[i][j](i<=5,j為第j個(gè)時(shí)間點(diǎn))。于是,w[1][j]代表著第j個(gè)時(shí)間點(diǎn)的加速度值,w[2][j]代表著第j個(gè)時(shí)間點(diǎn)的x軸角度值,依次類(lèi)推;
步驟S2,進(jìn)行姿態(tài)分析:
判斷步驟S1所得的w[1][j]是否滿(mǎn)足條件:
w[1][j]<w[1][j-1]&&w[1][j]<w[1][j+1]&&w[1][j]<min
w[1][j]-min<D
其中D為識(shí)別判定中,新數(shù)據(jù)與波谷之間的差值需要滿(mǎn)足的閾值;min為識(shí)別判定中,波谷的最大限制閾值。
否則返回步驟S1;是則認(rèn)定該點(diǎn)為敲擊點(diǎn),記錄數(shù)據(jù)j,并由此找出與j相對(duì)應(yīng)的角度Yaw和高度H;依次記錄為t1,t2,t3…,tm,以此確定敲擊方向和高度;
步驟S3,依據(jù)敲擊方向和高度執(zhí)行發(fā)聲函數(shù),確定镲和鼓的發(fā)音選擇,返回步驟S1。
由于對(duì)不同使用者來(lái)說(shuō),敲擊動(dòng)作的幅度、力度會(huì)不同,可選地,在步驟S1之前,針對(duì)不同的使用者對(duì)D,min兩個(gè)閾值的設(shè)定進(jìn)行確認(rèn),
步驟S0-1,單次敲擊動(dòng)作閾值確認(rèn):
使用者按照提示,用四肢分別控制相應(yīng)模塊單獨(dú)敲擊十次,在這個(gè)過(guò)程中,不斷地采集數(shù)據(jù)并進(jìn)行濾波處理,確定每次敲擊過(guò)程中數(shù)據(jù)變化的波峰、波谷以及波谷變化到波峰所需要的時(shí)間,舍棄前三次的數(shù)據(jù),根據(jù)剩下的數(shù)據(jù)做如下設(shè)定:
min=剩余數(shù)據(jù)中波谷的最大值;
D=min+(剩余數(shù)據(jù)每組的波峰與波谷的差值的平均值)*30%。
另外,由于在使用過(guò)程中,使用者在做連續(xù)敲擊的過(guò)程中有時(shí)會(huì)出現(xiàn)第二次、第三次敲擊的幅度和力度明顯小于第一次的情況,這就會(huì)造成連續(xù)敲擊過(guò)程中會(huì)有識(shí)別不準(zhǔn)確的情況出現(xiàn),針對(duì)此情況,可選地,針對(duì)同一使用者,進(jìn)行多次敲擊動(dòng)作閾值優(yōu)化。
步驟S0-2,多次敲擊動(dòng)作閾值優(yōu)化:
在步驟S0-1成功之后的0.1s至0.17s之內(nèi)判定另一次敲擊,該次敲擊所得的min和D進(jìn)行min*110%和D*90%的運(yùn)算,所得值作為新的相應(yīng)的min和D。
另外,為了確定敲擊方向角度值和鼓棒敲擊位置的關(guān)系,可選地,在執(zhí)行步驟S1之前,確定敲擊方向角度閾值,
步驟S0-3,確定敲擊方向角度閾值:
步驟S0-3-1:將鼓棒水平放置,在5秒時(shí)間內(nèi)保持不變,得到初始位置偏航角角度值μ,在使用過(guò)程中,根據(jù)用戶(hù)每次的敲擊動(dòng)作,得到敲擊點(diǎn)的偏航角角度值λ
步驟S0-3-2:計(jì)算得到差值σ=λ-μ;
步驟S0-3-3:將使用者前方[-90°,90°]的區(qū)域平分為6個(gè)角度部分,角度閾值取值點(diǎn)分別為:-60°,-30°,0°,30°,60°的位置,根據(jù)計(jì)算得到6個(gè)不同點(diǎn)的角度閾值σ值,確定鼓棒的敲擊方向,繼而確定對(duì)應(yīng)的發(fā)聲,并根據(jù)高度值確定镲和鼓的選擇。