亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Matlab/GUI的音樂播放器設(shè)計(jì)

        2015-07-09 21:17:00燕麗紅
        現(xiàn)代電子技術(shù) 2015年8期

        燕麗紅

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

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

        中圖分類號(hào): TN911?34; G642 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 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是美國(guó)MathWorks公司設(shè)計(jì)的數(shù)學(xué)軟件,主要包括Matlab/Simulink和GUI設(shè)計(jì)兩大部分[1?2]。Matlab可以進(jìn)行矩陣運(yùn)算、繪制函數(shù)和數(shù)據(jù)、創(chuàng)建用戶界面、系統(tǒng)仿真設(shè)計(jì)等,主要應(yīng)用于工程計(jì)算、信號(hào)處理與通信、圖像處理、控制設(shè)計(jì)等領(lǐng)域。

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

        1 基于M文件的音樂設(shè)計(jì)

        1.1 Matlab播放音樂的前提

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

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

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

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

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

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

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

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

        1.2 頻率轉(zhuǎn)換

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

        圖1 《荷塘月色》的簡(jiǎn)譜

        依據(jù)《荷塘月色》簡(jiǎn)譜中的譜音,節(jié)奏,音節(jié),高低音在matlab *.m文件中建立對(duì)應(yīng)代碼,依據(jù)響應(yīng)函數(shù)實(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];

        以上代碼功能說(shuō)明:第一部分為所演奏歌曲的譜;第2部分為各譜音對(duì)應(yīng)的音調(diào);第3部分為各譜音對(duì)應(yīng)的音節(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ù)性,需要對(duì)其頻率進(jìn)行修正,其代碼為:

        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的音樂設(shè)計(jì)

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

        2.1 總體界面顯示

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

        圖2中鍵盤的黑、白鍵通過Pushbutton控件相應(yīng)屬性改變進(jìn)行設(shè)置。

        圖2 音樂鍵盤的總體設(shè)計(jì)

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

        (1) 關(guān)閉功能模塊

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

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

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

        %當(dāng)選擇退出按鈕時(shí),得出一個(gè)問是否確定關(guān)閉的框

        if strcmp(selection,′否′)

        return;

        else

        clc;

        clear all;

        delete(gcf);

        end

        (2) 多頻功能模塊

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

        function duopin_Callback(hObject, eventdata, handles)

        global r;

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

        2.3 歌曲的顯示

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

        A=440; %標(biāo)準(zhǔn)音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é) 語(yǔ)

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

        參考文獻(xiàn)

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

        [2] 徐明遠(yuǎn),邵玉斌.Matlab仿真在通信與電子工程中的應(yīng)用[M].西安:西安電子科技大學(xué)出版社,2009.

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

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

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

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

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

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

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

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

        午夜丰满少妇性开放视频| 欧美群妇大交群| 国产大屁股喷水视频在线观看| 7777色鬼xxxx欧美色妇| 毛片大全真人在线| 国产精品第一二三区久久蜜芽| 在线精品一区二区三区| 午夜精品一区二区三区在线观看| 亚洲国产美女在线观看| 无码流畅无码福利午夜| 国产高清大片一级黄色| 91精品国产在热久久| 久久精品无码一区二区日韩av| 午夜成人鲁丝片午夜精品| 色一情一乱一伦一区二区三欧美| 国产欧美另类精品久久久| 蜜桃av区一区二区三| 91久久精品美女高潮喷白浆| 蜜臀av一区二区三区久久| 国产精品久久精品第一页| 亚洲精品熟女国产| 波多野结衣aⅴ在线| 一区二区av日韩免费| 中文字幕熟女激情50路| 日本道免费一区二区三区日韩精品| 亚洲欧美中文字幕5发布| 好男人日本社区www| 伊人久久综在合线亚洲不卡| 国产精品亚洲婷婷99久久精品| 亚洲一本二区偷拍精品| 国产免费又爽又色又粗视频| 久久久精品456亚洲影院| 精品不卡久久久久久无码人妻 | 精品人妻伦一二三区久久| 一本色道久久88综合日韩精品| 亚洲成色在线综合网站| 亚洲欧洲AV综合色无码| 国产日本精品一区二区| 极品尤物人妻堕落沉沦| 亚洲国产精品久久人人爱| 欧美深夜福利网站在线观看|