SpectralShapeShift.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 "SpectralShapeShift.hxx"
00023 #include "ProcessingFactory.hxx"
00024
00025 namespace CLAM
00026 {
00027 namespace Hidden
00028 {
00029 static const char * metadata[] = {
00030 "key", "SpectralShapeShift",
00031
00032
00033 0
00034 };
00035 static FactoryRegistrator<ProcessingFactory, SpectralShapeShift> reg = metadata;
00036 }
00037
00038 bool SpectralShapeShift::Do(const Spectrum&
00039 inSpec,Spectrum& outSpec)
00040 {
00041
00042 if (!mConfig.GetPreserveOuts())
00043 {
00044 outSpec = inSpec;
00045 }
00046
00047 mLogSpectrum = inSpec;
00048 mLogSpectrum.ToDB();
00049
00050 mSpectralEnvelope.SetSpectralRange(mSpectralRange);
00051
00052 mSpectralPeakDetect.Do(mLogSpectrum, mSpectralPeaks);
00053 mSpectralEnvelopeExtract.Do(mSpectralPeaks,mSpectralEnvelope);
00054
00055 TData amount = mSteps.GetLastValue();
00056
00057
00058 BPF& magBPF=mSpectralEnvelope.GetMagBPF();
00059 int nPoints=magBPF.Size();
00060 if(nPoints>2)
00061 {
00062 magBPF.SetIntpType(EInterpolation::eLinear);
00063 for(int i=0;i<nPoints;i++)
00064 {
00065 magBPF.SetXValue(i, magBPF.GetXValue(i)+amount);
00066 }
00067
00068
00069 outSpec.ToDB();
00070 mSpectralEnvelopeApply.Do(mLogSpectrum,mSpectralEnvelope,outSpec);
00071 outSpec.ToLinear();
00072 }
00073 return true;
00074 }
00075
00076
00077 }
00078