Output the audio signal (*.bin) with filtering by IIR filter in the SD card using onboard CODEC. For *.wav file, F746_SD_WavPlayer and F746_SD_GraphicEqualiser are published on mbed. SD カードのオーディオ信号 (*.bin) を遮断周波数可変の IIR フィルタを通して,ボードに搭載されているCODEC で出力する.*.wav 形式のファイル用には,F746_SD_WavPlayer と F746_SD_GraphicEqualiser を mbed で公開している.

Dependencies:   BSP_DISCO_F746NG_patch_fixed F746_GUI LCD_DISCO_F746NG SDFileSystem_Warning_Fixed TS_DISCO_F746NG mbed

Committer:
MikamiUitOpen
Date:
Sat Apr 16 13:53:53 2016 +0000
Revision:
4:76aa20fb326a
Child:
5:4a99dabc9180
4

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MikamiUitOpen 4:76aa20fb326a 1 //-----------------------------------------------------------
MikamiUitOpen 4:76aa20fb326a 2 // FrqRespDrawer class Header
MikamiUitOpen 4:76aa20fb326a 3 //
MikamiUitOpen 4:76aa20fb326a 4 // 2016/04/16, Copyright (c) 2016 MIKAMI, Naoki
MikamiUitOpen 4:76aa20fb326a 5 //-----------------------------------------------------------
MikamiUitOpen 4:76aa20fb326a 6
MikamiUitOpen 4:76aa20fb326a 7 #ifndef F746_FRQ_RESP_DRAWER_HPP
MikamiUitOpen 4:76aa20fb326a 8 #define F746_FRQ_RESP_DRAWER_HPP
MikamiUitOpen 4:76aa20fb326a 9
MikamiUitOpen 4:76aa20fb326a 10 #include "Label.hpp"
MikamiUitOpen 4:76aa20fb326a 11 #include "IIR_CascadeFrqResp.hpp"
MikamiUitOpen 4:76aa20fb326a 12
MikamiUitOpen 4:76aa20fb326a 13 namespace Mikami
MikamiUitOpen 4:76aa20fb326a 14 {
MikamiUitOpen 4:76aa20fb326a 15 class FrqRespDrawer
MikamiUitOpen 4:76aa20fb326a 16 {
MikamiUitOpen 4:76aa20fb326a 17 public:
MikamiUitOpen 4:76aa20fb326a 18 // Constructor
MikamiUitOpen 4:76aa20fb326a 19 FrqRespDrawer(uint16_t org, float min, float max, uint16_t dec,
MikamiUitOpen 4:76aa20fb326a 20 uint16_t orgY, float minDb, float maxDb, uint16_t db10,
MikamiUitOpen 4:76aa20fb326a 21 float fs,
MikamiUitOpen 4:76aa20fb326a 22 uint32_t lineColor = 0xFF00B0FF,
MikamiUitOpen 4:76aa20fb326a 23 uint32_t axisColor = LCD_COLOR_LIGHTGRAY,
MikamiUitOpen 4:76aa20fb326a 24 uint32_t backColor = GuiBase::ENUM_BACK)
MikamiUitOpen 4:76aa20fb326a 25 : lcd_(GuiBase::GetLcdPtr()),
MikamiUitOpen 4:76aa20fb326a 26 ORG_(org), MIN_(min), MAX_(max), DEC_(dec),
MikamiUitOpen 4:76aa20fb326a 27 ORGY_(orgY), MIN_DB_(minDb), MAX_DB_(maxDb), DB10_(db10),
MikamiUitOpen 4:76aa20fb326a 28 FS_(fs),
MikamiUitOpen 4:76aa20fb326a 29 LINE_COLOR_(lineColor),
MikamiUitOpen 4:76aa20fb326a 30 AXIS_COLOR_(axisColor),
MikamiUitOpen 4:76aa20fb326a 31 BACK_COLOR_(backColor),
MikamiUitOpen 4:76aa20fb326a 32 DB1_(db10*0.1f) {}
MikamiUitOpen 4:76aa20fb326a 33
MikamiUitOpen 4:76aa20fb326a 34 // 周波数に対応する x 座標値の取得
MikamiUitOpen 4:76aa20fb326a 35 int X(float frq)
MikamiUitOpen 4:76aa20fb326a 36 { return Round(ORG_ + DEC_*log10f(frq/MIN_)); }
MikamiUitOpen 4:76aa20fb326a 37
MikamiUitOpen 4:76aa20fb326a 38 // x 座標値を周波数に変換
MikamiUitOpen 4:76aa20fb326a 39 float PosToFrq(uint16_t x)
MikamiUitOpen 4:76aa20fb326a 40 { return MIN_*powf(10.0f, (x - ORG_)/(float)DEC_); }
MikamiUitOpen 4:76aa20fb326a 41
MikamiUitOpen 4:76aa20fb326a 42 // 目盛線の描画
MikamiUitOpen 4:76aa20fb326a 43 void DrawAxis();
MikamiUitOpen 4:76aa20fb326a 44
MikamiUitOpen 4:76aa20fb326a 45 // 横軸の目盛値の表示用
MikamiUitOpen 4:76aa20fb326a 46 void DrawCharX(uint32_t frq, int offsetY,
MikamiUitOpen 4:76aa20fb326a 47 const char str[], sFONT &fonts = Font12,
MikamiUitOpen 4:76aa20fb326a 48 uint32_t textColor = LCD_COLOR_WHITE)
MikamiUitOpen 4:76aa20fb326a 49 { Label frequency(X(frq), ORGY_+offsetY, str, Label::CENTER); }
MikamiUitOpen 4:76aa20fb326a 50
MikamiUitOpen 4:76aa20fb326a 51 // 縦軸の目盛値の表示
MikamiUitOpen 4:76aa20fb326a 52 void DrawNumericY(int offsetX, int offsetY, int count,
MikamiUitOpen 4:76aa20fb326a 53 uint16_t d_dB, const char fmt[], sFONT &fonts = Font12,
MikamiUitOpen 4:76aa20fb326a 54 uint32_t textColor = LCD_COLOR_WHITE);
MikamiUitOpen 4:76aa20fb326a 55
MikamiUitOpen 4:76aa20fb326a 56 // 周波数特性のグラフの描画
MikamiUitOpen 4:76aa20fb326a 57 void DrawGraph(FrequencyResponse &frqResp);
MikamiUitOpen 4:76aa20fb326a 58
MikamiUitOpen 4:76aa20fb326a 59 // 消去
MikamiUitOpen 4:76aa20fb326a 60 void Erase();
MikamiUitOpen 4:76aa20fb326a 61
MikamiUitOpen 4:76aa20fb326a 62 private:
MikamiUitOpen 4:76aa20fb326a 63 LCD_DISCO_F746NG *lcd_;
MikamiUitOpen 4:76aa20fb326a 64 const uint16_t ORG_; // 横軸の目盛の最小値に対応する位置
MikamiUitOpen 4:76aa20fb326a 65 const float MIN_; // 横軸の目盛の最小値
MikamiUitOpen 4:76aa20fb326a 66 const float MAX_; // 横軸の目盛の最大値
MikamiUitOpen 4:76aa20fb326a 67 const uint16_t DEC_; // 周波数の 10 倍に対応する長さ (pixels)
MikamiUitOpen 4:76aa20fb326a 68 const uint16_t ORGY_; // 縦軸の目盛の最小値に対応する位置
MikamiUitOpen 4:76aa20fb326a 69 const float MIN_DB_; // 縦軸の目盛の最小値 [dB]
MikamiUitOpen 4:76aa20fb326a 70 const float MAX_DB_; // 縦軸の目盛の最大値 [dB]
MikamiUitOpen 4:76aa20fb326a 71 const uint16_t DB10_; // 10 dB 対応する長さ (pixels)
MikamiUitOpen 4:76aa20fb326a 72 const float FS_; // 標本化周波数
MikamiUitOpen 4:76aa20fb326a 73 const uint32_t LINE_COLOR_;
MikamiUitOpen 4:76aa20fb326a 74 const uint32_t AXIS_COLOR_;
MikamiUitOpen 4:76aa20fb326a 75 const uint32_t BACK_COLOR_;
MikamiUitOpen 4:76aa20fb326a 76 const float DB1_;
MikamiUitOpen 4:76aa20fb326a 77
MikamiUitOpen 4:76aa20fb326a 78 // 丸め
MikamiUitOpen 4:76aa20fb326a 79 int Round(float x) { return x + 0.5f - (x < 0); }
MikamiUitOpen 4:76aa20fb326a 80
MikamiUitOpen 4:76aa20fb326a 81 // 10 のべき乗かどうかの検査
MikamiUitOpen 4:76aa20fb326a 82 bool PowersOf10(float x)
MikamiUitOpen 4:76aa20fb326a 83 { return fabsf(log10f(x) - Round(log10f(x))) < 0.01f; }
MikamiUitOpen 4:76aa20fb326a 84
MikamiUitOpen 4:76aa20fb326a 85 // disallow copy constructor and assignment operator
MikamiUitOpen 4:76aa20fb326a 86 FrqRespDrawer(const FrqRespDrawer&);
MikamiUitOpen 4:76aa20fb326a 87 FrqRespDrawer& operator=(const FrqRespDrawer&);
MikamiUitOpen 4:76aa20fb326a 88 };
MikamiUitOpen 4:76aa20fb326a 89 }
MikamiUitOpen 4:76aa20fb326a 90 #endif // F746_FRQ_RESP_DRAWER_HPP