无论我加载什么声音,Matlab都会演奏亨德尔的哈利路亚

时间:2017-03-08 19:44:12

标签: matlab

任何人都可以告诉我如何在每次加载不同的声音样本时停止播放Handel的Hallelujah。

我是Matlab的新手,正在研究将其作为.mat文件加载的示例代码,我不知道如何阻止它覆盖其他所有内容。

1 个答案:

答案 0 :(得分:3)

Matlab包含了亨德尔的哈利路亚合唱团的演示样本。如果你运行

load handel;

样本将存储在变量y中。如果您随后创建了audio player,则可以使用play来播放示例。

player = audioplayer(y, Fs);
play(player);

我的猜测(没有看到你的代码)是你的示例代码加载并播放如上所述的handel样本。

解决方案:您需要查找有问题的行并将其注释掉。

修改:使用https://stackoverflow.com/a/18773521/3303546

中的代码

在评论中,您说您正在使用此答案中的代码。在它上面,这段代码不会播放任何声音。但是,以下是您可能添加play功能的位置。

第1点:

第一个块创建两个文件:'handel1.wav'和'handel2.wav'

% create some data (write waves)
load handel.mat;                  %predifined sound in matlab stored in .mat
audiowrite('handel1.wav',y,Fs);   %write the first wave file
audiowrite('handel2.wav',y,Fs);   %write the second
clear y Fs                        %clear the data    

如上所述,您可以使用yclear命令之前的任何位置播放示例。在clear命令之后和任何其他代码之前,无法播放样本。

专注2:

% reading section
filedir = dir('*.wav');           %list the current folder content for .wav file
Y = cell(1,length(filedir));      %pre-allocate Y in memory (edit from @ Werner)
FS = Y;                           %pre-allocate FS in memory (edit from @ Werner)
for ii = 1:length(filedir)        %loop through the file names

    %read the .wav file and store them in cell arrays
    [Y{ii,1}, FS{ii,1}] = audioread(filedir(ii).name);  

end

在for循环中或之后,您可以使用

播放样本
player = audioplayer(Y{ind_wav,1}, Fs);
play(player);

ind_wav为1或2

第3点:

如果您之前运行过此代码,则Y变量可能仍在您的工作区中。

要删除它,请运行

clear Y