SMSTranspose.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 "SMSTranspose.hxx"
00023 #include <CLAM/ProcessingFactory.hxx>
00024 #include <cmath>
00025
00026 namespace CLAM
00027 {
00028 namespace Hidden
00029 {
00030 static const char * metadata[] = {
00031 "key", "SMSTranspose",
00032 "category", "SMS Transformations",
00033 "description", "SMSTranspose",
00034 0
00035 };
00036 static FactoryRegistrator<ProcessingFactory, SMSTranspose> reg = metadata;
00037 }
00038
00039 bool SMSTranspose::Do(const SpectralPeakArray& in, SpectralPeakArray& out)
00040 {
00041 static const TData toneFactor = std::pow(2.,1./12.);
00042
00043
00044 if ( !mConfig.GetPreserveOuts() ) out = in;
00045
00046 DataArray& ifreqArray=in.GetFreqBuffer();
00047 DataArray& ofreqArray=out.GetFreqBuffer();
00048 TSize nPeaks=in.GetnPeaks();
00049 TData amount=mControl.GetLastValue();
00050 for(int i=0;i<nPeaks;i++)
00051 ofreqArray[i]=ifreqArray[i]*std::pow(toneFactor,amount);
00052 return true;
00053 }
00054
00055
00056 }
00057