999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Matlab的音樂播放器設計

2012-06-21 09:58:02金昌旺
電氣電子教學學報 2012年4期
關鍵詞:音樂設計

韓 萍,周 航,金昌旺

(中國民航大學電子信息工程學院,天津 300300)

本文以“數字信號處理”課程為基礎,利用“Matlab程序設計”課程的知識,設計了一種音樂播放器,實現與一般的計算機媒體播放器相同的音樂播放功能。相比其它設計方法,本設計編程簡單,實現方便,且與專業課程知識結合緊密[1-3]。我們將其作為電子信息類本科學生的“數字信號處理”課程設計項目,用于提高學生設計能力和對知識的綜合應用能力。

1 音頻播放器總體設計方案

播放器由音頻控制和顯示兩大功能模塊組成。控制模塊主要實現對音頻信號的處理和播放,包括音樂播放、均衡、暫停、停止、音樂快進快退、音量控制和播放模式選擇等。顯示模塊用來實時顯示當前播放的歌曲名稱、時間進度、多首曲目列表、歌詞、歌手圖片及資料、日期和時間和動態波形等。播放器的總體結構如圖1所示。

圖1 播放器總體結構圖

播放器各模塊功能的實現依賴于對界面控件控制和各控件之間的邏輯關聯。界面設計采用的主要控件為按鈕、滾動條、文本、圖形顯示和下拉菜單等。各控件均有相應的回調函數,在函數下寫入程序實現該控件功能。控件之間的關聯主要通過控件回調函數間的變量傳遞和函數內部對各變量的處理實現。圖2所示為播放器運行界面。

圖2 播放器運行界面

若希望播放器脫離Matlab環境而獨立運行,可將源代碼通過VC++編譯生成exe文件,再將需要調用的文件一起打包即可[4,5]。

2 播放器控制模塊的設計

2.1 音樂播放

播放器的播放控制部分包括開始、繼續、暫停和停止四個功能,用兩個變量和一個定時器控制。其中一個變量st表示播放狀態,通過設置不同的取值分別對應“開始/繼續”,“暫停”和“停止”等功能。另一個變量s表示曲目播放進度,用定時器timer控制播放顯示模塊,實現與歌曲播放進度同步,定時器周期設為1秒。利用play和stop命令實現音樂播放和停止,將“開始/繼續”設為播放器的默認狀態。

2.2 播放模式切換

播放器設計了五種音樂播放模式:即單曲播放、單曲循環、順序播放、循環播放和隨機播放。其中,循環播放和隨機播放的播放次數不限,播放模式的默認狀態設為單曲播放。

播放器模塊采用popupmenu控件設計,播放模式設計成一個循環體,周期為1秒。設變量sk表示用戶點擊命令,取值為1至5,分別對應上述五種播放模式,sk的值從popupmenu中的value屬性中獲取。用變量k表示曲目列表中的曲目總數,變量num表示當前播放的曲目序號。播放模式設計流程圖如圖3所示。對于隨機播放模式,則用rand函數在1~k之間產生一個隨機數賦給num來實現。

圖3 播放模式控制流程圖

2.3 音樂播放快進/快退

該模塊設計成手動拖放滾動條的形式。當需要對播放進行快進/快退操作時,直接拖動滾動條至目標位置,曲目便自動跳至該位置進行播放。此時,滾動條光標所在位置對應的s值被自動返回,并利用函數timeslide停止聲音信號模擬輸出,刪除timer值,重新啟動聲卡從s處播放曲目并啟動time。

2.4 音樂均衡器

播放器中的音響處理效果主要體現在均衡器中,該模塊設計成手動調諧方式。典型的二階均衡器描述如下[6]:

式中,A(z)=[α - β(1+ α)z-1+z-2]/[1 - β(1+α)z-1+α z-2],|α|<1。這里 K,α 和 β 為可調參數,分別影響濾波器的帶寬和中心頻率,K影響濾波器的總增益,其不同取值下的幅頻特性曲線如圖5所示。

圖4 二階均衡器幅頻特性曲線

本文的播放器采用10個增益可調的巴特沃茲帶通濾波器并聯逼近均衡器。由于一般音頻信號的采樣率是44.1kHz,而人耳能夠接受的頻率范圍一般在20Hz至20kHz。因此,濾波器的中心頻率設為32Hz 至 16kHz,依次為 32Hz,64Hz,125Hz,250Hz,500Hz,1kHz,2kHz,4kHz,8kHz 和 16kHz。由于聲音信號頻譜能量主要集中在低頻段,因此濾波器在低頻段分布比較密集,以更好地實現對信號的音響處理效果。

