%% Speed_PiV_01.m

isOctave = exist('OCTAVE_VERSION', 'builtin') ~= 0;

%% test signal
if 0,
    Fs=48000;
    T=3;
    fc=1000;
    x=1/2*sin(2*pi*fc/Fs*(0:(T*Fs-1)))';
else
    filename='D:\MATLAB_Workspace\DJ_EFFECT\input\breath.wav';
    if isOctave, 
        [x,Fs]=wavread(filename);
    else
        [x,Fs]=audioread(filename);
    end
    x=x(:,1);   % mono
end

%% processing

% window
N=1024*2;
win=linspace(0,1,N/2);  win=[win fliplr(win)];
win=[win 0];

r=0.9;

winptr=1:r:(length(x)-N);
k=1:length(winptr);
idx1=k-floor(((k-winptr)/N))*N;
idx2=k+N/2-floor(((k+N/2-winptr)/N))*N;

d=idx1-winptr; idx=floor(d); alpha=d-idx;
w1=win(idx+1).*(1-alpha)+win(idx+2).*alpha;

d=idx2-winptr; idx=floor(d); alpha=d-idx;
w2=win(idx+1).*(1-alpha)+win(idx+2).*alpha;

y=w1'.*x(idx1)+w2'.*x(idx2);

%% save file 

if isOctave,
    p='D:\MATLAB_Workspace\DJ_EFFECT\output\';
    wavwrite(x, Fs, [p 'mus.wav'])
    wavwrite(y, Fs, [p 'mus_sum.wav'])
else
    audiowrite(['D:\MATLAB_Workspace\DJ_EFFECT\output\mus.wav'],x,Fs)
    audiowrite(['D:\MATLAB_Workspace\DJ_EFFECT\output\mus_sum.wav'],y,Fs)
end
