Spectrum analyzer using DISCO-F746NG. Spectrum is calculated by FFT or linear prediction. The vowel data is in "vowel_data.hpp"
Dependencies: BSP_DISCO_F746NG LCD_DISCO_F746NG TS_DISCO_F746NG UIT_FFT_Real mbed BUTTON_GROUP
Diff: main.cpp
- Revision:
- 3:ce2e8481790c
- Parent:
- 2:4e34945b5c00
- Child:
- 4:3c5241f9fbf3
--- a/main.cpp Tue Oct 27 14:27:41 2015 +0000 +++ b/main.cpp Tue Nov 03 05:41:06 2015 +0000 @@ -1,9 +1,8 @@ //----------------------------------------------------------- // Demo waveform and spectrum display +// Tap the screen to begin the spectrum analyzer // -// Tap the panel to begin the spectrum analyzer -// -// 2015/10/27, Copyright (c) 2015 MIKAMI, Naoki +// 2015/11/03, Copyright (c) 2015 MIKAMI, Naoki //----------------------------------------------------------- #include "vowel_data.hpp" @@ -12,7 +11,7 @@ #include "FFT_Analysis.hpp" #include "SpectrumDisplay.hpp" #include "LPC_Analysis.hpp" -#include "image.h" +#include "PadalingImage.h" using namespace Mikami; @@ -21,9 +20,9 @@ const int Y0_ = 236; // Origin for y axis const float DB1_ = 2.4f; // Pixels for 1 dB const int BIN_ = 1; // Pixels per bin -const int MAX_DB_ = 60; // Maximum dB +const int W_DB = 60; // Width in dB to be displayed -const int FS_ = 8000; // Sampling frequency: 8 kHz +const int FS_ = 8000; // Sampling frequency: 8 kHz LCD_DISCO_F746NG lcd_; TS_DISCO_F746NG ts_; @@ -68,21 +67,20 @@ Button lpButton(lcd_, ts_, 340, 115, 80, 40, LCD_COLOR_MAGENTA, "LP", Font12); lcd_.SetBackColor(backColor); - SpectrumDisplay disp(lcd_, N_FFT_, X0_, Y0_, DB1_, BIN_, MAX_DB_, FS_); + SpectrumDisplay disp(lcd_, N_FFT_, X0_, Y0_, DB1_, BIN_, W_DB, FS_); bool dataOk = false; int vowel = -1; while (true) { for (int k=0; k<N_VOWEL_; k++) { - if (buttons[k]->Touched()) + if (buttons[k]->Touched(0xFF0000B0)) { for (int n=0; n<N_DATA_; n++) sn[n] = sn_[k][n]; WaveformDisplay(lcd_, 50, 40, sn, N_DATA_, backColor); - buttons[k]->DrawButton(0xFF0000B0); if ((vowel != -1) && (k != vowel)) - buttons[vowel]->DrawButton(LCD_COLOR_BLUE); + buttons[vowel]->ReDraw(); vowel = k; for (int n=0; n<N_DATA_; n++) sn_f[n] = sn[n]; @@ -91,37 +89,36 @@ dataOk = true; disp.Clear(backColor); - fftButtonBar.DrawButton(LCD_COLOR_MAGENTA); - fftButtonLine.DrawButton(LCD_COLOR_MAGENTA); - lpButton.DrawButton(LCD_COLOR_MAGENTA); + fftButtonBar.Draw(LCD_COLOR_MAGENTA); + fftButtonLine.Draw(LCD_COLOR_MAGENTA); + lpButton.Draw(LCD_COLOR_MAGENTA); } } if (fftButtonBar.Touched() && dataOk) { - fftButtonBar.DrawButton(0xFFD000D0); - fftButtonLine.DrawButton(LCD_COLOR_MAGENTA); - lpButton.DrawButton(LCD_COLOR_MAGENTA); + fftButtonBar.Draw(0xFFD000D0); + fftButtonLine.Draw(LCD_COLOR_MAGENTA); + lpButton.Draw(LCD_COLOR_MAGENTA); disp.BarChart(db1, backColor); } if (fftButtonLine.Touched() && dataOk) { - fftButtonBar.DrawButton(LCD_COLOR_MAGENTA); - fftButtonLine.DrawButton(0xFFD000D0); - lpButton.DrawButton(LCD_COLOR_MAGENTA); + fftButtonBar.Draw(LCD_COLOR_MAGENTA); + fftButtonLine.Draw(0xFFD000D0); + lpButton.Draw(LCD_COLOR_MAGENTA); disp.LineChart(db1, backColor); } if (lpButton.Touched() && dataOk) { - fftButtonBar.DrawButton(LCD_COLOR_MAGENTA); - fftButtonLine.DrawButton(LCD_COLOR_MAGENTA); - lpButton.DrawButton(0xFFD000D0); + fftButtonBar.Draw(LCD_COLOR_MAGENTA); + fftButtonLine.Draw(LCD_COLOR_MAGENTA); + lpButton.Draw(0xFFD000D0); disp.LineChart(db2, backColor); } wait(0.1); } } -