您当前的位置:五五电子网电子知识电子学习电脑使用技巧GUI设计中背景音乐的定制与关闭 正文
GUI设计中背景音乐的定制与关闭

GUI设计中背景音乐的定制与关闭

点击数:7583 次   录入时间:03-04 11:59:53   整理:http://www.55dianzi.com   电脑使用技巧

    1.如何将音乐文件作为matlab GUI的背景音乐来播放?

    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,[1 2]); %创建声音输出通道

    set(ao,'SampleRate',Fs) %设置采样率

    data1 =y(:,1); %双声道

    data2 =y(:,2);

    putdata(ao,[data1 data2]); %往声卡堆音乐数据

    start(ao); %输出音乐数据

    此时还可以继续堆数,一旦堆得数输出完,ao自动停止。

    当想让音乐停止时,只需要:stop(ao)即可。

    3.暂停/继续

    暂停/继续的功能,不能按上述方法实现。

    可以先堆1秒的数据,然后TimerFcn设为1秒,每次进入TimerFcn时只堆1秒的数据,如果暂停标志为true,则堆1秒的数据0;若暂停标志为false,则堆1秒的音乐数据。

    如此,暂停功能即可实现,而且,载入的音乐数据理论可以无限大。。。

    4.循环播放的另一种方法

    除了【俄罗斯方块】程序中的方法外,还可以用下面更简单的方法,来实现循环播放。

    模拟输出对象的属性如下:

    BufferingConfig = [1024 1173]

    BufferingMode = Auto

    Channel = [2x1 aochannel]

    CLOCkSource = Internal

    EventLog = [1x2 struct]

    InitialTriggerTime = [2009 9 12 10 25 11.156]

    MaxSamplesQueued = 1.34154e+008

    Name = winsound0-AO

    RepeatOutput = 0

    Running = On

    RuntimeErrorFcn = @daqcallback

    SampleRate = 11025

    SamplesAvailable = 991382

    SamplesOutput = 207083

    SamplesOutputFcn = []

    SamplesOutputFcnCount = 1024

    Sending = On

    StartFcn = []

    StopFcn = []

    Tag =

    Timeout = 1

    TimerFcn = global ao xianjian;putdata(ao,[xianjian(:,1) xianjian(:,2)]);

    TimerPeriod = 100

    TriggerFcn = []

    TriggersExecuted = 1

    TriggerType = Immediate

    Type = Analog Output

    UserData = []

    WINSOUND specifIC properties:

    BitsPerSample = 16

    StandardSampleRates = On

    在TimerFcn中设置RepeatOutput属性,可以实现循环播放。




本文关键字:背景音乐  电脑使用技巧电子学习 - 电脑使用技巧

上一篇:潇洒自如用鼠标