基于MATLAB·GUI的音频文件播放器
2018-02-27王涛田述珍陈丁王志雄周慧
王涛 田述珍 陈丁 王志雄 周慧
摘要:基于MATLAB GUI的音频文件播放器的设计是随着社会大数据化提出的,Matlab软件是一种有效的分析工具,在数据分析时能使用一种快速、简捷、高效的软件进行数据处理工作。MATLAB如今已成为世界上最流行的科技应用软件之一,可以把使用者从繁杂、无聊的编程中解救出来,以便能够有更多的时间来学习其他专业领域。该项目利用Matlab强大的仿真功能和数据分析功能,通过Matlab·GUI界面进行音频播放器的设计。利用GUI界面设计的播放器具有音频播放、暂停、变速、多音频播放等功能。
关键词:M文件;MATLAB/GUI;人机交互;数据分析处理
中图分类号:TP37 文献标识码:A 文章编号:1009-3044(2018)35-0207-02
Abstract: The design of the audio file player Based on MATLAB GUI is proposed with the big data of society. Matlab software is an effective analysis tool, and can use a fast, simple and efficient software for data processing when analyzing data. MATLAB has now become one of the most popular technology applications in the world, saving users from complicated and boring programming so that they can have more time to learn other professional fields. This project uses Matlab's powerful simulation function and data analysis function to design audio player through Matlab GUI interface. The player designed using the GUI interface has music playback, pause, fast forward, fast retreat, multiple audio playback and other functions.
Key words: M file; MATLAB/GUI; human-computer interaction; data analysis and processing
1 背景
MATLAB是一款商业数学软件,主要用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,包括GUI和Simulink两大部分,具有完备的图形处理和仿真功能。
2 基于M文件的音频设计
2.1 MATLAB播放音频的前提
首先是获取一段音频,由于MATLAB自身内存的局限性,获取的音频不能很大。那么如何来获取一段音频呢?我们通过录音来获取,然后将其进行保存。实现代码如下:
开始录音:
record(handles.recObj);
结束录音:
stop(handles.recObj);
2.2 播放录音
获取录音数据通过getaudiodata函数来实现双通道的波形数据,通过audioplayer函数来实现播放功能。
代码如下:
handles.myRecording = getaudiodata(handles.recObj);
handles.playObj=audioplayer(handles.myRecording,handles.playSpeed*handles.recObj.SampleRate);
play(handles.playObj);
guidata(hObject, handles);
2.3 保存录音
通过uiputfile函数来保存文件,而真正保存波形文件的是audiowrite函数。
代码如下:
[file,path] = uiputfile(['soundDemo_Speed' num2str(handles.playSpeed) '.wav'],'Save recorded sound');
if file
audiowrite([path'\'file],handles.myRecording,handles.playSpeed*handles.recObj.SampleRate)
end
2.4 波形顯示
通过RecDisplay函数来实现波形显示功能,通过getaudiodata函数获取当前录音的波形数据,然后用plot函数在画布里面绘制波形图,最后通过drawnow函数加速图形刷新,设置刷新频率较快时可以运用此函数。
代码如下:
function RecDisplay(hObject, eventdata,handles)
%handles
handles.myRecording = getaudiodata(handles.recObj);
axes(handles.axes1)
plot((1:length(handles.myRecording))/handles.recObj.SampleRate,handles.myRecording)
drawnow;
3 基于GUI的音频设计
在MATLAB提供的GUI上利用MATLAB语言构建框架并编写核心代码是一种明智的选择。不但减少了编写代码繁重的工程量,而且制作出的软件具有界面良好和方便进行各种数据处理及图像分析等特点。GUI程序是在图形界面下创建于用户交互的控件,使用户可以通过操作这些交互控件实现特定的功能,并且可以返回显示在程序界面相应的结果显示区域中。该项目通过GUI进行音频的设计来说明GUI的功能和使用。
3.1 总体界面的设计
根据界面的显示,通过GUI各功能键设计了运行界面,其总体设计包括录音模块、播放模块、关闭模块、变速、多频播放模块。如图1、2、3、4、5、6。
3.2 部分按钮代码实现
3.2.1 多频功能实现
通过设置一个radiobutton 键来实现多频的功能,当点击该按钮时,增加它的频率分量,使其含有丰富的频率分量。通过设置一个全局变量,当选中该控件时,全局变量的值改变,程序代码如下:
Global r;
r=get(handles.duopin,value); %多频的按钮是否选中
3.2.2 主界面退出窗口
通过设置一个pushbutton键来实现,在该键callback下,编写回调函数。程序如下:
ss=questdlg('你真的要退出吗?','退出信息窗口!','不,我还想看看!','是的,我要退出!','是的,我要退出!');
switch ss
case '是的,我要退出!'
delete(handles.figure1);
end
%当按下退出按钮时,得到一个退出信息窗口提示
4 结束语
Matlab不但具有强大的图形显示功能,而且具有丰富的人机交互界面设计的功能,通过Matlab中的GUI,可以进行已有的M文件的仿真,又能通过人机交互的方式显示仿真结果。在GUI设计时,可以将设计的GUI界面保存为fig文件,与此同时生成相应的M文件,便于用户随时进行编辑处理。利用Matlab/GUI进行界面设计可以为用户提供友好、方便、形象的图形显示和数据分析处理,方便用户使用。
参考文献:
[1] 王肖霞,杨风暴,袁华. 利用MATLAB创建用户界面[J]. 脑开发与应用, 2007(1).
[2] 郑阿奇. Matlab实用教程[M]. 北京:北京电子工业出版社, 2012.
[3] 徐明远,邵玉斌. Maatlab仿真在通信与电子工程中的应用[M]. 西安:西安电子科技大学出版社, 2009.
[4] 施晓红,周佳. 精通GUI图形界面编程[M]. 北京:北京大学出版社, 2003.
[5] 冯建元. 音频播放器的架构分析与关键技术的实现[J].计算机与网络, 2009(20).
[6] 段凤云. 基于ARM的数字音频播放器的设计[J].实验室科学, 2010(6).
[7] 刘林涛,田慧珍. 基于Authorware的wave音频播放器的设计[J].电脑知识与技术, 2006(29).
[8] 仲麟. MATLAB仿真技術与应用教程[M].北京: 国防工业出版社, 2004.
[9] 张亮, 王继阳. MATLAB与C/C++混合编程[M].北京: 人民邮电出版社, 2008.
[10] Sanjit K Mitra.数字信号处理——基于计算机的方法[M]. 2版.孙洪, 余翔宇, 译. 北京: 电子工业出版社, 2005.
[通联编辑:谢媛媛]