Output the audio signal with filtering by graphic equalizer in the *.wav file on the SD card using onboard CODEC. SD カードの *.wav ファイルのオーディオ信号をグラフィック・イコライザを通して,ボードに搭載されているCODEC で出力する.

Dependencies:   F746_GUI F746_SAI_IO SD_PlayerSkeleton FrequencyResponseDrawer

Committer:
MikamiUitOpen
Date:
Mon Apr 10 04:07:35 2017 +0000
Revision:
24:f78f9d0ac262
Parent:
20:5c69e664e17c
25

Who changed what in which revision?

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