y@0
|
1 GEA = cell(nbInstrument,nbBandPassFilters);
|
y@0
|
2
|
y@0
|
3
|
y@0
|
4 xHat = sparse(zeros(HFFTS,len));
|
y@0
|
5
|
y@0
|
6 % Model Spectrogram
|
y@0
|
7 for ins = 1:nbInstrument
|
y@0
|
8 for filterInd = 1:nbBandPassFilters
|
y@0
|
9 GEA{ins,filterInd} = sparse(zeros(HFFTS, len));
|
y@0
|
10 for frame = first:curFrame
|
y@0
|
11 GEA{ins,filterInd}(:,frame-first+1) = (filterBasis(:,filterInd)*gains(ins,frame)).*(excitationSpectrums{ins,frame}*partialsWeights(:,ins));
|
y@0
|
12 end
|
y@0
|
13 xHat = xHat + GEA{ins,filterInd}*filterCoefficients(filterInd,ins);
|
y@0
|
14 end
|
y@0
|
15 end
|
y@0
|
16
|
y@0
|
17 %Compute distance and r
|
y@0
|
18 distFilter(nbUpdates) = sum(sum( tmpMaskedSpectrogram .* log((tmpMaskedSpectrogram+eps) ./ (xHat+eps)) - tmpMaskedSpectrogram + xHat));
|
y@0
|
19 r = (currentMag+eps)./(xHat+eps);
|
y@0
|
20 updateFilterCoeff = ones(nbBandPassFilters,nbInstrument);
|
y@0
|
21
|
y@0
|
22 %Update Filter Coefficients
|
y@0
|
23 for ins = 1:nbInstrument
|
y@0
|
24 for filterInd = 1:nbBandPassFilters
|
y@0
|
25 updateFilterCoeff(filterInd,ins) = (sum(sum(GEA{ins,filterInd}.*r))+eps)/(sum(sum(GEA{ins,filterInd}))+eps);
|
y@0
|
26 end
|
y@0
|
27 end
|
y@0
|
28 clear GEA;
|
y@0
|
29 filterCoefficients = filterCoefficients.*updateFilterCoeff;
|
y@0
|
30 for ins=1:nbInstrument
|
y@0
|
31 maxValue = max(filterCoefficients(:,ins));
|
y@0
|
32 filterCoefficients(:,ins) = filterCoefficients(:,ins) / maxValue;
|
y@0
|
33 gains(ins,:) = gains(ins,:) * maxValue;
|
y@0
|
34 end
|
y@0
|
35 outlook = filterBasis * filterCoefficients;
|
y@0
|
36 % figure, plot(outlook(1:blockSize/8,:)); |