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

Popüler Yayınlar