毛藝曉 王志鵬
摘?要:利用MATLAB GUI平臺,設計了一個音樂分析與合成綜合演示系統(tǒng)。用戶通過簡單的鼠標點擊操作,就可以實現(xiàn)音樂載入、波形顯示、頻域分析、音樂合成以及音頻播放等一系列功能。該演示系統(tǒng)可以讓用戶更直觀地理解音樂信號分析與合成的基本原理,激發(fā)對音頻信號分析和處理的興趣。
關鍵詞:MATLAB;音樂分析與合成;傅里葉變換
Abstract:Using Matlab GUI platform,a music analysis and synthesis integrated demonstration system is designed.Through simple mouse click operation,users can achieve a series of functions such as music loading,waveform display,frequency domain analysis,music synthesis and audio playback.The demo system can make users understand the basic principle of music signal analysis and synthesis more intuitively and stimulate their interest in audio signal analysis and processing.
Key words:MATLAB;music analysis and synthesis;Fourier transform
1 緒論
MATLAB是是矩陣實驗室(Matrix Laboratory)的簡稱,是美國MathWorks公司出品的商業(yè)數(shù)學軟件,可以進行矩陣運算、繪制函數(shù)和數(shù)據(jù)、實現(xiàn)算法、創(chuàng)建用戶界面、連接其他編程語言的程序等,在信號處理領域已得到廣泛的應用[1]。MATLAB還可以快速生成GUI(圖形用戶界面)程序。圖形用戶界面程序由一系列按鈕、菜單、列表框、滑動條和文本框等控件組成,用戶只需要通過鼠標和鍵盤操作,就可以實現(xiàn)各種運算,實現(xiàn)相應功能,具有形象生動、方便靈活的特點,是現(xiàn)代軟件普遍采用的一種交互方式。MATLAB是一個數(shù)據(jù)分析和處理功能十分強大的工程實用軟件,故運用它來進行音樂信號的采集、分析和處理相當便捷。
2 樂理知識介紹
將調式中的音,從以主音開始到以主音結束,由低到高(叫做上行),或者由高到低(叫做下行)以階梯狀排列起來,就叫做音階?;疽綦A為C調大音階,也有D調、F調等。不同的音階有不同的聲音頻率,而不同的聲音頻率也對應著不同的信號波形。利用軟件模擬,可以用不同的頻率代表不同的音階,從而起到調節(jié)音調的作用,進而可以用數(shù)學方法模擬出原唱的效果[2]。由于不同的樂器其信號包絡信號也不同,故在音樂合成研究中,常用少量的直線來近似表示復雜的包絡形狀。于是,樂音信號的波形包絡就呈折線分布。同時,為了保證在兩個樂音的鄰接處信號幅度為零,也經(jīng)常采用指數(shù)衰減的信號包絡來表示。如果連接的音符產(chǎn)生了一個雜音,可以通過加包絡來消噪音[3]。
3 音樂分析與合成演示平臺的設計
3.1 主界面
在音樂分析與合成演示平臺的設計中,每個模塊的GUI程序設計都包含兩個部分內(nèi)容:GUI界面設計和m文件設計。GUI界面設計可以利用MATLAB提供的可視化GUIDE工具通過添加各種控件來完成;而m文件設計則主要根據(jù)界面設計,通過編寫回調函數(shù)來實現(xiàn)相應的功能,音樂信號處理的功能均需在控件的回調函數(shù)中實現(xiàn)[4]。該音樂分析與合成演示系統(tǒng)的主界面如圖1所示。主界面包含音樂信號分析和音樂信號合成兩個子模塊,分別點擊對應的按鈕就可以打開對應的子模塊操作界面。
3.2 音樂信號分析子模塊
該子模塊的具有以下功能:
(1)載入音頻文件。用戶點擊載入音頻按鈕后,可載入計算機中的任意音頻文件(.wav等)。載入完畢后,上方的坐標軸內(nèi)將生成對應的時域波形。
(2)音頻的播放。載入音頻后,點擊播放音樂按鈕,可播放當前載入的音頻文件內(nèi)容。
(3)生成分析圖像。完成(1)步驟后,在第一個彈出式菜單中選擇一種分析種類(頻譜分析/功率譜分析/倒譜分析)后,點擊生成圖像按鈕,將會在右方的坐標軸內(nèi)生成對應的圖譜,如圖2所示。
(4)保存圖像。用戶在第二個彈出式菜單中選擇一種保存圖像類型(時域波形保存/頻譜保存/功率譜保存/倒譜保存)后,點擊保存圖像按鈕,將會彈出該類型圖像的保存操作窗口(選擇保存位置),進行保存。
該音樂信號分析子模塊可以分別實現(xiàn)頻譜分析、倒譜分析以及功率譜分析等功能[5]。
3.3 音樂信號合成子模塊
音樂信號合成子模塊如圖3所示。該模塊可以用兩種方法實現(xiàn)音樂信號的合成:(1)方法1(載入曲譜):在彈出式菜單中選擇一種歌曲片段(東方紅/雪絨花/小步舞曲)后,點擊合成音頻信號按鈕,將會在坐標軸中生成該歌曲的時域波形,點擊播放音樂按鈕后,將會播放當前選擇的歌曲片段。選擇輸入中下拉菜單的第二個曲目《雪絨花》。通過部分歌曲音階可知對應的頻率為:392 261.63 293.66 329.63 349.23 392 261.63 261.63 440 349.23 392 440 493.88 523.25 261.63 261.63 349.23 392 349.23 329.63 293.66 329.63 349.23 329.63 293.66 261.63 293.66 329.63 293.66 261.63 246.94 261.63。每小節(jié)有兩拍,一拍的時間是0.5s,因此各音節(jié)的持續(xù)時間分別為:0.5、0.25、0.25、1、0.5、0.25、0.25、1。在MATLAB中用一個行向量來存儲這段音樂對應的抽樣點,再用sound函數(shù)播放音樂即可[6]?!堆┙q花》的合成效果圖如圖3所示。
(2)方法2(琴鍵輸入):通過按下琴鍵來輸入音頻信號,輸入完畢后,點擊播放按鈕,將會按照順序合成所有按下琴鍵的音頻信號并生成對應的時域波形,同時播放合成的音頻信號,點擊重新輸入按鈕,之前輸入的音頻信號將被清除,可以重頭開始輸入。每個琴鍵都有對應的頻率,因此可以通過GUI上的按鍵及MATLAB的相關函數(shù)實現(xiàn)琴鍵輸入的效果。按下前三個白色琴鍵的輸出效果圖如圖4所示。
4 結語
本文在MATLAB 2017 for windows 10的環(huán)境下,建立了一個音樂信號分析與合成演示程序。它以圖形窗口為主窗口,加入了下拉菜單、控制按鈕、坐標軸等模塊,實現(xiàn)了音樂信號的采集、播放、處理,以及信號功率譜、頻譜、倒譜圖的分析和圖形顯示。另外,通過按鈕可在MATLAB圖形窗口上實現(xiàn)音樂信號的輸入與合成,收到的效果清晰直觀。
參考文獻:
[1]宋曉婷.利用MATLAB合成音樂的函數(shù)模擬實現(xiàn)與比對[J].太原師范學院學報:自然科學版,2018,17(1):27-32.
[2]張林,王艷芬,張曉光,等.基于MatlabGUI的數(shù)字信號處理演示平臺設計[J].實驗技術與管理,2016,243(12):154-157.
[3]連麗紅.基于Matlab的信號與系統(tǒng)實驗平臺開發(fā)[J].實驗技術與管理,2016(6):150-153.
[4]羅湘娟,陳麗,謝超.基于MATLAB的音樂分析與合成研究[J].科技經(jīng)濟導刊,2017(15):32.
[5]金波.基于Matlab的“信號與系統(tǒng)”實驗演示系統(tǒng)[J].實驗技術與管理,2011,27(12):104-107.
[6]閆紅梅,吳冬梅,吳延海.Matlab在周期信號分解及頻譜中的應用[J].實驗技術與管理,2016(5):37-39,43.
基金項目:南陽師范學院教學研究項目(2019-JXYJYB-65,2017-JXYJYB-20);南陽師范學院課堂教學模式改革項目(2019-JXYJKT-26);南陽師范學院大學生實踐教學活動創(chuàng)新項目(SPCP2020427)
作者簡介:毛藝曉(1999—?),女,浙江舟山人,本科,主要研究方向:計算機技術應用。
通訊作者:王志鵬(1982—?),男,河南南陽人,副教授,主要研究方向:光學信息處理。