function r = fftwav(wavfile) %% settings spectrumwidth = 196; spectrumkeep = 64; normcutoff = 5; % get ready [numsamples numchannels] = wavread(wavfile,'size'); samplespersecond = 44100; chunkspersecond = 30; samplesperchunk = samplespersecond / chunkspersecond; numchunks = numsamples / samplesperchunk; pos = 1; % walk thru wav lump = []; for i = 1:numchunks last = pos + samplesperchunk - 1; if last > numsamples last = numsamples; end % [pos last] bit = wavread(wavfile,[pos,last]); % fft y = fft(bit,spectrumwidth*2); pyy = y.* conj(y) / spectrumwidth / 2; rpyy = pyy(1:spectrumkeep,:)'; lump = [ lump ; rpyy ]; % rpyy pos = pos + samplesperchunk; end % normalize lump [h w] = size(lump); for col = 1:normcutoff lump(:,col) = lump(:,col) / (normcutoff + 1 - col); end r = lump';