32 "key",
"SMSPitchShift",
33 "category",
"SMS Transformations",
34 "description",
"SMSPitchShift",
37 static FactoryRegistrator<ProcessingFactory, SMSPitchShift>
reg =
metadata;
60 TData spectralRange = inRes.GetSpectralRange();
62 bool isHarmonic = fundamental > .5;
68 mSpectralEnvelope.SetSpectralRange(spectralRange);
70 bool haveEnvelope=
false;
74 haveEnvelope = mSpectralEnvelopeExtract.
Do(inPeaks,mSpectralEnvelope);
76 if(&outPeaks!=&inPeaks)
78 DataArray& iFreqArray=inPeaks.GetFreqBuffer();
79 DataArray& oFreqArray=outPeaks.GetFreqBuffer();
80 DataArray& iBinPosArray=inPeaks.GetBinPosBuffer();
81 DataArray& oBinPosArray=outPeaks.GetBinPosBuffer();
85 for(
int i=0;i<nPeaks;i++)
87 TData newFreq=iFreqArray[i]*amount;
88 if (newFreq>=spectralRange)
93 oFreqArray[i]=newFreq;
94 oBinPosArray[i]=iBinPosArray[i]*amount;
101 mSpectralEnvelopeApply.
Do(outPeaks,mSpectralEnvelope,outPeaks);
102 if (
false && !ignoreResidual)
105 mFDCombFilter.
Do(inRes,outRes);
113 return Do( in.GetSpectralPeakArray(),
115 in.GetResidualSpec(),
116 out.GetSpectralPeakArray(),
117 out.GetFundamental(),
118 out.GetResidualSpec());