SpectralPhaseModulation.cxx
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include "SpectralPhaseModulation.hxx"
00023 #include "ProcessingFactory.hxx"
00024
00025 namespace CLAM
00026 {
00027
00028 namespace Hidden
00029 {
00030 static const char * metadata[] = {
00031 "key", "SpectralPhaseModulation",
00032
00033
00034 0
00035 };
00036 static FactoryRegistrator<ProcessingFactory, SpectralPhaseModulation> reg = metadata;
00037 }
00038
00039
00040
00041 bool SpectralPhaseModulation::Do(const Spectrum& in, Spectrum& out)
00042 {
00043 if ( !mConfig.GetPreserveOuts() )
00044 {
00045 out = in;
00046 }
00047
00048 SendFloatToInControl(mOscillator,"Pitch",mFreqCtl.GetLastValue());
00049 SendFloatToInControl(mOscillator,"Amplitude",mWidthCtl.GetLastValue());
00050
00051 DataArray& oPhase = out.GetPhaseBuffer();
00052
00053 int spectrumSize = in.GetSize();
00054
00055 TData modFactor;
00056 mOscillator.Do(modFactor);
00057
00058 for(int i = 0; i<spectrumSize; i++)
00059 {
00060 oPhase[i] = oPhase[i] * modFactor;
00061 }
00062 return true;
00063 }
00064
00065
00066
00067 }
00068