view _misc/featureextraction/.svn/text-base/chunkspectrogram_ISMIR2010.m.svn-base @ 8:b5b38998ef3b

added all that other stuff
author matthiasm
date Fri, 11 Apr 2014 15:54:25 +0100
parents
children
line wrap: on
line source
function [s,f,t] = chunkspectrogram_ISMIR2010(filename,d_windo,d_nOverlap,d_nFFT, maxf)
%%
% d_ are the downsampled things
% o_ are the original things


d_fs = 11025;

[filesize, o_fs] = wavread(filename,'size');



if mod(o_fs/d_fs,1) ~= 0
    error('The sample frequency of the wave file has to be an integer multiple of %1.0f.',d_fs);
end
downsample = o_fs/d_fs;

o_windo = d_windo * downsample;
o_nOverlap = d_nOverlap * downsample;
o_hopSize = o_windo-o_nOverlap;
nFrame = floor((filesize(1) - o_windo) / o_hopSize);

s = zeros(d_nFFT/2, nFrame);
f = (0:d_nFFT/2-1)/d_fs;
t = zeros(nFrame,1);

wind = hamming(d_windo);
wind = wind/sum(wind);

for iLine = 1:round(nFrame/200)
    fprintf(1,'_');
end
fprintf(1,'\n');

for iFrame = 1:nFrame
    if mod(iFrame,200) == 0
        fprintf(1,'.');
    end
    ind = [1,o_windo] + (iFrame-1) * (o_hopSize);
    wave = sum(wavread(filename, ind),2) / 2;
    temp = fft(resample(wave,d_fs,o_fs) .* wind);
    s(:, iFrame) = temp(1:d_nFFT/2);
    t(iFrame) = (ind(1) + ind(2)) / 2 / o_fs;
end
fprintf(1,'\n');