/usr/include/CLAM/SpectralAnalysisConfig.hxx is in libclam-dev 1.4.0-6.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 | /*
* Copyright (c) 2001-2004 MUSIC TECHNOLOGY GROUP (MTG)
* UNIVERSITAT POMPEU FABRA
*
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
#ifndef _SpectralAnalysis_
#define _SpectralAnalysis_
#include "DataTypes.hxx"
#include "ProcessingConfig.hxx"
#include "WindowGeneratorConfig.hxx"
#include "CircularShiftConfig.hxx"
#include "FFTConfig.hxx"
namespace CLAM {
/** Configuration class for Spectral Analysis class
* It includes specific parameters: HopSize,
* ZeroPadding, Sampling Rate and FFTSize. Further
* setter/getters are also offered for WindowSize and WindowType.
* It also includes complete configurations for child processings:
* WindowGenerator, Circular Shift and FFT. These configurations
* should only be modified by advanced users
*/
class SpectralAnalysisConfig:public ProcessingConfig
{
friend class SpectralAnalysis;
DYNAMIC_TYPE_USING_INTERFACE (SpectralAnalysisConfig,9,ProcessingConfig);
/** Configuration for children Processing Objects*/
DYN_ATTRIBUTE(0,public,WindowGeneratorConfig, WindowGenerator);
DYN_ATTRIBUTE(1,public,CircularShiftConfig,CircularShift);
DYN_ATTRIBUTE(2,public,FFTConfig, FFT);
DYN_ATTRIBUTE(3,public,int, prHopSize);
DYN_ATTRIBUTE(4,public,int, prZeroPadding);
DYN_ATTRIBUTE(5,public,int, prSamplingRate);
DYN_ATTRIBUTE(6,public,int, prFFTSize);
//xamat: added these so they can be accessible from a configurator
DYN_ATTRIBUTE(7,public,int, prWindowSize);
DYN_ATTRIBUTE(8,public,EWindowType, prWindowType);
public:
//Config shortcuts
/** Sets Analysis Window size in num. of samples.
* This setter actually changes window size in the window generator,
* size of the FFT, and amount of circular shift. If new window size
* is smaller than twice the hop size plus one, hop size is also
* modified to that value.
* Note1: for best results, window size should be set to odd number.
* Note2: this setter should be called after the hop size has already
* been set.
*/
void SetWindowSize(TSize w);
/** Getter for window size. Actually returns size of the window generator. */
TSize GetWindowSize() const;
/** Sets Analysis Window type, modifying configuration of child Window Generator
* configuration.
* @see EWindowType
*/
void SetWindowType(const EWindowType& t);
/** Getter for window type, returns window type in Window Generator */
const EWindowType& GetWindowType() const;
/** Sets Zero padding factor. It changes FFTSize and Circular shift accordingly.
* If factor is 0, FFTSize is set to WindowSize-1 next power of two (assumes window
* size is odd!)
* Assuming a WindowSize of 513, see following table to understand how the factor
* works:
* ZeroPaddingFactor FFTSize
* -1 256
* 0 512
* 1 1024
* 2 2048
* @see PowerOfTwo
*/
void SetZeroPadding(int z);
/** returns ZeroPaddingFactor being used.*/
int GetZeroPadding() const;
/** Sets Analysis Hop size in number of samples. This setter only changes attribute but
* does not change configurations accordingly! VIP: It assumes that a SetWindowSize is
* called afterwards.
*/
void SetHopSize(TSize h);
/** returns HopSize in number of samples.*/
TSize GetHopSize() const;
/** Sets Sampling rate of the input audio. It calls SetWindowSize for synchronizing existing
configurations.*/
void SetSamplingRate(TData sr);
/** returns SamplingRate */
TData GetSamplingRate() const;
/** synchronize configuration values just in case they had been modified directly **/
void Sync();
private:
/** Default Init adds all Dynamic Attributes */
void DefaultInit();
/** Sets default values: SamplingRate=44100, ZeroPaddingFactor=0, WindowSize=513,
* WindowType=Hamming, HopSize=256, and CircularShift's amount= 256*/
void DefaultValues();
/** Ad-hoc routine for finding FFT Size*/
TInt32 PowerOfTwo(TInt32 size);
};
}
#endif
|