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
Diff: MyClasses_Functions/MyFunctions.cpp
- 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);