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

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers AnalysisSelector.hpp Source File

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 }