用set函數設定十個濾波器的增益調節范圍為-12dB至12dB。當這十個濾波器的增益均為0dB時,彼此并聯疊加后可形成一個全通濾波器。均衡器設計采用butter函數,用wavread函數讀取wav格式音頻信號的時域序列及采樣率,聲音信號的濾波由filter函數實現。

3 播放器顯示模塊的設計

3.1 曲目列表顯示

播放曲目列表設計兼具顯示功能和控制功能,可以實現曲目的添加、刪除、清空及列表保存和讀取。并且在關閉播放器時程序會自動保存用戶當前的列表,下一次啟動播放器時,用戶已存的曲目被自動讀取并顯示出來,解決了每次啟動都須重新添加曲目的麻煩。

播放列表采用listbox控件,通過改變該控件的string屬性值來改變列表的顯示,列表的保存和讀取采用.mat格式文件(如:設為 playlist.mat)。在用戶退出播放器的同時,程序自動將曲目名、曲目總數k和曲目路徑三個變量保存到playlist.mat文件中,以便下次播放時自動顯示所保存的內容。

3.2 歌曲名、歌詞和歌手資料顯示

該模塊設計成靜態和動態顯示兩部分。

(1)靜態顯示包括歌曲名和歌手資料兩部分,由text控件實現,利用fopen和textscan函數打開和讀取已存在的.txt文本數據,并將數據轉化為字符型導入text控件的string屬性,即可顯示文字。

(2)動態顯示用來顯示播放曲目的歌詞,可以采用listbox控件實現。利用定時器每隔約3.5秒將listbox的value值自加1,相應的鼠標光標即向下一行移動,調整好滾動速度及歌詞文字間距,即可比較準確地顯示歌詞。

3.3 曲目播放進度顯示

該模塊設計成時間顯示和進度條動態顯示兩種形式。

(1)時間顯示是將變量s(含義同前)轉換為分和秒顯示,用set函數將text控件的string屬性值設置為[‘0’,num2str(m),‘:’,num2str(s)]。若 s<10,則設為[‘0’,num2str(m),‘:’,‘0’,num2str(s)]。num2str函數作用是將數值型轉換為字符型。每次運行顯示程序時,用set函數改變text控件的string屬性,即產生定時刷新的效果,實現動態顯示。

(2)進度條動態顯示是利用get函數定時獲取s值,并將s值設置為slider滾動條控件的value屬性值,滾動條會根據value值的變化移動到相應的位置。滾動條的max屬性值需提前設定為其顯示的總長度。這樣,滾動條光標相對于總長的位置即對應目前歌曲的播放進度。

(3)當執行暫停功能時,保存當前進度數據s,顯示狀態停留在原處不變。當執行“繼續”功能時,根據當前保留的顯示數據,將進度時間和滾動條均從當前處開始刷新,實現對曲目播放的實時跟蹤。

(4)該模塊通過定時器timer可自由設定精度、周期和執行次數等參數,十分方便,可以代替for和while等語句構成的循環體,大大提高了運算速度和精度。

3.4 音量和音調的動態波形顯示

該模塊用來展現動態且富有張力的視覺效果,設計為時域和頻域顯示兩部分。時域顯示音量的強度,用一條不斷跳躍的曲線表現,方法是將信號長度分段,每段約5000點,時長約0.1134秒。啟動定時器timer,用plot指令將各段信號繪制成波形,顯示在控件axes上。

頻域描述音調,用20根上下不斷跳轉的柱形圖表現。其方法是將各段時間信號進行傅里葉變換獲得其幅頻特性,利用bar函數繪制成柱狀圖,顯示在axes控件上。

為增強動態效果和界面美感,將顯示波形設計成紅、橙、黃、綠、藍、靛、紫七種顏色,由紅、綠、藍三基色合成。繪制時域波形時,直接在plot命令中設置三基色值,繪制頻域波形時,用colormap命令設置色調。

另外,該模塊還設計了“切換顯示”按鈕,通過點擊按鈕可以不斷在時域波形、頻域波形以及無顯示三者之間切換。

3.5 日期和時間顯示

音樂播放過程中可同時顯示當前日期、時間和星期。

該模塊主要使用clock和weekday兩個指令。clock指令自動讀取并返回電腦當前時間,返回結果為一個一行六列的double型數組。數組各項依次表示年、月、日、時、分和秒。將數組各項轉化為字符型后導入text控件的string屬性,即可顯示當前的時間。weekday指令返回當前的星期,用同樣方法進行顯示。由于顯示了分秒這樣小的時間單位,必須對數據進行刷新以達到準確顯示的目的。在開啟播放器后立即啟動定時器timer定時調用控制時間顯示函數,在該函數下不斷更新顯示數據。

