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

Committer:
MikamiUitOpen
Date:
Mon Aug 15 07:18:07 2016 +0000
Revision:
0:224dccbc4edd
Child:
11:5eb943ee9b91
1

Who changed what in which revision?

UserRevisionLine numberNew 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 }