Mercurial > hg > aimc
view src/Modules/Output/Graphics/Scale/ScaleLogScaled.h @ 611:0fbaf443ec82
Carfac C++ revision 3, indluding more style improvements. The output structs are now classes again, and have separate storage methods for each output structure along with flags in the Run and RunSegment methods to allow for only storing NAPs if desired.
author | alexbrandmeyer |
---|---|
date | Fri, 17 May 2013 19:52:45 +0000 |
parents | 2aa72aa8a0d4 |
children |
line wrap: on
line source
/*! * \file * \brief Log frequency scale for generating filter banks and their frequencies. Based on the scaling of the ERB scale * * \author Tom Walters <tcw24@cam.ac.uk> * \date created 2006/09/26 * \version \$Id: ScaleLogScaled.h 459 2007-11-08 11:50:04Z tom $ */ /* (c) 2006, University of Cambridge, Medical Research Council * http://www.pdn.cam.ac.uk/groups/cnbh/aimmanual */ #ifndef __MODULE_SCALE_LOGSCALED_H__ #define __MODULE_SCALE_LOGSCALED_H__ #include <math.h> #include "Modules/Output/Graphics/Scale/Scale.h" namespace aimc { /*! * \class ScaleERB "Modules/Scale/ScaleERB.h" * \brief ERB frequency scale for generating filter banks and their frequencies * * It is very advisable to use Scale::Create() to an instance of this scale. * * References: * - J. Smith and J. Abel (1999), "Bark and ERB bilinear transforms" * http://www-ccrma.stanford.edu/~jos/bbt/ */ class ScaleLogScaled : public Scale { public: ScaleLogScaled(unsigned int min, unsigned int max, float density) : Scale(min, max, density) { m_iType = SCALE_ERB; m_sName = "logscaled"; }; float FromLinear(float fFreq) { return 21.4f*log10(0.00437f*fFreq); }; float ToLinear(float fFreq) { return (pow(10, fFreq/21.4f))/0.00437f; }; }; } // namespace aimc #endif /* __MODULE_SCALE_ERB_H__ */