基于Matlab的MP3播放器
- 格式:doc
- 大小:125.50 KB
- 文档页数:11
matlab中audiodevicereader的用法使用audiodevicereader函数可以从音频设备中实时读取音频数据。
在Matlab 中,可以使用audiodevicereader函数来访问麦克风或其他音频输入设备。
本文将介绍audiodevicereader函数的用法,并提供一些示例代码来帮助读者更好地理解和掌握这个函数。
1. 创建一个audiodevicereader对象要使用audiodevicereader函数,首先需要创建一个audiodevicereader对象。
可以使用以下语法创建一个audiodevicereader对象:matlabdeviceReader = audiodevicereader默认情况下,创建的audiodevicereader对象将使用系统中的默认音频输入设备。
如果有多个音频输入设备,可以使用'AudioDevice'参数指定要使用的设备。
例如:matlabdeviceReader = audiodevicereader('AudioDevice', 'Microphone (Realtek High Defini')2. 设置对象的属性创建audiodevicereader对象后,可以设置一些属性来控制音频输入的方式。
一些常用的属性包括:- SampleRate: 设置音频采样率,默认为系统默认采样率。
- SamplesPerFrame: 设置每帧中的音频样本数,默认为1024个样本。
- ChannelMappingSource: 设置通道映射源,默认为'Auto',自动选择可用的通道映射。
- OutputDataType: 设置输出数据类型,默认为'double'。
- NumChannels: 设置通道数,默认为1。
可以使用以下命令来设置属性值:matlabdeviceReader.SampleRate = 44100;deviceReader.SamplesPerFrame = 2048;deviceReader.ChannelMappingSource = 'Manual';deviceReader.OutputDataType = 'int16';deviceReader.NumChannels = 2;3. 读取音频数据设置完audiodevicereader对象的属性后,可以使用read函数来读取音频数据。
matlab uiopen用法-回复使用MATLAB中的uiopen函数可以打开并导入各种不同格式的文件。
该函数提供了用户界面,允许用户选择要打开的文件,并将其导入到MATLAB工作区中。
在本文中,我们将详细介绍uiopen函数的用法,并给出一些例子来进一步说明其功能和灵活性。
第一步:了解uiopen函数的语法和参数uiopen函数的基本语法如下:uiopenuiopen('filename')uiopen('filename', 'method')其中,'filename'表示要打开的文件名,可以包括文件的完整路径。
'method'参数指定了文件的打开方式,可以是以下几种选项之一:'matlab'-打开MATLAB格式的文件;'text'-打开文本文件;'image'-打开图像文件;'sound'-打开声音文件;'binary'-以二进制格式打开文件。
如果没有指定'method'参数,默认情况下,uiopen函数将尝试根据文件的扩展名来确定文件的类型。
第二步:使用uiopen函数打开MATLAB格式的文件首先,让我们来看一个简单的例子,假设我们有一个名为'mydata.mat'的MATLAB数据文件,其中包含一些变量。
我们可以使用uiopen函数将其打开并将其导入到MATLAB工作区中。
为此,我们只需在命令行窗口中输入以下命令:uiopen('mydata.mat')这将打开一个对话框,允许我们选择要打开的文件。
选择'mydata.mat'文件后,函数将读取文件中的所有变量,并在工作区中创建相应的变量。
第三步:使用uiopen函数打开文本文件uiopen函数还可以用于打开和导入文本文件。
基于MATLAB的音频处理技术研究第一章引言音频处理技术是数字信号处理领域的一个重要分支,在音频信号采集、分析、增强和合成等方面有着广泛的应用。
随着数字信号处理技术的不断发展,基于MATLAB的音频处理技术也得到了快速的发展和应用。
本文将介绍MATLAB在音频处理领域的应用和研究,然后重点分析基于MATLAB的音频信号预处理和特征提取技术。
第二章 MATLAB在音频处理中的应用MATLAB是一种强大的数学仿真软件,其内置了丰富的数学分析工具和信号处理库,可以广泛应用于信号处理、数字通信、嵌入式系统设计等领域。
在音频处理领域,MATLAB提供了丰富的函数和工具箱,可以对音频进行采集、分析、合成和处理等任务。
2.1 音频采集MATLAB提供了嵌入式硬件支持包,可以连接各种类型的音频设备,如麦克风、音频接口等。
用户可以使用MATLAB编写程序,对音频进行实时采集和录制,并实时在MATLAB的界面上进行显示和处理。
2.2 音频分析MATLAB提供了许多用于音频信号分析的工具箱,如信号处理工具箱、音频工具箱和语音处理工具箱等。
用户可以利用这些工具箱进行频域分析、时域分析、滤波、FFT、STFT和解调等操作,以及进行各种音频信号的特征提取和分类。
2.3 音频合成MATLAB提供了各种音频合成的工具箱,如声学模型工具箱、可重复性工具箱和音频合成器等。
用户可以利用这些工具箱进行音频信号的合成和生成,例如混响效果、合成乐器音效等。
第三章基于MATLAB的音频信号预处理技术MATLAB提供了许多音频信号预处理的工具,这些工具可以在进行音频信号分析和特征提取之前对信号进行预处理,如降噪、去混响、去噪声,以及去掉杂音等。
3.1 降噪降噪是去除音频信号中的噪音干扰,使得信号更加清晰的重要步骤。
MATLAB提供了多种降噪算法,例如小波阈值法、基于分量分析的降噪方法和基于统计学习的降噪方法等。
这些算法可以对音频信号进行有效的降噪,从而提高信号的质量,提高后续分析的准确性。
河南理工大学计算机科学与技术学院毕业设计材料清单2008—2009学年第二学期设计题目基于ARM的音频播放器学生姓名刘金龙专业班级计算机05--1班学号0502010113指导教师安吉宇2009年5月25日毕业设计(论文)任务书专业班级计算机05—1班学生姓名刘金龙一、题目基于ARM的音频播放器二、主要任务与要求三、起止日期2009 年3月12 日至2009 年 5 月25 日指导教师签字(盖章)系主任签字(盖章)年月日毕业设计(论文)评阅人评语专业班级学生姓名题目评阅人签字(盖章)职称工作单位年月日毕业设计(论文)评定书专业班级学生姓名题目指导教师签字(盖章)职称年月日毕业设计(论文)答辩许可证经审查,专业班同学所提交的毕业设计(论文),符合学校本科生毕业设计(论文)的相关规定,达到毕业设计(论文)任务书的要求,根据学校教学管理的有关规定,同意参加毕业设计(论文)答辩。
指导教师签字(盖章)年月日根据审查,准予参加答辩。
答辩委员会主席(组长)签字(盖章)年月日毕业设计(论文)答辩委员会(小组)决议院(系)专业班同学的毕业设计(论文)于年月日进行了答辩。
题目答辩委员会成员主席(组长)委员(成员)委员(成员)委员(成员)委员(成员)委员(成员)委员(成员)答辩前向毕业设计答辩委员会(小组)提交了如下资料:1、设计(论文)说明共页2、图纸共张3、评阅人意见共页4、指导教师意见共页根据学生所提供的毕业设计(论文)材料、评阅人和指导教师意见以及在答辩过程中学生回答问题的情况,毕业设计(论文)答辩委员会(小组)做出如下决议。
一、毕业设计(论文)的总评语二、毕业设计(论文)的总评成绩毕业设计答辩委员会主席(组长)签名委员(组员)签名年月日摘要在信息化程度很高的今天,ARM 微处理器以其小型、快速、低能耗、集成式的32位的RISC 架构内核的优势,使其技术的应用几乎已经深入到各个领域,如工业控制领域,无线通讯领域,成像和安全产品以及消费电子产品领域。
mp3文件播放器源代码头文件代码(resource。
H)//{{NO_DEPENDENCIES}}// Microsoft Developer Studio generated include file.// Used by Script1.rc//#define IDI_ICON1 101#define IDI_MAINICON 101// Next default values for new objects//#ifdef APSTUDIO_INVOKED#ifndef APSTUDIO_READONL Y_SYMBOLS#define _APS_NEXT_RESOURCE_V ALUE 102#define _APS_NEXT_COMMAND_V ALUE 40001#define _APS_NEXT_CONTROL_V ALUE 1000#define _APS_NEXT_SYMED_V ALUE 101#endif#endif主程序代码(main)#include <windows.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <conio.h>#include <dshow.h>#pragma comment( lib, "Strmiids.lib")#pragma comment( lib, "winmm.lib" )#define V_RETURN(x) { hr = x; if( FAILED(hr) ) { return hr; } }////////////////////////////////////////////////////////////////////////////变量定义:IGraphBuilder* pGBuilder;IMediaPosition* pMPos;//////////////////////////////////////////////////////////////////////////HRESULT InitDirectShow(){HRESULT hr;CoInitialize(NULL); //初始化COM//创建各个对象CoCreateInstance(CLSID_FilterGraph, NULL,CLSCTX_INPROC, IID_IGraphBuilder, (void**)&pGBuilder);V_RETURN(pGBuilder->QueryInterface(IID_IMediaControl, (void**)&pMControl));V_RETURN(pGBuilder->QueryInterface(IID_IMediaPosition, (void**)&pMPos));return S_OK;}HRESULT LoadMusicFile(const char *path){HRESULT hr;CHAR strSoundPath[MAX_PATH]; //存储音乐所在路径WCHAR wstrSoundPath[MAX_PATH]; //存储UNICODE形式的路径strcpy(strSoundPath, path);MultiByteToWideChar(CP_ACP, 0, strSoundPath, -1,wstrSoundPath, MAX_PATH);V_RETURN(pGBuilder->RenderFile(wstrSoundPath, NULL)); //调入文件return S_OK;HRESULT Play(){HRESULT hr;//播放MP3的方法十分简单:return S_OK;}HRESULT Stop(){//最后,我们要停止播放音乐并释放各个对象:V_RETURN(pMControl->Stop()); //停止播放return S_OK;}void FreeDirectShow()//释放对象CoUninitialize(); //释放COM}//////////////////////////////////////////////////////////////////////////int main(){char cmd[255] = {NULL}, path[MAX_PATH] = {NULL};if(FAILED(InitDirectShow())){getch();return 1;}while(1){printf("*****这个是用于制作游戏的音乐播放程序,由于时间关系和便于学习我不printf("使用方法--输入以下命令:\n#载入并播放音乐:play\n#停止播放:scanf("%s", cmd);if(!stricmp(cmd, "play")){printf("请输入文件名:");printf("正在处理命令...\n", cmd, path);if(FAILED(LoadMusicFile(path))){getch();path[0] = 0;}else Play();else{printf("正在处理命令...\n", cmd, path);if(!stricmp(cmd, "replay")){Stop();}else if(!stricmp(cmd, "stop"))Stop();else if(!stricmp(cmd, "exit"))goto quit;else{printf("无法识别的命令");getch();}}quit:FreeDirectShow();}。
MP3解码的优化及实现
吕琛;王小雪;杨会成
【期刊名称】《合肥工业大学学报(自然科学版)》
【年(卷),期】2011(034)008
【摘要】目前MP3技术已经非常成熟,现阶段对于MP3的研究热点是对原始MP3标准在实现过程中的优化以及如何在低成本低功耗的平台上实现MP3.在整个MP3编解码流程中,IMDCT是运算量最大最耗时的部分之一,因此文章提出了一种基于IMCT递归循环实现方法的优化算法.该算法是在已有文献递归算法的基础上进行了改进,并结合硬件系统结构的模块化和规则性,减小了所需硬件资源需求并保持了运算速度;分别使用Modelsim和Matlab软件开发工具对算法方案进行了验证和实现.
【总页数】5页(P1174-1177,1231)
【作者】吕琛;王小雪;杨会成
【作者单位】安徽工程大学安徽省电气传动与控制重点实验室,安徽芜湖241000;安徽工程大学安徽省电气传动与控制重点实验室,安徽芜湖241000;安徽工程大学安徽省电气传动与控制重点实验室,安徽芜湖241000
【正文语种】中文
【中图分类】TN912.3
【相关文献】
1.MP3/AAC解码器中Huffman硬件加速器设计与实现 [J], 杨浪花;张涛;于凤萍;戴杰
2.MP3解码器的SOPC实现 [J], 程维好;张歆奕
3.基才ARM平台的MP3软解码算法研究与实现 [J], 王飞飞;别、志远
4.基于定点DSP的MP3解码算法优化与实现 [J], 叶晓舟;邓峰;曾学文;王劲林
5.基于哈特雷变换实现MP3离散余弦解码算法优化研究 [J], 高智勇
因版权原因,仅展示原文概要,查看原文内容请购买。
“matlab中sound函数的用法”在Matlab中,sound函数是用来播放音频信号的一个非常有用的工具。
它可以帮助我们在编写程序时对音频信号进行实时的调试和分析。
在本文中,我将深入探讨sound函数的具体用法及其在音频信号处理中的应用。
1. sound函数的基本用法让我们来了解一下sound函数的基本用法。
在Matlab中,我们可以使用sound函数来播放一个已经加载到工作区的音频信号。
具体的语法格式为:```matlabsound(y, Fs)```其中,y代表要播放的音频信号,Fs代表音频信号的采样率。
通过指定这两个参数,我们就可以使用sound函数来播放音频信号了。
2. 播放音频文件除了播放已经加载到工作区的音频信号外,sound函数还可以直接播放音频文件。
我们可以使用如下的语法格式:```matlabsound(y, Fs)```在这里,y可以是一个音频文件的路径,也可以是一个已经加载到工作区的音频信号。
Fs代表音频信号的采样率。
通过这种方式,我们可以很方便地对音频文件进行播放。
3. 对音频信号进行实时调试在音频信号处理的过程中,sound函数还可以帮助我们对音频信号进行实时的调试。
比如说,在我们对音频信号进行滤波或者其他处理时,我们可以使用sound函数来实时地听取处理后的效果。
这样可以极大地提高我们对音频信号处理效果的直观感受。
4. 我的个人观点和理解sound函数在Matlab中是一个非常有用的工具,它为我们处理音频信号提供了很大的便利。
通过sound函数,我们可以轻松地对音频信号进行播放和实时调试,这对于我们进行音频信号处理和分析非常有帮助。
sound函数的灵活性和方便性也使得我们在音频信号处理的过程中能够更加高效地完成工作。
通过上面的介绍,我们可以看到sound函数在Matlab中的重要性和实用性。
它不仅可以帮助我们对音频信号进行播放和实时调试,还可以为我们进行音频信号处理提供很大的帮助。
基于STM32的MP3播放器设计与实现设计和实现基于STM32的MP3播放器需要完成以下几个主要步骤:硬件设计、软件编程以及调试。
以下将详细描述每个步骤,并提供基于Keil MDK的完整源代码。
硬件设计:1.硬件平台选择:选择适合于MP3播放器的STM32系列单片机,如STM32F4系列。
2.音频芯片选择:选择具有I2S或SPI接口的音频解码芯片,如VS1053芯片。
3.外设选择:选择适当的外设来控制用户输入(如按键)、显示屏幕和存储介质(如SD卡)。
4.硬件连接:按照芯片和外设的接口要求,连接单片机、音频解码芯片、按键、显示屏幕和SD卡等。
软件编程:1.硬件初始化:初始化单片机和外设的引脚配置、时钟和中断等。
2.外设驱动编写:编写外设的驱动程序,包括音频解码芯片驱动、SD 卡驱动、按键驱动、显示屏幕驱动等。
3.MP3解码器:基于音频解码芯片的通信协议,编写MP3解码器的相关程序,实现文件的解码和音频数据的播放。
4.用户接口:编写用户界面程序,实现按键控制、显示屏幕显示、菜单操作等功能,以便用户操作音乐播放器。
5.文件系统:编写文件系统程序,实现对SD卡中音乐文件的读取和管理。
调试:1. 编译:使用Keil MDK进行编译,检查程序是否能够正确编译通过。
3.调试:通过串口或调试器连接STM32单片机,查看程序运行过程中的输出信息,检查是否存在问题并进行调试。
以下是一个基于STM32F4系列的MP3播放器的部分源代码,完成了初始化、外设驱动、MP3解码器和用户接口的编写。
```c#include "stm32f4xx.h"#include "vs1053.h"#include "sdcard.h"#include "lcd.h"#include "key.h"void Delay(uint32_t nCount)for(; nCount != 0; nCount--);int main(void)LCD_Init(;Key_Init(;VS1053_Init(;SD_Init(;while(1)if (Key_Scan( == KEY_PLAY)SD_Play(;}}void EXTI0_IRQHandler(void)if (EXTI_GetITStatus(EXTI_Line0) != RESET)VS1053_TriggerInterrupt(;EXTI_ClearITPendingBit(EXTI_Line0);}```以上代码只是一个简单的示例,具体实现需要根据所选择的硬件平台和外设来编写相应代码,例如音频解码芯片的驱动程序、SD卡的读写程序等。
基于MATLAB的音乐旋律二维可视化方法张岩;吕梦儒【摘要】音频可视化是信息可视化的重要分支,音乐是最具大众性和普遍性的音频信息,乐谱描述音乐的特点是专业性强,形式抽象.为了有利于音乐的展示,提出将音乐进行二维图形映射的可视化处理方法.旋律是音乐的基本要素,主要包含音高、时值和响度等特征,将音乐的旋律进行数据化,绘制二维图形,可以增强人们对音乐的感觉和认知.音频数据受到采样频率和分割帧的影响,会产生大量的过程性数据.MATLAB 提供音频处理函数和大规模数据的分布式并行处理功能,可以完成音乐旋律二维可视化的实时处理.利用傅里叶变换提取音乐旋律的基本特征,形成音高、时值和响度等音乐特征向量矩阵,编制程序完成旋律二维可视化图形的自动绘制.【期刊名称】《沈阳师范大学学报(自然科学版)》【年(卷),期】2018(036)004【总页数】5页(P342-346)【关键词】旋律;MATLAB;visualiztion;FFT;big data【作者】张岩;吕梦儒【作者单位】沈阳师范大学计算机与数学基础教学部,沈阳110034;沈阳师范大学计算机与数学基础教学部,沈阳110034【正文语种】中文【中图分类】TP3110 引言旋律是音乐作品的基本要素,是经过艺术构思而形成的若干乐器的有组织、有节奏的和谐运动。
它建立在一定调式和节拍的基础上,按一定的音高、时值和响度构成的、具有逻辑因素的单声部进行的。
旋律是重要的音乐特征,代表了音乐节奏的分布状态。
所以,旋律二维可视化能够清晰描述音高、时值和响度等旋律特征,有利于人们对音乐的感知和掌握,有利于区分不同音乐的风格和情感类别。
1 音乐旋律的二维可视化和MATLAB大数据处理1.1 音乐旋律的二维可视化音乐乐谱的表现形式有很多种类,如文字谱、数字谱、五线谱、六线谱等等。
最为人们常用的是数字谱和五线谱,其中五线谱多为专业音乐人使用,数字谱则普遍为音乐爱好者使用,2种乐谱都是按照一维(时间)轴变化的,称之为低维乐谱。
基于Matlab的MP3播放器1.概述MP3的全称为MPEG1(Moving Picture Experts Group) Layer – 3音频文件。
它根据压缩质量和编码复杂程度划为三层,Layer –1 、Layer –2 、Layer –3 ,且分别对应MP1 、MP2\ MP3 这三种声音文件,并根据不同的用途,使用不同层次的编码。
MPEG音频的层次越高,编码器越复杂,压缩率也越高,MP3的压缩率则高达10:1 – 12:1。
MA TLAB 是国际上公认的最优秀的科技应用软件,它在数据分析和处理功能都是很强大,利用它可以灵活方便地处理音频信号。
本文将使用matlab对MP3进行解码,做一个简易的MP3播放器。
2.MP3文件格式MP3文件大体分为三部分:TAG_V2(ID3V2),frame,TAG_V1(ID3V1)一个MPEG音频文件是许多的称为帧的较小部分组成的,通常,帧是独立的组成部分,每个帧都拥有之间的头和音频信息,没有文件头。
所以我们可以剪切MPEG文件的任何部分并且能够正常播放。
但在LayerIII中就并不总是正确的。
2.1、帧头格式下面是一个头内容图示,使用字符A到M表示不同的区域AAAAAAAAAAA BB CC D EEEE FF G H II JJ K L MMA表示帧同步,都为1,长度为11;B 表示MPEG音频版本ID (00 – MPEG 2.5; 01 –保留;10 – MPEG 2; 11 – MPEG 1);C 表示Layer描述,(00 –保留;01- LayerIII;10 – LayerII;11 - LayerI);D 表示校验位(0 有跟16位CRC校验位;1 无校验位);E 位率索引,长度为4,对不同的版本,不同层索引值表示不同的位率;单位KbitF 采样频率,单位:HzG 填充位(0 –无填充;1 –额外的填充)H 私有bit,用做特殊应用I 声道(00 –立体声;01 –联合立体声;10 –双声道;11 –单声道);J 扩展模式,仅在联合立体声有效K 版权(0 –无版权;1 –有版权);L 原创(0 –拷贝;1 –原创);M 强调(00 –无;01 – 50/15ms;10 –保留;11 – CCIT J.17);2、2 CRC 校验如果帧头的校验位为0 ,则帧头后就有一个16位的CRC值,这个值是big-endian的值,把这个值和该帧通过计算得出的CRC 值进行比较就可以知道该帧是否有效。
2、3 帧数据在帧头后边是Side Info(姑且称之为通道信息)。
对标准的立体声MP3 文件来说其长度为32字节。
通道信息后面是Scale factor(增益因子)信息。
当解码器在读到上述信息后,就可以进行解码了。
当MP3 文件被打开后,播放器首先试图对帧进行同步,然后分别读取通道信息及增益因子等数据,再进行霍夫曼解码,至此我们已经获得解压后的数据。
但这些数据仍然不能进行播放,它们还处于频域,要想听到歌曲还要将它由频域通过特定的手段转换到时域。
接下来的处理分别为立体化处理;抗锯齿处理;IMDCT 变换;IDCT 变换及窗口化滑动处理。
2、4 ID3v1ID3v1 标签用来描述MPEG 音频文件。
包含艺术家,标题,唱片集,发布年代和流派。
另外还有额外的注释空间。
位于音频文件的最后固定为128 字节。
可以读取该文件的最后这128 字节获得标签。
结构如下:AAABBBBB BBBBBBBB BBBBBBBB BBBBBBBBBCCCCCCC CCCCCCCC CCCCCCCC CCCCCCCDDDDDDDDD DDDDDDDD DDDDDDDD DDDDDEEEEFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFG2、5 ID3v2每个ID3V2.3 的标签都一个标签头和若干个标签帧或一个扩展标签头组成。
关于曲目的信息如标题、作者等都存放在不同的标签帧中,扩展标签头和标签帧并不是必要的,但每个标签至少要有一个标签帧。
标签头和标签帧一起顺序存放在MP3 文件的首部。
ID3V2 的操作比ID3V1 要慢。
而且ID3V2 结构比ID3V1 的结构要复杂得多,但比前者全面且可以伸缩和扩展。
2、6 lame 编码器LAME 是最好的MP3编码器,编码高品质MP3的最好也是唯一的选择。
LAME 本身是DOS下的文件,需要加外壳程序才比较容易使用,也可以在别的软件(比如EAC)中间调用。
是一款出色的MP3压缩程序,它使用了独创的人体听音心理学模型和声学模型,改变了人们对MP3高音发哑、低音发破的音质的印象。
LAME分DLL和EXE两种版本,DLL版本做为一个方便的接口程序在大多数抓轨软件中都能看到(比如AltoMP3Maker),但由于可控性差,与具备丰富调节参数的EXE版相比,其压缩出来的MP3效果稍逊一筹。
VBR(V ariable Bitrate)动态比特率。
也就是没有固定的比特率,压缩软件在压缩时根据音频数据即时确定使用什么比特率,这是以质量为前提兼顾文件大小的方式,推荐编码模式;ABR(Average Bitrate)平均比特率,是VBR的一种插值参数。
LAME针对CBR 不佳的文件体积比和VBR生成文件大小不定的特点独创了这种编码模式。
ABR在指定的文件大小内,以每50帧(30帧约1秒)为一段,低频和不敏感频率使用相对低的流量,高频和大动态表现时使用高流量,可以做为VBR和CBR的一种折衷选择。
CBR(Constant Bitrate),常数比特率,指文件从头到尾都是一种位速率。
相对于VBR和ABR来讲,它压缩出来的文件体积很大,而且音质相对于VBR和ABR不会有明显的提高。
本文将使用lame exe作为mp3的编解码器。
3.Matlab 声音播放MA TLAB是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。
它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平Matlab语言本身就是一种对线性系统进行分析和仿真的方便工具,他特别适用于对电子系统进行计算机仿真。
其对声音处理主要有以下几个函数:Sound 函数,播放声音,格式如下:Sound (y,fs)或sound (y)或sound (y,fs,bits)Wavwrite 函数,将声音数据按指定格式存入wav文件中,格式如下:Wavwrite(k,fs,nbits,file)Wavread 函数,从wav文件中读取声音信号,格式如下:[y, fs] = Wavread (file)6.0以上版本提供更好的声音处理函数;Audioplayer 函数,用来播放wav文件,可以暂停,停止,格式如下:Y = audioplayer(y,fs,nbits)Y = audioplayer(y,fs)Y必须定义成全局函数,它是一个audio player 对象。
Matlab 并没有mp3播放函数,因此要自己写M函数来播放mp3文件,函数如下:[Y,FS,NBITS,OPTS] = mp3read(FILE,N,MONO,DOWNSAMP,DELAY)FILE表示mp3文件名;N表示读到第N个采样帧,若N为[n1,n2],则表示从n1到n2;MONO 表示读文件的通道:1表示单声道,0表示立体声DOWNSAMP 表示采样频率,默认为1,若为2 或4 ,则FS为22050 或11025DELAY是为了适应mpg123-0.59,控制开始读文件的延迟时间,在1.9版本以后就不需要,默认为0;Y表示读出的数据FS 采样频率NBITS 采样位数OPTS 可选项4.流程图5.运行结果运行环境:windows7 ,cpu intel i3 2.4G主频,内存2G。
本人在另一台机子上(windows xp ,cpu intel Celeron 3.2G主频,1G内存)运行,速度有点慢,因为播放的mp3文件比较大,在matlab上运行速度不快。
5、1 主界面:5、2 功能如下:播放列表,可以添加(open),删除(delete)mp3文件.显示格式为:艺术家–音乐名。
添加时只能一个个添加,但删除可以批量删除,这跟open中uigetfile有关系。
播放(play)mp3文件,暂停(pause),停止(stop),若mp3未播放,使用暂停,停止,将有错误提示。
和普通的mp3播放器一样,要先等该文件播放完才播放下个文件,或按stop 再选择播放列表想要播放的文件,再按play。
关闭(close),将清空列表,关闭mp3播放器。
音量控制(volume),因为其值最大为1,所以只能减小音量,不能对其原声音进行放大。
另一方面,其声音控制并不是以中断的方式进行的,所以,只能等该文件播放完后,进行下个声音播放时,才能显现出声音的控制。
音频信息(Info),对播放的音频信息进行显示,要先等到音乐全都加载完才能显示。
5、3 结果分析从功能上基本实现mp3的播放,能够暂停,停止,有播放列表,选择播放,但仍然存在一些bug 和一些需要改进的地方,总结如下:首先,关于播放列表在第一次增加和删除,没问题,在第一次完全清空后,再增加一个文件,就会出现第一行为空,文件从第二行开始添加,若删除第一个没问题,若删除第二个就会出现警告。
Warning: multi-selection listbox control requires that V alue be an integer within String range Control will not be rendered until all of its parameter values are valid.其次,matlab的多线程能力比较差,本人有考虑使用timer定时器来实现一些功能,但效果不佳,不知道问题出现在哪里。
使用定时器就可以实现音量的随时改变,还有播放时间显示,甚至可以控制播放的进程,这是个很大的问题。
在网上,书上,定时器的例子都比较少,看不出个所以然。
接着,不能实现播放完该文件顺序播放下个文件,不够人性化。
当数据读入,正在播放中,关闭播放器,界面没有了,但仍在播放。
要先按close才能实现真正的关闭。
最后是速度慢,对一首《夜曲》进行分析,歌曲时间长度为4:24,数据量为11638784 * 2 ,要花3.6秒的时间,这是不能接受的。