• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于Matlab/GUI的音樂播放器設計

      2015-07-09 21:17燕麗紅
      現(xiàn)代電子技術 2015年8期
      關鍵詞:人機交互

      燕麗紅

      摘 要: 隨著社會大數(shù)據(jù)化的提出,數(shù)據(jù)分析時要求能使用一種快速、簡潔、高效的軟件進行數(shù)據(jù)處理工作,其中Matlab軟件就是一種有效的分析工具。利用Matlab強大的仿真和數(shù)據(jù)分析功能,通過編程M文件和Matlab GUI界面設計進行了音樂播放器的設計,其中M文件編程可以播放任意歌曲,GUI界面設計的播放器具有音樂播放、暫停、單音播放、多音播放、視頻播放、歌詞顯示等功能。實踐表明,在教學上采用Matlab軟件進行系統(tǒng)設計具有良好的實用性,也可以很直觀、方便地進行人機交互,教學效果良好。

      關鍵詞: M文件; Matlab/GUI; 數(shù)據(jù)分析功能; 人機交互

      中圖分類號: TN911?34; G642 文獻標識碼: A 文章編號: 1004?373X(2015)08?0114?03

      Design of music player based on Matlab/GUI

      YAN Li?hong

      (Information Engineering College, Xian Eurasia University, Xian 710065, China)

      Abstract: with the occurrence of the big?datamation, the rapid, simple and efficient softwares are required to realize data processing when carrying out data analysis, in which the Matlab software is an effective analysis tool. With powerful simulation and data analysis function of Matlab, the music player was designed by means of M file programming and Matlab GUI interface design. The M file programming can play any song, and the player designed with GUI interface has the functions of play, pause, monophonic music play, multitone play, video playback, lyrics display, etc. The practice shows that the Matlab software for system design has good practicability in teaching, with which man?machine interaction can be realized intuitively and expediently, and the perfect teaching effect can be achieved.

      Keywords: M File; Matlab/GUI; data analysis function; man?machine interaction

      0 引 言

      Matlab是美國MathWorks公司設計的數(shù)學軟件,主要包括Matlab/Simulink和GUI設計兩大部分[1?2]。Matlab可以進行矩陣運算、繪制函數(shù)和數(shù)據(jù)、創(chuàng)建用戶界面、系統(tǒng)仿真設計等,主要應用于工程計算、信號處理與通信、圖像處理、控制設計等領域。

      筆者在近幾年的教學中,結(jié)合應用型人才培養(yǎng)的目標,采用CDIO工程理念,能充分根據(jù)學生的興趣和愛好進行Matlab教學,針對其系統(tǒng)仿真和人機界面設計兩大功能進行模塊主題式教學,充分調(diào)動了學生學習的積極性。本文采用M文件和GUI界面進行了音樂播放器的設計,并總結(jié)了兩者之間的聯(lián)系。

      1 基于M文件的音樂設計

      1.1 Matlab播放音樂的前提

      Matlab具有強大的功能,主要歸功于強大的內(nèi)置函數(shù)功能[3?4]。在Matlab中,可以借助sound函數(shù)來播放聲音,其格式為:

      sound(Y,F(xiàn)S) :通過揚聲器產(chǎn)生一個采樣頻率為FS的信號Y,其中Y的范圍定義為-1.0≤y≤1.0,超過這個范圍的值將被重新調(diào)整,以產(chǎn)生更符合人耳的聲音。 同時當Y為N×2大小的矩陣時,可以通過該函數(shù)產(chǎn)生立體聲。

      sound(Y):產(chǎn)生默認的采樣頻率為8 192 Hz的聲音。

      sound(Y,F(xiàn)S,BITS):產(chǎn)生按位采樣的聲音,其中大部分的平臺支持BITS=8 or 16。

      同時可以通過wavwrite 產(chǎn)生*.wav視頻/音頻文件,其格式為:

      wavwrite(Y,F(xiàn)S,NBITS,WAVEFILE):寫入一個采樣頻率為FS Hz,位數(shù)為NBITS (其中NBITS 必須為8, 16, 24或32)的數(shù)據(jù)信息Y,并生成相應的WAVE文件。如果產(chǎn)生立體聲的數(shù)據(jù)需要建立二維矩陣。

      wavwrite(Y,F(xiàn)S,WAVEFILE):產(chǎn)生WAV文件時 NBITS=16 b。

      wavwrite(Y,WAVEFILE):產(chǎn)生WAV文件時NBITS=16 b并且FS=8 000 Hz。

      1.2 頻率轉(zhuǎn)換

      本文根據(jù)《荷塘月色》的歌譜(如圖1所示),通過學習相應的樂理知識后,生成了對應的樂譜矩陣,以進行歌曲的播放[5?6]。其中產(chǎn)生的音符:1?do;2?re;3?mi;4?fa;5?so;6?la;7?ti。音階:0?低音;1?中音;2?高音;3?超高音;音長:指的是節(jié)拍,最低支持1/16拍。

      圖1 《荷塘月色》的簡譜

      依據(jù)《荷塘月色》簡譜中的譜音,節(jié)奏,音節(jié),高低音在matlab *.m文件中建立對應代碼,依據(jù)響應函數(shù)實現(xiàn)。

      paragraph1= [1 1 6 5 6 1 1 2 3 2 2 1 2 2 5 5 3 3 2 3 1 1 6 5 5 3 2 3 2 1 2 2 1 2 2 3 2 1 6 2 1;

      0 0 ?1 ?1 ?1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ?1 ?1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ?1 0 0;

      0.5 1 0.5 1 1 1 0.5 0.5 2 0.5 1 0.5 1 0.5 0.5 0.5 0.5 0.5 0.5 2 0.5 1 0.5 1 1 0.5 0.5 0.5 0.5 2 0.5 1 0.5 0.5 1 0.5 0.5 0.5 0.5 0.5 2];

      以上代碼功能說明:第一部分為所演奏歌曲的譜;第2部分為各譜音對應的音調(diào);第3部分為各譜音對應的音節(jié)。

      1.3 歌曲播放

      fs = 8000;

      sound_pose = [0 2 4 5 7 9 11 0:12];

      y = zeros(1, sum(music(3,:))*fs + 1); %初始化

      cure_pose = 1;

      for count = 1 : length(music)

      cure_sound_name = music(1, count); %處理音樂

      cure_sound_pose= sound_pose(cure_sound_name);

      %產(chǎn)生音樂

      cure_freq = 220 * 2 .^ ((cure_sound_pose + rhythm + 3) / 12 + music(2, count));

      cure_sound = generate_tune(cure_freq, music(3, count), fs);

      y(1,cure_pose:(cure_pose+ length(cure_sound) ? 1)) = cure_sound;

      cure_pose=cure_pose+ length(cure_sound);

      為了歌曲播放的連續(xù)性,需要對其頻率進行修正,其代碼為:

      function y = amendment(p, l)

      if p < 0.2

      y = p*5;

      elseif p < 0.3

      y = 1.8 ? p * 4;

      else

      y = 0.6 * exp((0.3 ? p)/5);

      end

      2 基于GUI的音樂設計

      在Matlab 提供的GUI 上利用Matlab 語言編寫核心代碼并構(gòu)建框架是一種不錯的選擇。這不但減少了代碼編寫的工程量,而且制作出的軟件同時具有界面友好和能夠方便進行各種數(shù)據(jù)處理及圖像分析等特點[7?8]。圖形用戶界面(Graphic User Interface,GUI)的程序是在圖形界面[9]下創(chuàng)建與用戶交互的控件元素,使用戶可以通過操作這些交互控件實現(xiàn)特定的功能,并且可以返回顯示在程序界面相應的結(jié)果顯示區(qū)域中[10]。本文通過GUI的GUIDE進行音樂鍵盤的設計來說明GUI的功能和使用。

      2.1 總體界面顯示

      根據(jù)鍵盤的顯示,通過GUI各功能鍵設置了音樂鍵盤,其總體設計包括單頻發(fā)音模塊、多頻模塊、播放譜曲模塊、播放視頻模塊和關閉模塊。

      圖2中鍵盤的黑、白鍵通過Pushbutton控件相應屬性改變進行設置。

      圖2 音樂鍵盤的總體設計

      2.2 部分按鍵代碼實現(xiàn)

      (1) 關閉功能模塊

      通過設置一個push button鍵來實現(xiàn),在該鍵callback下,編寫該回調(diào)函數(shù)。程序如下:

      selection=questdlg([′是否關閉′,get(gcf,′Name′),′窗口?′], ...

      [′Close ′,get(gcf,′Name′),′...′],′是′,′否′,′是′);

      %當選擇退出按鈕時,得出一個問是否確定關閉的框

      if strcmp(selection,′否′)

      return;

      else

      clc;

      clear all;

      delete(gcf);

      end

      (2) 多頻功能模塊

      通過設置一個radio button 來實現(xiàn)雙音多頻的功能,當選中該按鈕時,則增加它的頻率分量。使其含有豐富頻率分量。通過設置一個全局變量,當選中該控件時,全局變量的值改變,程序如下:

      function duopin_Callback(hObject, eventdata, handles)

      global r;

      r=get(handles.duopin,′value′); %多頻的按鈕是否選中

      2.3 歌曲的顯示

      通過查閱資料,發(fā)音頻率對應的表達式為f=440*2^((f0-49)/12),當所發(fā)音為低音時f0的取值為31~37,發(fā)中音時f0的取值為40~46,發(fā)高音時f0的取值為49~55。播放音樂可以通過設置一個push button鍵來實現(xiàn),通過編輯該鍵callback功能通過wavplay函數(shù)就可以播放該歌曲了。

      A=440; %標準音A

      ft=44100; %頻率

      f0=ft/2;

      scale12=A4/2^(9/12)*2.^((0:11)/12);

      ma1=[1 3 5 6 8 10 12]; %七音符

      score=[1 1 5 5 6 6 5,...do do sol sol la la sol?

      4 4 3 3 2 2 1,...fa fa mi mi re re do?

      5 5 4 4 3 3 2,...sol sol fa fa mi mi re?

      5 5 4 4 3 3 2,...sol sol fa fa mi mi re?

      1 1 5 5 6 6 5,...do do sol sol la la sol?

      4 4 3 3 2 2 1];%fa fa mi mi re re do? %樂譜

      3 結(jié) 語

      Matlab具有強大的圖形顯示功能,同時具有豐富的人機交互界面設計的功能,通過Matlab中的GUIDE創(chuàng)建GUI設計時,既能將已有的M文件進行仿真,又能將仿真的圖形結(jié)果通過人機交互的方式顯示,從而給使用者留下更形象、深刻的印象。而在GUI設計時,可以將設計的GUI界面保存為Fig文件的同時生成對應的M文件,方便用戶隨時進行編輯處理。利用Matlab/GUI進行界面設計可以為用戶提供友好、方便、形象的圖形顯示和數(shù)據(jù)分析處理,將會在教學和工程應用上帶來良好的效果。

      參考文獻

      [1] 鄭阿奇.Matlab實用教程[M].3版.北京:北京電子工業(yè)出版社,2012.

      [2] 徐明遠,邵玉斌.Matlab仿真在通信與電子工程中的應用[M].西安:西安電子科技大學出版社,2009.

      [3] 鄔曉紅,唐紅軍,趙琳,等.基于Matlab GUI的說話人識別測試平臺設計[J].現(xiàn)代電子技術,2013,36(8):59?62.

      [4] 沈媛媛.基于Matlab的數(shù)字信號處理綜合性實驗設計[J].實驗室研究與探索,2009,28(8):60?61.

      [5] 黃飛,李燦平,任小慶,等.基于Matlab/GUI的圖像處理軟件開發(fā)[J].長沙通信職業(yè)技術學院學報,2010,9(3):22?25.

      [6] 白曉梅,王茹,趙云兵.基于Delta3D的氣象仿真框架設計與實現(xiàn)[J].現(xiàn)代電子技術,2012,35(4):29?32.

      [7] 李京秀.基Matlab GUI的電路特性演示平臺設計[J].現(xiàn)代電子技術,2012,35(22):160?162.

      [8] 施曉紅,周佳.精通GUI 圖形界面編程[M].北京:北京大學出版社,2003.

      [9] 龔妙昆.基于Matlab的GUI設計應用軟件[J].微型電腦應用,2011(8):53?56.

      [10] 陳瑞峰,左曙光,郭偉.基于Matlab GUI的信號分析系統(tǒng)[J].佳木斯大學學報,2009,27(5):645?647.

      猜你喜歡
      人機交互
      某型柴油機虛擬維修系統(tǒng)研究
      基于虛擬現(xiàn)實技術的九江城市交通事故模擬系統(tǒng)設計
      人機交互課程創(chuàng)新實驗
      多點噪聲遠程自動采集系統(tǒng)設計
      沙坪坝区| 鄂州市| 新密市| 布尔津县| 游戏| 乌苏市| 龙井市| 同仁县| 镶黄旗| 余干县| 孝感市| 汕尾市| 琼海市| 华池县| 宜君县| 贺兰县| 长阳| 富平县| 类乌齐县| 江达县| 札达县| 金川县| 萨嘎县| 那曲县| 营山县| 蒲江县| 西乌珠穆沁旗| 息烽县| 柳江县| 卫辉市| 大庆市| 西城区| 隆安县| 沙河市| 桓台县| 呼图壁县| 太湖县| 尼勒克县| 吉林市| 樟树市| 刚察县|