任何人都可以告诉我如何在每次加载不同的声音样本时停止播放Handel的Hallelujah。
我是Matlab的新手,正在研究将其作为.mat文件加载的示例代码,我不知道如何阻止它覆盖其他所有内容。
答案 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
如上所述,您可以使用y
在clear
命令之前的任何位置播放示例。在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