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:
Fri Apr 08 13:11:53 2016 +0000
Revision:
0:6748e3332e85
1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MikamiUitOpen 0:6748e3332e85 1 //------------------------------------------------------------------------------
MikamiUitOpen 0:6748e3332e85 2 // Design of Butterworth LPF and HPF using bilinear transform -- Header
MikamiUitOpen 0:6748e3332e85 3 //
MikamiUitOpen 0:6748e3332e85 4 // 2016/03/31, Copyright (c) 2016 MIKAMI, Naoki
MikamiUitOpen 0:6748e3332e85 5 //------------------------------------------------------------------------------
MikamiUitOpen 0:6748e3332e85 6
MikamiUitOpen 0:6748e3332e85 7 #ifndef BILINEAR_BUTTERWORTH_HPP
MikamiUitOpen 0:6748e3332e85 8 #define BILINEAR_BUTTERWORTH_HPP
MikamiUitOpen 0:6748e3332e85 9
MikamiUitOpen 0:6748e3332e85 10 #include "mbed.h"
MikamiUitOpen 0:6748e3332e85 11 #include <complex> // requisite
MikamiUitOpen 0:6748e3332e85 12
MikamiUitOpen 0:6748e3332e85 13 namespace Mikami
MikamiUitOpen 0:6748e3332e85 14 {
MikamiUitOpen 0:6748e3332e85 15 typedef complex<float> Complex; // define "Complex"
MikamiUitOpen 0:6748e3332e85 16
MikamiUitOpen 0:6748e3332e85 17 class BilinearDesign
MikamiUitOpen 0:6748e3332e85 18 {
MikamiUitOpen 0:6748e3332e85 19 public:
MikamiUitOpen 0:6748e3332e85 20 struct Coefs { float a1, a2, b1, b2; };
MikamiUitOpen 0:6748e3332e85 21 enum Type { LPF, HPF };
MikamiUitOpen 0:6748e3332e85 22
MikamiUitOpen 0:6748e3332e85 23 // Constructor
MikamiUitOpen 0:6748e3332e85 24 BilinearDesign(int order, float fs)
MikamiUitOpen 0:6748e3332e85 25 : PI_FS_(PI_/fs), ORDER_(order)
MikamiUitOpen 0:6748e3332e85 26 {
MikamiUitOpen 0:6748e3332e85 27 sP_ = new Complex[order/2];
MikamiUitOpen 0:6748e3332e85 28 zP_ = new Complex[order/2];
MikamiUitOpen 0:6748e3332e85 29 ck_ = new Coefs[order/2];
MikamiUitOpen 0:6748e3332e85 30 }
MikamiUitOpen 0:6748e3332e85 31
MikamiUitOpen 0:6748e3332e85 32 // Destractor
MikamiUitOpen 0:6748e3332e85 33 ~BilinearDesign()
MikamiUitOpen 0:6748e3332e85 34 {
MikamiUitOpen 0:6748e3332e85 35 delete[] sP_;
MikamiUitOpen 0:6748e3332e85 36 delete[] zP_;
MikamiUitOpen 0:6748e3332e85 37 delete[] ck_;
MikamiUitOpen 0:6748e3332e85 38 }
MikamiUitOpen 0:6748e3332e85 39
MikamiUitOpen 0:6748e3332e85 40 // Execution of design
MikamiUitOpen 0:6748e3332e85 41 void Execute(float fc, Type pb, Coefs c[], float& g);
MikamiUitOpen 0:6748e3332e85 42
MikamiUitOpen 0:6748e3332e85 43 private:
MikamiUitOpen 0:6748e3332e85 44 static const float PI_ = 3.1415926536f;
MikamiUitOpen 0:6748e3332e85 45 const float PI_FS_;
MikamiUitOpen 0:6748e3332e85 46 const int ORDER_;
MikamiUitOpen 0:6748e3332e85 47
MikamiUitOpen 0:6748e3332e85 48 Complex* sP_; // Poles on s-plane
MikamiUitOpen 0:6748e3332e85 49 Complex* zP_; // Poles on z-plane
MikamiUitOpen 0:6748e3332e85 50 Coefs* ck_; // Coefficients of transfer function for cascade form
MikamiUitOpen 0:6748e3332e85 51 float gain_; // Gain factor for cascade form
MikamiUitOpen 0:6748e3332e85 52
MikamiUitOpen 0:6748e3332e85 53 void Butterworth();
MikamiUitOpen 0:6748e3332e85 54 void Bilinear(float fc);
MikamiUitOpen 0:6748e3332e85 55 void ToCascade(Type pb);
MikamiUitOpen 0:6748e3332e85 56 void GetGain(Type pb);
MikamiUitOpen 0:6748e3332e85 57 void GetCoefs(Coefs c[], float& gain);
MikamiUitOpen 0:6748e3332e85 58 };
MikamiUitOpen 0:6748e3332e85 59 }
MikamiUitOpen 0:6748e3332e85 60 #endif // BILINEAR_BUTTERWORTH_HPP