revised version of F746_SD_GraphicEqualizer

Dependencies:   BSP_DISCO_F746NG F746_GUI F746_SAI_IO FrequencyResponseDrawer LCD_DISCO_F746NG SDFileSystem_Warning_Fixed TS_DISCO_F746NG mbed

Fork of F746_SD_GraphicEqualizer by 不韋 呂

Revision:
0:e953eb392151
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MyClasses_Functions/GrEqParamsCalculator.hpp	Wed Apr 27 13:56:39 2016 +0000
@@ -0,0 +1,44 @@
+//------------------------------------------------------------------------------
+//  Parameters calculator class of buquad unit for graphic equalizer
+//  グラフィックイコライザで使う biquad フィルタの係数を計算するクラス
+//
+//   2016/04/27, Copyright (c) 2016 MIKAMI, Naoki
+//------------------------------------------------------------------------------
+
+#ifndef GRAPHIC_EQALIZER_PARAMETER_CALCULATOR_HPP
+#define GRAPHIC_EQALIZER_PARAMETER_CALCULATOR_HPP
+
+#include "mbed.h"
+#include "BiquadGrEq.hpp"
+
+namespace Mikami
+{
+    class GrEqParamsCalculator
+    {
+    public:
+        // Constructor
+        GrEqParamsCalculator(float fs) : FS_(fs) {}
+
+        // 係数を計算する
+        BiquadGrEq::Coefs Execute(float f0, float gDb, float qVal)
+        {
+            const float PI = 3.1415926536f;
+            BiquadGrEq::Coefs coefs;
+            
+            float g_sqrt = sqrtf(powf(10, gDb/20.0f));
+            float w0 = 2.0f*PI*f0/FS_;
+            float alpha = sinf(w0)/(2.0f*qVal);
+            float a0 = 1.0f + alpha/g_sqrt;
+            coefs.a1 = 2.0f*cosf(w0)/a0;
+            coefs.a2 = -(1.0f - alpha/g_sqrt)/a0;
+            coefs.b0 = (1.0f + alpha*g_sqrt)/a0;
+            coefs.b1 = -coefs.a1;
+            coefs.b2 = (1.0f - alpha*g_sqrt)/a0;
+            return coefs;
+        }
+
+    private:
+        const float FS_;
+    };
+}
+#endif  // GRAPHIC_EQALIZER_PARAMETER_CALCULATOR_HPP