Output the audio signal with filtering by graphic equalizer in the *.wav file on the SD card using onboard CODEC. SD カードの *.wav ファイルのオーディオ信号をグラフィック・イコライザを通して,ボードに搭載されているCODEC で出力する.
Dependencies: F746_GUI F746_SAI_IO SD_PlayerSkeleton FrequencyResponseDrawer
Diff: main.cpp
- Revision:
- 7:be29ba9c83b2
- Parent:
- 5:a5a4f9d7b26c
- Child:
- 9:0d5bd1539291
--- a/main.cpp Sat May 07 08:15:00 2016 +0000 +++ b/main.cpp Mon May 09 08:53:23 2016 +0000 @@ -5,7 +5,7 @@ // 上記以外の形式は扱わない // 出力:モノラル // -// 2016/05/07, Copyright (c) 2016 MIKAMI, Naoki +// 2016/05/09, Copyright (c) 2016 MIKAMI, Naoki //-------------------------------------------------------------- #include "MyFunctions.hpp" @@ -30,7 +30,7 @@ // ボタン用の定数 const uint16_t BG_LEFT = 414; const uint16_t BG_WIDTH = 66; - const uint16_t BG_HEIGHT = 40; + const uint16_t BG_HEIGHT = 36; // ButtonGroup: "OPEN", "PLAY", "PAUSE", "RESUME", "STOP" const string MENU[5] = {"OPEN", "PLAY", "PAUSE", "RESUME", "STOP"}; @@ -40,8 +40,10 @@ menu.Activate(0); for (int n=1; n<5; n++) menu.Inactivate(n); + Button flat(BG_LEFT, 197, BG_WIDTH, BG_HEIGHT, "FLAT"); + const string ON_OFF[2] = {"ON", "OFF"}; - ButtonGroup onOff(BG_LEFT, 230, BG_WIDTH/2, BG_HEIGHT, + ButtonGroup onOff(BG_LEFT, 235, BG_WIDTH/2, BG_HEIGHT, 2, ON_OFF, 0, 0, 2, 0); // フィルタの設計と周波数特性描画用 @@ -56,7 +58,7 @@ // 周波数特性変更用スライダ SeekbarGroup myBars(drawerObj.GetX0(), 178, 82, STAGES, - drawerObj.GetSpaceX(), -9.6f, 9.6f, 0, + drawerObj.GetSpaceX(), -8.0f, 8.0f, 0, SeekBar::Vertical); // フィルタの準備 @@ -81,7 +83,7 @@ { whileFirst = false; while (!menu.Touched(0)) // OPEN がタッチされるまで待つ - ModifyFilter(drawerObj, myBars, hn, onOff, on); + ModifyFilter(drawerObj, myBars, hn, flat, onOff, on); SelectFile(menu, selector, myLabel1, fileName); } else @@ -89,14 +91,14 @@ menu.Activate(1); // PLAY 有効 int touch10; while (!menu.GetTouchedNumber(touch10)) - ModifyFilter(drawerObj, myBars, hn, onOff, on); + ModifyFilter(drawerObj, myBars, hn, flat, onOff, on); if (touch10 == 0) SelectFile(menu, selector, myLabel1, fileName); } loopCount = SD_Open(sdReader, fileName, frameSize); while (!menu.Touched(1)) // PLAY がタッチされるまで待つ - ModifyFilter(drawerObj, myBars, hn, onOff, on); + ModifyFilter(drawerObj, myBars, hn, flat, onOff, on); } else loopCount = SD_Open(sdReader, fileName, frameSize); @@ -114,6 +116,7 @@ // IIR フィルタの内部の遅延器のクリア for (int k=0; k<STAGES; k++) hn[k].Clear(); + mySai.PlayOut(); // Play 開始 for (int k=0; k<loopCount; k++) { @@ -129,7 +132,7 @@ // PLAY か RESUME か STOP がタッチされるまで待つ int touch134 = -1; while (!menu.GetTouchedNumber(touch134)) - ModifyFilter(drawerObj, myBars, hn, onOff, on); + ModifyFilter(drawerObj, myBars, hn, flat, onOff, on); switch (touch134) { case 1: playOk = true; // 最初から PLAY @@ -145,9 +148,9 @@ } if (playOk || stopOk) break; - ModifyFilter(drawerObj, myBars, hn, onOff, on); + ModifyFilter(drawerObj, myBars, hn, flat, onOff, on); // 1フレーム分の信号処理 (イコライザ) の実行 - ProcessSignal(sdReader, mySai, sn, hn, STAGES, on); + SignalProcessing(sdReader, mySai, sn, hn, STAGES, on); } mySai.Stop(); menu.Activate(0); // OPEN 有効