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:
2:2a5c93bf729a
Parent:
1:a5837720e14a
Child:
5:a5a4f9d7b26c
--- a/MyClasses_Functions/MyFunctions.cpp	Wed Apr 27 14:24:45 2016 +0000
+++ b/MyClasses_Functions/MyFunctions.cpp	Sun May 01 02:44:30 2016 +0000
@@ -1,14 +1,15 @@
 //--------------------------------------------------------------
 //  グラフィックイコライザ付き SD オーディオプレーヤーで使う大域関数
 //
-//  2016/04/27, Copyright (c) 2016 MIKAMI, Naoki
+//  2016/05/01, Copyright (c) 2016 MIKAMI, Naoki
 //--------------------------------------------------------------
 
 #include "MyFunctions.hpp"
 
 // 1フレーム分の信号処理 (イコライザ) の実行
 void ProcessSignal(SD_WavReader &sdReader, SaiIO_O &mySai,
-                   int16_t sn[], BiquadGrEq hn[], int stages)
+                   int16_t sn[], BiquadGrEq hn[],
+                   int stages, bool on)
 {
     // 1フレーム分のデータを SD から読み込む
     sdReader.ReadAndToMono(sn, mySai.GetLength());
@@ -19,9 +20,10 @@
     for (int n=0; n<mySai.GetLength(); n++)
     {
         // 縦続形の IIR フィルタ実行
-        float yn = 0.3f*sn[n];      // 0.3 の乗算はブースとしてもクリップされないようにするため
+        float xn = 0.125f*sn[n];    // 0.125 の乗算はブースとしてもクリップされないようにするため
+        float yn = xn;
         for (int k=0; k<stages; k++) yn = hn[k].Execute(yn);
-        int16_t value = (int16_t)yn;
+        int16_t value = on ? (int16_t)yn : xn;
         mySai.Output(value, value); // 音響信号の出力
     }
     //--------------------------------------------------------------
@@ -42,8 +44,8 @@
 void SelectFile(ButtonGroup &menu, FileSelector &selector,
                 Label &msg, string &selectedName)
 {
+    selector.DisplayFileList();   
     msg.Draw("Select file");
-    selector.DisplayFileList();   
     do
     {
         if (selector.Select(selectedName))
@@ -55,9 +57,12 @@
 // フィルタの周波数特性の変更
 void ModifyFilter(DesignerDrawer &drawerObj,
                   SeekbarGroup &myBars, BiquadGrEq hn[],
-                  Button &reset)
+                  ButtonGroup &onOff, bool &on)
 {
-    if (reset.Touched())
+    int sw = 0;
+    if (onOff.GetTouchedNumber(sw))
+        on = (sw == 0) ? true : false;
+/*
     {
         drawerObj.DesignAndRedraw();
         for (int n=0; n<drawerObj.GetStages(); n++)
@@ -66,6 +71,7 @@
         reset.Draw();
         return;
     }
+*/
     static int num = 0;
     if (!myBars.GetSlidedNumber(num)) return;
     drawerObj.DesignAndRedraw(myBars.GetValue(num), num);