How to randomize audio files
    7 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    Takara Sumoto
 el 10 de Sept. de 2019
  
    
    
    
    
    Comentada: Takara Sumoto
 el 11 de Sept. de 2019
            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? 
0 comentarios
Respuesta aceptada
  David K.
      
 el 10 de Sept. de 2019
        It looks to me that the line 
aud_file=strcat('C:\toolbox\aud_file\',audio_files(i).name);
is where you get a song. Since the loop variable i is how you are currently getting the songs you can instead use it to index your random sequence. So, you can put it before the loop and index it to get the random values you want.
a=randperm(80);
for i=1:length(audio_files)
    aud_file=strcat('C:\toolbox\aud_file\',audio_files(a(i)).name);
I removed everything else from the randomizer code you posted since I am pretty sure it is unneccessary. 
5 comentarios
  Walter Roberson
      
      
 el 10 de Sept. de 2019
				Are you sure you used
aud_file=strcat('C:\toolbox\aud_file\',audio_files(a(i)).name);
and not
aud_file=strcat('C:\toolbox\aud_file\',audio_files(i).name);
Más respuestas (1)
  Johannes Fischer
      
 el 10 de Sept. de 2019
        
      Editada: Johannes Fischer
      
 el 10 de Sept. de 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
Ver también
Categorías
				Más información sobre Audio I/O and Waveform Generation en Help Center y File Exchange.
			
	Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



