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:
Thu Apr 27 23:55:53 2017 +0000
Revision:
16:d60e5187fd31
Parent:
15:fac50dd1de44
17

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MikamiUitOpen 15:fac50dd1de44 1 //------------------------------------------------------------------------------
MikamiUitOpen 15:fac50dd1de44 2 // イコライザ用フィルタのパラメータを設定し,その周波数特性を描画するためのクラス
MikamiUitOpen 15:fac50dd1de44 3 //
MikamiUitOpen 15:fac50dd1de44 4 // 2017/04/10, Copyright (c) 2017 MIKAMI, Naoki
MikamiUitOpen 15:fac50dd1de44 5 //------------------------------------------------------------------------------
MikamiUitOpen 15:fac50dd1de44 6
MikamiUitOpen 15:fac50dd1de44 7 #include "GrEqDesignerDrawer.hpp"
MikamiUitOpen 15:fac50dd1de44 8
MikamiUitOpen 15:fac50dd1de44 9 namespace Mikami
MikamiUitOpen 15:fac50dd1de44 10 {
MikamiUitOpen 15:fac50dd1de44 11 // Constructor
MikamiUitOpen 15:fac50dd1de44 12 GrEqDesignerDrawer::GrEqDesignerDrawer(uint16_t x0, uint16_t y0, float db1,
MikamiUitOpen 15:fac50dd1de44 13 int bands, float f0, int fs)
MikamiUitOpen 15:fac50dd1de44 14 : X0_(x0), Y0_(y0), BANDS_(bands), Q_VAL_(1.0f/sqrtf(2.0f)),
MikamiUitOpen 15:fac50dd1de44 15 f0_(bands), ck_(bands),
MikamiUitOpen 15:fac50dd1de44 16 calculator_(bands, fs), frqResp_(bands),
MikamiUitOpen 15:fac50dd1de44 17 drawerObj_(x0, 50.0f, 20000.0f, 128, y0, -18, 18, db1, 6, fs)
MikamiUitOpen 15:fac50dd1de44 18 {
MikamiUitOpen 15:fac50dd1de44 19 for (int n=0; n<bands; n++) f0_[n] = f0*powf(2, n);
MikamiUitOpen 15:fac50dd1de44 20
MikamiUitOpen 15:fac50dd1de44 21 for (int n=0; n<bands; n++)
MikamiUitOpen 15:fac50dd1de44 22 ck_[n] = calculator_.Execute(n, f0_[n], 0, Q_VAL_);
MikamiUitOpen 15:fac50dd1de44 23 frqResp_.SetParams(ck_);
MikamiUitOpen 15:fac50dd1de44 24 }
MikamiUitOpen 15:fac50dd1de44 25
MikamiUitOpen 15:fac50dd1de44 26 // 周波数特性の描画
MikamiUitOpen 15:fac50dd1de44 27 void GrEqDesignerDrawer::DrawResponse()
MikamiUitOpen 15:fac50dd1de44 28 {
MikamiUitOpen 15:fac50dd1de44 29 drawerObj_.DrawAxis(); // 目盛線の描画
MikamiUitOpen 15:fac50dd1de44 30 FrqRespDrawer::AxisX_Char numX[] = // 横軸の目盛値を描画する際に使う構造体の配列
MikamiUitOpen 15:fac50dd1de44 31 {{ 50, "50"}, { 100, "100"}, { 200, "200"}, { 500, "500"}, { 1000, "1k"},
MikamiUitOpen 15:fac50dd1de44 32 { 2000, "2k"}, { 5000, "5k"}, {10000, "10k"}, {20000, "20k"}};
MikamiUitOpen 15:fac50dd1de44 33
MikamiUitOpen 15:fac50dd1de44 34 drawerObj_.DrawNumericX(numX, 9, 6, "Frequency [Hz]"); // 横軸の目盛
MikamiUitOpen 15:fac50dd1de44 35 drawerObj_.DrawNumericY(-24, -6, 6, "%3d"); // 縦軸の目盛値は 6 dB 間隔
MikamiUitOpen 15:fac50dd1de44 36 drawerObj_.DrawGraph(frqResp_); // 周波数特性のカーブの描画
MikamiUitOpen 15:fac50dd1de44 37 }
MikamiUitOpen 15:fac50dd1de44 38
MikamiUitOpen 15:fac50dd1de44 39 // 周波数特性の平坦化と描画
MikamiUitOpen 15:fac50dd1de44 40 void GrEqDesignerDrawer::DrawFlat()
MikamiUitOpen 15:fac50dd1de44 41 {
MikamiUitOpen 15:fac50dd1de44 42 for (int n=0; n<BANDS_; n++)
MikamiUitOpen 15:fac50dd1de44 43 ck_[n] = calculator_.Execute(n, f0_[n], 0, Q_VAL_);
MikamiUitOpen 15:fac50dd1de44 44 frqResp_.SetParams(ck_);
MikamiUitOpen 15:fac50dd1de44 45
MikamiUitOpen 15:fac50dd1de44 46 drawerObj_.Erase();
MikamiUitOpen 15:fac50dd1de44 47 drawerObj_.DrawAxis(); // 目盛線の描画
MikamiUitOpen 15:fac50dd1de44 48 drawerObj_.DrawGraph(frqResp_); // 周波数特性のグラフのカーブを描画する
MikamiUitOpen 15:fac50dd1de44 49 }
MikamiUitOpen 15:fac50dd1de44 50
MikamiUitOpen 15:fac50dd1de44 51 // 特定のバンドのイコライザ用フィルタのパラメータの設定と周波数特性の再描画
MikamiUitOpen 15:fac50dd1de44 52 void GrEqDesignerDrawer::DesignAndRedraw(float gainDb, int n)
MikamiUitOpen 15:fac50dd1de44 53 {
MikamiUitOpen 15:fac50dd1de44 54 ck_[n] = calculator_.Execute(n, f0_[n], gainDb, Q_VAL_);
MikamiUitOpen 15:fac50dd1de44 55 frqResp_.SetParam(ck_[n], n);
MikamiUitOpen 15:fac50dd1de44 56
MikamiUitOpen 15:fac50dd1de44 57 drawerObj_.Erase();
MikamiUitOpen 15:fac50dd1de44 58 drawerObj_.DrawAxis(); // 目盛線の描画
MikamiUitOpen 15:fac50dd1de44 59 drawerObj_.DrawGraph(frqResp_); // 周波数特性のグラフのカーブを描画する
MikamiUitOpen 15:fac50dd1de44 60 }
MikamiUitOpen 15:fac50dd1de44 61 }