function applyavgcontour
[C,D]=uigetfile({'*.wav','Select wav file'},'Select wav file.','MultiSelect','off');
C=strcat(D,C);
[audioSource,samplerate]=audioread(C);
extra=5000;
hundthSec=samplerate/100;
margin=fix((hundthSec*2)/3);
margin2=fix(hundthSec/3);
filterwidth=15;
harmonics=50;
outSource=zeros(size(audioSource,1),1);
load avgcontour.mat
avgFreq=rot90(avgFreq,-1);
avgFreq(certainty<0.5)=NaN;
avgFreq(1)=100;
avgFreq(end)=100;
avgFreq=fillmissing(avgFreq,'linear');
avgFreq=movmean(avgFreq,10);
for i=1:size(avgFreq,1);
    targfreq=avgFreq(i);
    procfreq=targfreq;
    centerSample=hundthSec*i;
    segmentSize=1+centerSample+(margin+extra)-(centerSample-(margin+extra));
    filteredSegment=zeros(segmentSize,1);
    harmonicCount=0;
    filterstep=targfreq;
    while(filterstep>250)
        filterstep=filterstep/2;
    end;
    while(filterstep<125)
        filterstep=filterstep*2;
    end;
    if((centerSample+margin+extra<=size(audioSource,1))&&(centerSample-(margin+extra)>=1))
    while(((procfreq+filterwidth)*2<samplerate)&&(harmonicCount<harmonics));
        [c1,e1]=butter(2,[(2*(procfreq-filterwidth))/samplerate,(2*(procfreq+filterwidth))/samplerate]);
        filteredSegment=filteredSegment+filter(c1,e1,audioSource(centerSample-(margin+extra):centerSample+(margin+extra)));
        harmonicCount=harmonicCount+1;
        procfreq=procfreq+filterstep;
    end;
    multiplier=NaN(size(filteredSegment(extra+1:end-extra),1),1);
    multiplier(1)=0;
    multiplier(end)=0;
    multiplier(margin2)=1;
    multiplier(end-margin2)=1;
    multiplier=fillmissing(multiplier,'linear');
    adjustedSegment=filteredSegment(extra+1:end-extra).*multiplier;
    outSource(centerSample+1-margin:(centerSample-margin+size(adjustedSegment,1)))=outSource(centerSample+1-margin:(centerSample-margin+size(adjustedSegment,1)))+adjustedSegment;
    end;
end;
outSource=outSource/max(abs(outSource));
titlestring=(strcat(C,'_avcont',num2str(filterwidth),'_'));
y=1;
while(exist(strcat(titlestring,num2str(y),'.wav')))
    y=y+1;
end;
audiowrite((strcat(titlestring,num2str(y),'.wav')),outSource,samplerate);
    