Integrated program of 4 different kinds of application programs for processing sound signal. 4種類のサウンド信号処理を統合したプログラム.
Dependencies: F746_GUI F746_SAI_IO FrequencyResponseDrawer SD_PlayerSkeleton UIT_FFT_Real
MyGraphicEqualizer/GrEqDesignerDrawer.cpp@0:224dccbc4edd, 2016-08-15 (annotated)
- Committer:
- MikamiUitOpen
- Date:
- Mon Aug 15 07:18:07 2016 +0000
- Revision:
- 0:224dccbc4edd
- Child:
- 11:5eb943ee9b91
1
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
MikamiUitOpen | 0:224dccbc4edd | 1 | //------------------------------------------------------------------------------ |
MikamiUitOpen | 0:224dccbc4edd | 2 | // イコライザ用フィルタのパラメータを設定し,その周波数特性を描画するためのクラス |
MikamiUitOpen | 0:224dccbc4edd | 3 | // |
MikamiUitOpen | 0:224dccbc4edd | 4 | // 2016/08/15, Copyright (c) 2016 MIKAMI, Naoki |
MikamiUitOpen | 0:224dccbc4edd | 5 | //------------------------------------------------------------------------------ |
MikamiUitOpen | 0:224dccbc4edd | 6 | |
MikamiUitOpen | 0:224dccbc4edd | 7 | #include "GrEqDesignerDrawer.hpp" |
MikamiUitOpen | 0:224dccbc4edd | 8 | |
MikamiUitOpen | 0:224dccbc4edd | 9 | namespace Mikami |
MikamiUitOpen | 0:224dccbc4edd | 10 | { |
MikamiUitOpen | 0:224dccbc4edd | 11 | // Constructor |
MikamiUitOpen | 0:224dccbc4edd | 12 | GrEqDesignerDrawer::GrEqDesignerDrawer(uint16_t x0, uint16_t y0, |
MikamiUitOpen | 0:224dccbc4edd | 13 | int bands, float f0, int fs, float db1) |
MikamiUitOpen | 0:224dccbc4edd | 14 | : lcd_(GuiBase::GetLcdPtr()), ts_(GuiBase::GetTsPtr()), |
MikamiUitOpen | 0:224dccbc4edd | 15 | X0_(x0), Y0_(y0), BANDS_(bands), Q_VAL_(1.0f/sqrtf(2.0f)), |
MikamiUitOpen | 0:224dccbc4edd | 16 | f0_(bands), ck_(bands), |
MikamiUitOpen | 0:224dccbc4edd | 17 | calculator_(bands, fs), frqResp_(bands), |
MikamiUitOpen | 0:224dccbc4edd | 18 | drawerObj_(x0, 50.0f, 20000.0f, 128, y0, -18, 18, db1, 6, fs) |
MikamiUitOpen | 0:224dccbc4edd | 19 | { |
MikamiUitOpen | 0:224dccbc4edd | 20 | for (int n=0; n<bands; n++) f0_[n] = f0*powf(2, n); |
MikamiUitOpen | 0:224dccbc4edd | 21 | |
MikamiUitOpen | 0:224dccbc4edd | 22 | for (int n=0; n<bands; n++) |
MikamiUitOpen | 0:224dccbc4edd | 23 | ck_[n] = calculator_.Execute(n, f0_[n], 0, Q_VAL_); |
MikamiUitOpen | 0:224dccbc4edd | 24 | frqResp_.SetParams(ck_); |
MikamiUitOpen | 0:224dccbc4edd | 25 | } |
MikamiUitOpen | 0:224dccbc4edd | 26 | |
MikamiUitOpen | 0:224dccbc4edd | 27 | // 周波数特性の描画 |
MikamiUitOpen | 0:224dccbc4edd | 28 | void GrEqDesignerDrawer::DrawResponse() |
MikamiUitOpen | 0:224dccbc4edd | 29 | { |
MikamiUitOpen | 0:224dccbc4edd | 30 | drawerObj_.DrawAxis(); // 目盛線の描画 |
MikamiUitOpen | 0:224dccbc4edd | 31 | FrqRespDrawer::AxisX_Char numX[] = // 横軸の目盛値を描画する際に使う構造体の配列 |
MikamiUitOpen | 0:224dccbc4edd | 32 | {{ 50, "50"}, { 100, "100"}, { 200, "200"}, { 500, "500"}, { 1000, "1k"}, |
MikamiUitOpen | 0:224dccbc4edd | 33 | { 2000, "2k"}, { 5000, "5k"}, {10000, "10k"}, {20000, "20k"}}; |
MikamiUitOpen | 0:224dccbc4edd | 34 | |
MikamiUitOpen | 0:224dccbc4edd | 35 | drawerObj_.DrawNumericX(numX, 9, 6, "Frequency [Hz]"); // 横軸の目盛 |
MikamiUitOpen | 0:224dccbc4edd | 36 | drawerObj_.DrawNumericY(-24, -6, 6, "%3d"); // 縦軸の目盛値は 6 dB 間隔 |
MikamiUitOpen | 0:224dccbc4edd | 37 | drawerObj_.DrawGraph(frqResp_); // 周波数特性のカーブの描画 |
MikamiUitOpen | 0:224dccbc4edd | 38 | } |
MikamiUitOpen | 0:224dccbc4edd | 39 | |
MikamiUitOpen | 0:224dccbc4edd | 40 | // 周波数特性の平坦化と描画 |
MikamiUitOpen | 0:224dccbc4edd | 41 | void GrEqDesignerDrawer::DrawFlat() |
MikamiUitOpen | 0:224dccbc4edd | 42 | { |
MikamiUitOpen | 0:224dccbc4edd | 43 | for (int n=0; n<BANDS_; n++) |
MikamiUitOpen | 0:224dccbc4edd | 44 | ck_[n] = calculator_.Execute(n, f0_[n], 0, Q_VAL_); |
MikamiUitOpen | 0:224dccbc4edd | 45 | frqResp_.SetParams(ck_); |
MikamiUitOpen | 0:224dccbc4edd | 46 | |
MikamiUitOpen | 0:224dccbc4edd | 47 | drawerObj_.Erase(); |
MikamiUitOpen | 0:224dccbc4edd | 48 | drawerObj_.DrawAxis(); // 目盛線の描画 |
MikamiUitOpen | 0:224dccbc4edd | 49 | drawerObj_.DrawGraph(frqResp_); // 周波数特性のグラフのカーブを描画する |
MikamiUitOpen | 0:224dccbc4edd | 50 | } |
MikamiUitOpen | 0:224dccbc4edd | 51 | |
MikamiUitOpen | 0:224dccbc4edd | 52 | // 特定のバンドのイコライザ用フィルタのパラメータの設定と周波数特性の再描画 |
MikamiUitOpen | 0:224dccbc4edd | 53 | void GrEqDesignerDrawer::DesignAndRedraw(float gainDb, int n) |
MikamiUitOpen | 0:224dccbc4edd | 54 | { |
MikamiUitOpen | 0:224dccbc4edd | 55 | ck_[n] = calculator_.Execute(n, f0_[n], gainDb, Q_VAL_); |
MikamiUitOpen | 0:224dccbc4edd | 56 | frqResp_.SetParam(ck_[n], n); |
MikamiUitOpen | 0:224dccbc4edd | 57 | |
MikamiUitOpen | 0:224dccbc4edd | 58 | drawerObj_.Erase(); |
MikamiUitOpen | 0:224dccbc4edd | 59 | drawerObj_.DrawAxis(); // 目盛線の描画 |
MikamiUitOpen | 0:224dccbc4edd | 60 | drawerObj_.DrawGraph(frqResp_); // 周波数特性のグラフのカーブを描画する |
MikamiUitOpen | 0:224dccbc4edd | 61 | } |
MikamiUitOpen | 0:224dccbc4edd | 62 | } |