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

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);
     }
 }
-