MATLAB Answers


how to run my conversion program using loops

Asked by Mustapha Messaoud on 29 Jun 2019
Latest activity Edited by Rik
on 30 Jun 2019
I have a program of resampling and conversion wav to pcm
so I have a main folder that contains several subfolders
and each subfolder contains a wav file and a text file
I want to run my program on all wav files in all subfolders, I can not do it,Thank you very much for your help.
here is my program:
[x, fs] = audioread(a_filename);
% resample:
fsin = fs;
fsout = 22050;
m = lcm(fsin,fsout);
up = m/fsin;
down = m/fsout;
x_22 = resample(x, up, down);
audiowrite([a_filename,'_22050','.wav'], x_22, fsout);
% convert to PCM 16 bit
precision = 'int16';
fidr = fopen([a_filename(1:11), '_22050','.wav'], 'r'); % open .wav file to read
fidw = fopen([a_filename(1:11), '_22050','.pcm'], 'wb'); % open .pcm file to write
w = int16(fread(fidr, inf, precision));% read .wav file
fwrite(fidw, w, precision); % write .pcm file
thank you in advance


Sign in to comment.




1 Answer

Answer by per isakson
on 29 Jun 2019
Edited by per isakson
on 29 Jun 2019

Try this
main_folder = 'c:\whatever\mainfolder';
sad = dir( fullfile( main_folder, '**', '*.wav' );
sad = reshape( sad, 1,[] );
for wav = sad
ffs = fullfile( wav.folder, );
disp( ffs )
If recursive dir call, "**", is not avaiable in your Matlab release try Recursive directory listing - Enhanced RDIR . (There are several rdir() in the File Exchange.)


on 29 Jun 2019
Just to confirm: the ** syntax was not available in the R2014a dir function.
Recursive directory listing by Gus Brown is "Created with R2007a, Compatible with any release". I've used it for a long time and cannot remember it having caused me any problem.
on 30 Jun 2019
I just meant you do indeed need to use such a function, instead of using built-in Matlab tools. I'll edit the comment to make it more clear.

Sign in to comment.