Temek müzik işleme(Matlab)
Song Processing
Find subfolder in system
d = dir();% mainFolder=strcat(d.folder,'\'); mainFolder=mainFolder{:};
mainFolder=d.folder;
isub = [d(:).isdir]; %# returns logical vector
nameFolds = {d(isub).name}';
nameFolds(ismember(nameFolds,{'.','..'})) = [];
f={mainFolder,nameFolds{:}};
filename=strjoin(f,'\');
List All Songs
songNames = ls(filename);songNames(1:2,:)=[];
NumberOfSongs=numel(songNames)/numel(songNames(1,:));
songN=input('input song number : ');
if songN>NumberOfSongs; error('There is no more file'); end
song=songNames(songN,:);
songExtensions=['mp3','wav','ogg','flac','AIFC','AIFF','m4a','mp4'];
C = strtrim(strsplit(song,'.'));
for ext=songExtensions
if all( lower(C{2})==lower(ext) )
error('this file is not a supported song file')
end
end
concatenate full file name
f={filename,song};
fullFileName=strjoin(f,'\');
Load Song
% filename=dir(fullfile(d,'Fur Elise.mp3'))[y,Fs] = audioread(fullFileName);
Play song
player=audioplayer(y,Fs);play(player)
Pause Song
pause(player)Resume Song
resume(player)Stop Song
stop(player)Song Visualization
Şarkı dediğimiz şey genelde birkaç kanaldan alınmış vektörlerin birleşimidir. Genelde stereo yani 2 kanal barındıran dosyalardır. 2 kanal iki sütun vecötür olarak matlaba aktarılır.y=y(:,1);
% t=linspace(0,);
t=( 0:1/Fs:(numel(y)-1)/Fs ).';
subplot(2,1,1)
plot(t,y); title('time-amplitude'); xlabel('time'); ylabel('amplitude'); grid on;
subplot(2,1,2)
L=length(t); % Sinyalin uzunluğu
sfft=fft(y);
sfft_abs=abs(sfft/L);
sfft_abs = sfft_abs(1:fix(L/2)+1);
sfft_abs(2:end-1) = 2*sfft_abs(2:end-1);
f = Fs*(0:(L/2))/L; % fft vektörü
plot(f,sfft_abs); title('All Sime Single frequency-amplitude'); xlabel('frequency'); ylabel('amplitude'); grid on;
xlim([0 2e3]); ylim([0 max(sfft_abs)])
Yorumlar
Yorum Gönder