Mercurial > hg > aimc
diff src/Modules/Output/Graphics/Scale/ScaleLogScaled.h @ 116:47b009f2c936
- First add of a lot of graphics code from the old version. Not working yet, not even compiling yet.
| author | tomwalters |
|---|---|
| date | Fri, 15 Oct 2010 05:40:53 +0000 |
| parents | |
| children | c5ac2f0c7fc5 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/Modules/Output/Graphics/Scale/ScaleLogScaled.h Fri Oct 15 05:40:53 2010 +0000 @@ -0,0 +1,43 @@ +/*! + * \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/Scale/Scale.h" + +/*! + * \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; + }; +}; + +#endif /* __MODULE_SCALE_ERB_H__ */
