Version using MEMS microphone and CODEC for the program "F746_RealtimeSpectrumAnalyzer". "F746_RealtimeSpectrumAnalyzer" の入力を MEMS のマイクと CODEC に変更.このプログラムは Tomona Nanase さんが作成し DISCO-F746NG_Oscilloscope の名前で登録しているプログラムで, CODEC を使って入力する部分を参考にして作成.このプログラムの説明は,CQ出版社のインターフェース誌,2016年4月号に掲載.
Dependencies: BSP_DISCO_F746NG BUTTON_GROUP LCD_DISCO_F746NG TS_DISCO_F746NG UIT_FFT_Real mbed
AnalysisSelector.hpp
00001 //------------------------------------------------------- 00002 // Class for selecting spectrum analysis method and 00003 // displaying 00004 // 00005 // 2015/12/29, Copyright (c) 2015 MIKAMI, Naoki 00006 //------------------------------------------------------- 00007 00008 #include "SpectrumDisplay.hpp" 00009 #include "FFT_Analysis.hpp" 00010 #include "LPC_Analysis.hpp" 00011 #include "CepstrumAnalysis.hpp" 00012 using namespace Mikami; 00013 00014 namespace Mikami 00015 { 00016 class Selector 00017 { 00018 public: 00019 Selector(SpectrumDisplay& disp, 00020 int nData, int nFft, int order, int nLifter) 00021 : disp_(disp), N_DATA_(nData), 00022 sn_f_(new float[nData]), dbData_(new float[nFft/2+1]) 00023 { 00024 obj_[0] = new FftAnalyzer(nData, nFft); 00025 obj_[1] = new LpcAnalyzer(nData, nFft, order); 00026 obj_[2] = new CepstrumAnalyzer(nData, nFft, nLifter); 00027 } 00028 00029 ~Selector() 00030 { 00031 delete[] sn_f_; 00032 delete[] dbData_; 00033 for (int n=0; n<3; n++) delete obj_[n]; 00034 } 00035 00036 void Execute(const int16_t sn[], int touchedNum) 00037 { 00038 if (touchedNum >=0) 00039 { 00040 for (int n=0; n<N_DATA_; n++) sn_f_[n] = sn[n]; 00041 obj_[touchedNum]->Execute(sn_f_, dbData_); 00042 disp_.Draw(dbData_); 00043 } 00044 } 00045 00046 private: 00047 SpectrumDisplay& disp_; 00048 AnalyzerBase* obj_[3]; 00049 00050 const int N_DATA_; 00051 00052 float* sn_f_; 00053 float* dbData_; 00054 00055 // disallow copy constructor and assignment operator 00056 Selector(const Selector& ); 00057 Selector& operator=(const Selector& ); 00058 }; 00059 }
Generated on Sun Jul 17 2022 12:37:24 by 1.7.2