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__ */