34 static FactoryRegistrator<ProcessingFactory, SinusoidalSynthesis>
regSinusoidalSynthesis(
"SinusoidalSynthesis");
38 void SinusoidalSynthesis::AttachChildren()
48 : mInputSinSpectralPeaks(
"InputSinPeaks",this)
49 , mOutputSpectrum(
"OutputSpectrum",this)
50 , mOutputAudio(
"OutputAudio",this)
51 , mCurrentTimeControl(
"CurrentTime",this)
52 , mCurrentPitch(
"CurrentPitch",this)
64 bool SinusoidalSynthesis::ConfigureChildren()
69 mConfig.GetSpectralSynth().SetResidual(
false);
70 if(!mSinSpectralSynthesis.
Configure(mConfig.GetSpectralSynth()))
74 if(!mSynthSineSpectrum.
Configure(mConfig.GetSynthSineSpectrum()))
78 if(!mPhaseMan.
Configure(mConfig.GetPhaseMan()))
88 if(!mOverlapAddSin.
Configure(mConfig.GetOverlapAddSin()))
94 void SinusoidalSynthesis::ConfigureData()
106 bool SinusoidalSynthesis::ConcreteConfigure(
const ProcessingConfig& c)
139 return Do(inputSinusoidalPeaks,tmpOutputSpec,outputAudio);
154 TData currentTime = 0;
157 int framesize = outputAudio.
GetSize();
160 currentTime =
TData( mCurrentFrame*framesize ) / samplerate;
170 mPhaseMan.
Do(inputSinusoidalPeaks);
173 mSynthSineSpectrum.
Do(inputSinusoidalPeaks,outputSpectrum);
175 mSinSpectralSynthesis.
Do(outputSpectrum, mAudioFrame);
178 mOverlapAddSin.
Do(mAudioFrame, outputAudio);
185 if(in.GetCenterTime()<0)
return false;
197 in.GetOutSpec().SetSpectralRange(in.GetResidualSpec().GetSpectralRange());
198 in.GetSinusoidalSpec().SetSpectralRange(in.GetResidualSpec().GetSpectralRange());
200 return Do(in.GetSpectralPeakArray(),in.GetOutSpec(),in.GetSynthAudioFrame());
213 in.AddSinusoidalSpec();
214 in.AddSinusoidalAudioFrame();
215 in.AddResidualAudioFrame();
216 in.AddSynthAudioFrame();
219 in.GetSinusoidalAudioFrame().SetSize(mConfig.
GetFrameSize());
220 in.GetResidualAudioFrame().SetSize(mConfig.
GetFrameSize());
221 in.GetSynthAudioFrame().SetSize(mConfig.
GetFrameSize());