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:
0:04b43b777fae
--- a/MyClasses_Functions/SD_WavReader.hpp	Wed Jun 15 13:16:49 2016 +0000
+++ b/MyClasses_Functions/SD_WavReader.hpp	Mon Jul 04 05:59:44 2016 +0000
@@ -4,7 +4,7 @@
 //      以下のフォーマット以外は扱わない
 //          PCM,16 ビットステレオ,標本化周波数 44.1 kHz
 //
-//  2016/04/19, Copyright (c) 2016 MIKAMI, Naoki
+//  2016/06/17, Copyright (c) 2016 MIKAMI, Naoki
 //--------------------------------------------------------------
 
 #ifndef SD_WAV_READER_HPP
@@ -12,6 +12,8 @@
 
 #include "SDFileSystem.h"
 #include "BlinkLabel.hpp"
+#define DEBUG_ARRAY_CHECK
+#include "Array.hpp"
 #include <string>
 
 namespace Mikami
@@ -26,16 +28,16 @@
         
         void Close() { fclose(fp_); }
         
-        // ファイルのヘッダ (RIFFxxxxWAVEfm ) 読み込み
+        // ファイルのヘッダ読み込み
         //      戻り値: *.wav で,16 ビットステレオ,
         //             標本化周波数:44.1 kHz の場合 true
         bool IsWavFile();
 
-        // ファイルからデータの取得
-        void Read(int16_t data[], uint32_t size);
+        // ファイルからステレオデータの取得
+        void ReadStereo(Array<int16_t>& dataL, Array<int16_t>& dataR);
 
         // ファイルからデータをモノラルに変換しての取得
-        void ReadAndToMono(int16_t data[], uint32_t size);
+        void ReadAndToMono(Array<int16_t>& data);
         
         // データサイズ(標本化点の数)の取得
         int32_t GetSize();
@@ -51,15 +53,15 @@
             uint32_t nAvgBytesPerSec;   // 転送速度 (bytes/s)
             uint16_t nBlockAlign;       // 4: 16ビットステレオの場合
             uint16_t wBitsPerSample;    // データのビット数,8 または 16
-            uint16_t cbSize;
+            uint16_t cbSize;            // PCM の場合使わない
         };
 
         SDFileSystem *sd_;
         FILE *fp_;
         
         bool ok_;
-        int32_t size_;      // モノラルデータのサイズ
-        int16_t *buffer;    // ステレオをモノラルに変換する際の作業領域
+        int32_t size_;          // データサイズ(標本化点の数)
+        Array<int16_t> buffer;  // ステレオをモノラルに変換する際の作業領域
         
         void ErrorMsg(char msg[])
         {   BlinkLabel errLabel(240, 100, msg, Label::CENTER); }