y@0: function [binNb, width] = refineScore(mag,binNb) y@0: y@0: toneFactor = 2^(1/12); y@0: y@0: firstBin = floor((binNb+1)/toneFactor)-2; y@0: lastBin = ceil((binNb+1)*toneFactor)+2; y@0: firstBin = max(firstBin,1); y@0: width =0; y@0: if (firstBin0&&mag(minIdx)>0.1*maxB) y@0: minIdx = minIdx-1; y@0: end y@0: while(mag(maxIdx)>0.1*maxB) y@0: maxIdx = maxIdx+1; y@0: end y@0: width = 2*min( maxIdx -binNb+1,binNb- minIdx+1); y@0: width = max(width,3); y@0: else y@0: % plot(mag(1:maxIdx+10)) y@0: % close all; y@0: end y@0: end y@0: