How to randomize audio files
Show older comments
I have 80 audio files and want to play them randomely (not in the file number's orders).
My code so far is;
for i=1:length(audio_files)
aud_file=strcat('C:\toolbox\aud_file\',audio_files(i).name);
% load sound file (make sure that it is in the same folder as this script)
[soundData freq]=audioread(aud_file);
% opens sound buffer at a different frequency
pahandle = PsychPortAudio('Open', [], [], 2, []);
% loads data into buffer
PsychPortAudio('FillBuffer', pahandle, soundData');
% how many repititions of the sound
repetitions=1;
%starts sound immediatley
PsychPortAudio('Start', pahandle, repetitions,0);
% stop
PsychPortAudio('Stop', pahandle, 1,0);
%wait
WaitSecs(1);
%close
PsychPortAudio('Close', pahandle);
end
I searched the code to rondomize which is;
a=zeros(1,80);
for i=1:80
a=randperm(80);
end
But I'm not sure where I should add this randomize code.
Should the code be somewhere in the audio loop or before the loop?
Accepted Answer
More Answers (1)
Johannes Fischer
on 10 Sep 2019
Edited: Johannes Fischer
on 10 Sep 2019
What kind of randomization do you want?
Play all sounds once, before playing a sound twice?
randomizedOrder = randperm(80);
for i = randomizedOrder
% ...load and play audio
end
Or every time you load a file, each sound has the same probability of being loaded.
% number of consecutive audio playbacks
N = 10;
randomizedOrder = ceil(rand(1, N)*80);
for i = randomizedOrder
% ...load and play audio
end
1 Comment
Takara Sumoto
on 10 Sep 2019
Categories
Find more on Audio I/O and Waveform Generation in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!