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:
Sun Apr 17 08:44:43 2016 +0000
Revision:
5:4a99dabc9180
Parent:
4:76aa20fb326a
6

Who changed what in which revision?

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