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
Diff: MyClasses_Functions/MyFunctions.cpp
- Revision:
- 11:769d986c10fa
- Parent:
- 9:fe097e4c9024
--- a/MyClasses_Functions/MyFunctions.cpp Wed Jun 15 13:16:49 2016 +0000 +++ b/MyClasses_Functions/MyFunctions.cpp Mon Jul 04 05:59:44 2016 +0000 @@ -1,35 +1,35 @@ //-------------------------------------------------------------- // フィルタ処理付き SD オーディオプレーヤーで使う大域関数(ヘッダ) // -// 2016/05/07, Copyright (c) 2016 MIKAMI, Naoki +// 2016/07/04, Copyright (c) 2016 MIKAMI, Naoki //-------------------------------------------------------------- #include "MyFunctions.hpp" // 1フレーム分の信号処理 (IIR フィルタ) の実行 void IIR_Filtering(SD_WavReader &sdReader, SaiIO &mySai, - int16_t sn[], float g0, Biquad hn[], + float g0, Biquad hn[], int order, bool filterOn) { + static int32_t frameSize = mySai.GetLength(); + static Array<int16_t> sn(frameSize); // フレームバッファ + // 1フレーム分のデータを SD から読み込む - sdReader.ReadAndToMono(sn, mySai.GetLength()); + sdReader.ReadAndToMono(sn); while (!mySai.IsXferred()) {} // データの転送が終わるまで待つ //-------------------------------------------------------------- // 1フレーム分の信号処理を行い,その結果を出力する - for (int n=0; n<mySai.GetLength(); n++) + for (int n=0; n<frameSize; n++) { - int16_t value; - if (filterOn) // フィルタ処理実行 - { - // 縦続形の IIR フィルタ - float yn = g0*sn[n]; - for (int k=0; k<order/2; k++) yn = hn[k].Execute(yn); - value = (int16_t)yn; - } - else - value = sn[n]; // フィルタ処理なし - mySai.Output(value, value); // 音響信号の出力 + // 縦続形の IIR フィルタ + float yn = g0*sn[n]; + for (int k=0; k<order/2; k++) yn = hn[k].Execute(yn); + + int16_t value = filterOn ? (int16_t)yn : sn[n]; + + // 音響信号の出力,右チャンネルには出力しない + mySai.Output(value, 0); } //-------------------------------------------------------------- mySai.ResetXferred(); // 次のデータ転送に備える @@ -82,4 +82,3 @@ } } -