close all;
clear;
clc;

%% 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
    
Left=x(1:length(x),1);
%Left=Left';
Right=x(1:length(x),2);
%Right=Right';
    
    
end


r=0.9;



%% processing for Left

% window
N=1024*2;
win=linspace(0,1,N/2);  win=[win fliplr(win)];
win=[win 0];

winptr=1:r:(length(Left)-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_Left=w1'.*Left(idx1)+w2'.*Left(idx2);


%% processing for Right

% window
N=1024*2;
win=linspace(0,1,N/2);  win=[win fliplr(win)];
win=[win 0];

winptr=1:r:(length(Right)-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_Right=w1'.*Right(idx1)+w2'.*Right(idx2);


%% save file 

y=[y_Left,y_Right];

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\Reference.wav'],x,Fs)
    audiowrite(['D:\MATLAB_Workspace\DJ_EFFECT\output\OutputSBM.wav'],y,Fs)
end
