Output the audio signal with filtering by IIR filter in the *.wav file on the SD card using onboard CODEC. SD カードの *.wav ファイルのオーディオ信号を遮断周波数可変の IIR フィルタを通して,ボードに搭載されているCODEC で出力する.

Dependencies:   BSP_DISCO_F746NG F746_GUI LCD_DISCO_F746NG SDFileSystem_Warning_Fixed TS_DISCO_F746NG mbed FrequencyResponseDrawer F746_SAI_IO Array_Matrix

Revision:
11:769d986c10fa
Parent:
9:fe097e4c9024
--- a/main.cpp	Wed Jun 15 13:16:49 2016 +0000
+++ b/main.cpp	Mon Jul 04 05:59:44 2016 +0000
@@ -3,9 +3,9 @@
 //      SD のファイル: *.wav
 //                   PCM,16 ビットステレオ,標本化周波数 44.1 kHz
 //      IIR フィルタ ---- 低域通過および高域通過フィルタ
-//      出力:モノラル    
+//      出力:モノラル(L+R,左チャンネルのみ,右チャンネルには出力しない)
 //
-//  2016/05/10, Copyright (c) 2016 MIKAMI, Naoki
+//  2016/07/04, Copyright (c) 2016 MIKAMI, Naoki
 //--------------------------------------------------------------
 
 #include "MyFunctions.hpp"
@@ -15,15 +15,15 @@
 
 int main()
 {
-    Label myLabel1(200, 4, "SD Card Audio Player", Label::CENTER, Font16);
-    Label myLabel2(200, 18, "---- variable LPF and HPF ----", Label::CENTER, Font12);
+    Label myLabel1(200, 4, "Variable LPF and HPF 15:02", Label::CENTER, Font16);
+    Label myLabel2(200, 20, "---- Source: microSD card ----", Label::CENTER, Font12);
 
     const int FS = AUDIO_FREQUENCY_44K;         // 標本化周波数: 44.1 kHz
     SaiIO mySai(SaiIO::OUTPUT, 2048, FS);
 
     SD_WavReader sdReader(mySai.GetLength());   // SD カード読み込み用オブジェクト
     const int MAX_FILES = 7;
-    FileSelector selector(4, 26, MAX_FILES, 34, sdReader);
+    FileSelector selector(4, 22, MAX_FILES, 34, sdReader);
     if (!selector.CreateTable())
         BlinkLabel errLabel(240, 100, "SD CARD ERROR", Label::CENTER);
 
@@ -71,7 +71,6 @@
     for (int k=0; k<ORDER/2; k++) hn[k] = Biquad(ck[k]);
 
     int32_t frameSize = mySai.GetLength();
-    int16_t *sn = new int16_t[frameSize+1]; // フレームバッファ
     bool playOk = false;
     bool filterOn = false;
     bool whileFirst = true;
@@ -109,8 +108,8 @@
         else
             loopCount = SD_Open(sdReader, fileName, frameSize);
 
-        selector.Erase(0, 0, BG_LEFT-4, 288);
-        myLabel1.Draw("IIR Butterworth filter");
+        selector.Erase(0, 0, BG_LEFT-4, 272);
+        myLabel1.Draw();
         drawerObj.DrawResponse();
         menu.Inactivate(0); // OPEN 無効
         menu.Activate(2);   // PAUSE 有効
@@ -156,7 +155,7 @@
 
             ModifyFilter(drawerObj, lpHp, onOff, hn, ck, g0, filterOn);
             // 1フレーム分の信号処理 (IIR フィルタ) の実行
-            IIR_Filtering(sdReader, mySai, sn, g0, hn, ORDER, filterOn);
+            IIR_Filtering(sdReader, mySai, g0, hn, ORDER, filterOn);
         }
         mySai.StopOut();
         menu.Activate(0);               // OPEN 有効
@@ -166,4 +165,3 @@
         sdReader.Close();   // SD のファイルのクローズ
     }
 }
-