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: main.cpp
- Revision:
- 2:2a5c93bf729a
- Parent:
- 1:a5837720e14a
- Child:
- 4:14f401cb069a
--- a/main.cpp Wed Apr 27 14:24:45 2016 +0000
+++ b/main.cpp Sun May 01 02:44:30 2016 +0000
@@ -5,7 +5,7 @@
// 上記以外の形式は扱わない
// 出力:モノラル
//
-// 2016/04/27, Copyright (c) 2016 MIKAMI, Naoki
+// 2016/05/01, Copyright (c) 2016 MIKAMI, Naoki
//--------------------------------------------------------------
#include "MyFunctions.hpp"
@@ -15,20 +15,21 @@
int main()
{
- Label myLabel(80, 4, "SD Card Audio Player", Label::LEFT, Font16);
+ Label myLabel1(212, 2, "SD Card Audio Player", Label::CENTER, Font16);
+ Label myLabel2(212, 16, "---- Graphic equalizer ----", Label::CENTER, Font12);
const int FS = AUDIO_FREQUENCY_44K; // 標本化周波数: 44.1 kHz
SaiIO_O mySai(2048, FS);
SD_WavReader sdReader(mySai.GetLength()); // SD カード読み込み用オブジェクト
const int MAX_FILES = 7;
- FileSelector selector(4, 28, MAX_FILES, 38, sdReader);
+ FileSelector selector(4, 26, MAX_FILES, 37, sdReader);
if (!selector.CreateTable())
BlinkLabel errLabel(240, 100, "SD CARD ERROR", Label::CENTER);
// ボタン用の定数
- const uint16_t BG_LEFT = 420;
- const uint16_t BG_WIDTH = 60;
+ const uint16_t BG_LEFT = 414;
+ const uint16_t BG_WIDTH = 66;
const uint16_t BG_HEIGHT = 40;
// ButtonGroup: "OPEN", "PLAY", "PAUSE", "RESUME", "STOP"
@@ -39,21 +40,23 @@
menu.Activate(0);
for (int n=1; n<5; n++) menu.Inactivate(n);
- Button flatButton(BG_LEFT, 230, BG_WIDTH, BG_HEIGHT, "FLAT");
+ const string ON_OFF[2] = {"ON", "OFF"};
+ ButtonGroup onOff(BG_LEFT, 230, BG_WIDTH/2, BG_HEIGHT,
+ 2, ON_OFF, 0, 0, 2, 0);
// フィルタの設計と周波数特性描画用
const int STAGES = 9; // バンド数
DesignerDrawer drawerObj(
- 30, // グラフの左端の位置
+ 28, // グラフの左端の位置
130, // グラフの下端の位置
STAGES, // バンド数
62.5f, // 最低域バンドの中心周波数
FS, // 標本化周波数
- 4); // 1 dB 当たりのピクセル数
+ 2.5f); // 1 dB 当たりのピクセル数
// 周波数特性変更用スライダ
- SeekbarGroup myBars(drawerObj.GetX0(), 186, 66, STAGES,
- drawerObj.GetSpaceX(), -8, 8, 0,
+ SeekbarGroup myBars(drawerObj.GetX0(), 178, 82, STAGES,
+ drawerObj.GetSpaceX(), -9.6f, 9.6f, 0,
SeekBar::Vertical);
// フィルタの準備
@@ -65,6 +68,7 @@
int32_t frameSize = mySai.GetLength();
int16_t *sn = new int16_t[frameSize+1]; // フレームバッファ
bool playOk = false;
+ bool on = true;
bool whileFirst = true;
string fileName;
int32_t loopCount;
@@ -77,28 +81,28 @@
{
whileFirst = false;
while (!menu.Touched(0)) // OPEN がタッチされるまで待つ
- ModifyFilter(drawerObj, myBars, hn, flatButton);
- SelectFile(menu, selector, myLabel, fileName);
+ ModifyFilter(drawerObj, myBars, hn, onOff, on);
+ SelectFile(menu, selector, myLabel1, fileName);
}
else
{
menu.Activate(1); // PLAY 有効
int touch10;
while (!menu.GetTouchedNumber(touch10))
- ModifyFilter(drawerObj, myBars, hn, flatButton);
+ ModifyFilter(drawerObj, myBars, hn, onOff, on);
if (touch10 == 0)
- SelectFile(menu, selector, myLabel, fileName);
+ SelectFile(menu, selector, myLabel1, fileName);
}
loopCount = SD_Open(sdReader, fileName, frameSize);
while (!menu.Touched(1)) // PLAY がタッチされるまで待つ
- ModifyFilter(drawerObj, myBars, hn, flatButton);
+ ModifyFilter(drawerObj, myBars, hn, onOff, on);
}
else
loopCount = SD_Open(sdReader, fileName, frameSize);
- selector.Erase(BG_LEFT-4, 288);
- myLabel.Draw("9-band Graphic Equalizer");
+ selector.Erase(0, 0, BG_LEFT-4, 288);
+ myLabel1.Draw("9-band Graphic Equalizer");
myBars.RedrawAll();
drawerObj.DrawResponse();
menu.Inactivate(0); // OPEN 無効
@@ -126,7 +130,7 @@
// PLAY か RESUME か STOP がタッチされるまで待つ
int touch134 = -1;
while (!menu.GetTouchedNumber(touch134))
- ModifyFilter(drawerObj, myBars, hn, flatButton);
+ ModifyFilter(drawerObj, myBars, hn, onOff, on);
switch (touch134)
{
case 1: playOk = true; // 最初から PLAY
@@ -142,9 +146,9 @@
}
if (playOk || stopOk) break;
- ModifyFilter(drawerObj, myBars, hn, flatButton);
+ ModifyFilter(drawerObj, myBars, hn, onOff, on);
// 1フレーム分の信号処理 (イコライザ) の実行
- ProcessSignal(sdReader, mySai, sn, hn, STAGES);
+ ProcessSignal(sdReader, mySai, sn, hn, STAGES, on);
}
mySai.Stop();
menu.Activate(0); // OPEN 有効
@@ -154,4 +158,3 @@
sdReader.Close(); // SD のファイルのクローズ
}
}
-
