如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
GUI设计中背景音乐的定制与关闭罗华飞于2009-10-121.如何将音乐文件作为matlabGUI的背景音乐来播放?matlab支持每个采样位为8或16的wav音乐。我们假设原始文件为某个mp3文件。我们所要做的就是,下载一个MP3转WAV的软件,最常见的就是千千静听了。千千静听的右键菜单内有一个选项为【转换格式...】,我们将其转换为采样位为16的WAV文件。如果音乐文件比较大,建议将采样率更改为小一点的。。。我们要做的第一步,就是将该文件的数据转化为matlab可以识别的矩阵,这用到一个函数:waveread。设该wav文件名为a.wav,则句型为:[y,Fs,bits]=wavread('a.wav');%将a.wav放到当前目录其中:y——音乐数据;Fs——采样率;bits——采样位,默认值为16。2.如何播放与停止音乐?这个步骤,可能很多人会想到以下方法:sound(y,Fs,bits)其实,这种方法有个问题:一旦播放了,就没法停止。那么,有没有办法可以随意播放和停止音乐呢?答案是:有。让声卡发出声音,实际是一个模拟信号输出到硬件(声卡)的过程。matlab有一个模拟输出函数库,可以建立模拟输出对象和通道:analogoutput函数。方法如下:[y,Fs,bits]=wavread('dl.wav');%获取音乐数据ao=analogoutput('winsound');%建立硬件对象addchannel(ao,[12]);%创建声音输出通道set(ao,'SampleRate',Fs)%设置采样率data1=y(:,1);%双声道data2=y(:,2);putdata(ao,[data1data2]);%往声卡堆音乐数据start(ao);%输出音乐数据此时还可以继续堆数,一旦堆得数输出完,ao自动停止。当想让音乐停止时,只需要:stop(ao)即可。3.暂停/继续暂停/继续的功能,不能按上述方法实现。可以先堆1秒的数据,然后TimerFcn设为1秒,每次进入TimerFcn时只堆1秒的数据,如果暂停标志为true,则堆1秒的数据0;若暂停标志为false,则堆1秒的音乐数据。如此,暂停功能即可实现,而且,载入的音乐数据理论可以无限大。。。4.循环播放的另一种方法除了【俄罗斯方块】程序中的方法外,还可以用下面更简单的方法,来实现循环播放。模拟输出对象的属性如下:BufferingConfig=[10241173]BufferingMode=AutoChannel=[2x1aochannel]ClockSource=InternalEventLog=[1x2struct]InitialTriggerTime=[2009912102511.156]MaxSamplesQueued=1.34154e+008Name=winsound0-AORepeatOutput=0Running=OnRuntimeErrorFcn=@daqcallbackSampleRate=11025SamplesAvailable=991382SamplesOutput=207083SamplesOutputFcn=[]SamplesOutputFcnCount=1024Sending=OnStartFcn=[]StopFcn=[]Tag=Timeout=1TimerFcn=globalaoxianjian;putdata(ao,[xianjian(:,1)xianjian(:,2)]);TimerPeriod=100TriggerFcn=[]TriggersExecuted=1TriggerType=ImmediateType=AnalogOutputUserData=[]WINSOUNDspecificproperties:BitsPerSample=16StandardSampleRates=On在TimerFcn中设置RepeatOutput属性,可以实现循环播放。以上内容纯属原创。