31 "key",
"SpectralCombTriang",
36 static FactoryRegistrator<ProcessingFactory, SpectralCombTriang>
reg =
metadata;
49 int spectrumSize = in.
GetSize();
51 TData spectralResolution = spectrumSize/in.GetSpectralRange();
57 int bandlimit = fundamental;
60 for(i = 0; i<spectrumSize; i++)
65 bandlimit = fundamental * n;
67 outMag[i] = inMag[i]*GetGain(fundamental, i, n)*overallGain;
72 TData SpectralCombTriang::GetGain(
int fundamental,
int binPos,
int bandNum)
76 TData period = fundamental;
79 int midPoint =
int (period * 0.5);
81 bool ascending =
false;
82 if ((binPos - fundamental*bandNum)> midPoint || bandNum == 0) ascending =
true;
87 TData a = 2/fundamental;
88 if (!ascending) a = -a;
94 if (bandNum==0) x = binPos;
95 else if(ascending) x = binPos -
int(fundamental*bandNum + midPoint);
96 else x = binPos -
int(fundamental * bandNum);