3.6 其它模塊的設計

播放器除具有上述主要功能外,我們還利用popupmenu控件對播放器界面設計了主題切換功能,可使用戶自行選擇搭配各控件顏色和界面背景圖案,形成獨特的風格。

另外,在本播放器主界面上還設計了“幫助”窗口等其它功能模塊,用戶點擊后可查閱播放器的使用說明。其它如:修改窗口的名稱、窗口圖標修改和菜單欄的創建等。

[1]馮建元,音頻播放器的架構分析與關鍵技術的實現,[J].天津:計算機與網絡,2009年35卷20期,pp53-56

[2]段鳳云,基于ARM的數字音頻播放器的設計,[J].天津:實驗室科學,2010年6月,第l3卷,第3期,pp169-170

[3]劉林濤,田慧珍,基于Authorware的 wave音頻播放器的設計,[J].合肥:電腦知識與技術,2006年10期,pp116-117

[4]仲麟,MATLAB仿真技術與應用教程,[M].北京:國防工業出版社,2004

[5]張亮,王繼陽,MATLAB與C/C++混合編程,[M].北京:人民郵電出版社,2008

[6][美]Sanjit K.Mitra著,孫洪,余翔宇譯,[M].數字信號處理——基于計算機的方法(第二版),[M]北京:電子工業出版社,2005.

猜你喜歡
音樂設計
奇妙的“自然音樂”
何為設計的守護之道?
現代裝飾(2020年7期)2020-07-27 01:27:42
《豐收的喜悅展示設計》
流行色(2020年1期)2020-04-28 11:16:38
瞞天過海——仿生設計萌到家
藝術啟蒙(2018年7期)2018-08-23 09:14:18
音樂從哪里來?
藝術啟蒙(2018年7期)2018-08-23 09:14:16
圣誕音樂路
兒童繪本(2017年24期)2018-01-07 15:51:37
設計秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
有種設計叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
音樂
音樂
主站蜘蛛池模板: 女人毛片a级大学毛片免费| a国产精品| 亚洲成年人网| 广东一级毛片| 欧洲高清无码在线| 国产人人干| 国产精品开放后亚洲| 91色在线观看| 国产丝袜第一页| 国产18在线播放| 亚洲欧洲美色一区二区三区| 婷婷伊人久久| 天天做天天爱夜夜爽毛片毛片| 福利视频99| 亚洲免费三区| 国产91无码福利在线| 国产二级毛片| 91视频99| 97国产成人无码精品久久久| 青青网在线国产| 欧美a在线看| 国产精品免费福利久久播放| 91精品国产综合久久香蕉922| 欧美影院久久| 久久黄色免费电影| 国产美女在线观看| 国产亚洲精品自在久久不卡| 一级黄色网站在线免费看| 99re在线免费视频| 亚洲第一中文字幕| 国产亚洲精| 真实国产乱子伦视频| 制服丝袜 91视频| 久久不卡国产精品无码| 久久伊人操| 国产日韩欧美在线播放| www.91在线播放| 亚洲视频免| 欧美精品啪啪| 青青草国产在线视频| 五月综合色婷婷| 成年午夜精品久久精品| 国产爽爽视频| 成人福利在线免费观看| 午夜三级在线| 无码中文字幕精品推荐| 呦女精品网站| a级毛片免费在线观看| 欧美区一区二区三| 久久精品国产免费观看频道| 午夜精品福利影院| 久久不卡精品| 亚洲欧美日韩成人在线| 国产视频一二三区| 日韩A∨精品日韩精品无码| 国产91视频免费| 久久久久亚洲精品成人网| 永久在线播放| 老汉色老汉首页a亚洲| 亚洲成人一区二区三区| 免费一级α片在线观看| 国产91丝袜在线播放动漫| 亚洲精品视频网| 又粗又硬又大又爽免费视频播放| 国内黄色精品| 欧美福利在线观看| 天天综合网色中文字幕| 国产成人久视频免费| 无码精品一区二区久久久| 99re这里只有国产中文精品国产精品| 亚洲欧美一区二区三区图片| 99视频在线免费看| 国产尤物jk自慰制服喷水| 免费在线色| 中国国产高清免费AV片| 亚洲永久精品ww47国产| 久久精品人人做人人爽97| 韩日无码在线不卡| 夜夜拍夜夜爽| 国产成人91精品| 青青青国产视频| 久久夜夜视频|