Luke Cartwright / Mbed 2 deprecated ELEC2645_Project_el18loc_nearlythere

Dependencies:   mbed

Revision:
24:c3bb1b0b2207
Parent:
19:08862f49cd9e
Child:
25:f230af268e8b
diff -r 0b03fc875418 -r c3bb1b0b2207 Front/Front.cpp
--- a/Front/Front.cpp	Sat May 23 16:49:53 2020 +0000
+++ b/Front/Front.cpp	Sun May 24 15:20:31 2020 +0000
@@ -4,6 +4,7 @@
 //Objects-----------------------------------------------------------------------
 Sound sound;
 Envelope envelope;
+Filter filter;
 
 //Sprites-----------------------------------------------------------------------
 const int fader[35][5] =   { //Fader Sprite
@@ -70,7 +71,7 @@
 };
 //Gloabal Variables
 volatile int g_isr_flag; //used for sound generation
-volatile extern int silent_flag; //used for note release 
+volatile extern int silent_flag; //used for note release
 
 
 //constructor/destructor
@@ -86,17 +87,14 @@
 {
     //printf("G_ISR_FLAG= %d\n",g_isr_flag); //DEBUG
     frontsetup(lcd, pad, submenu, true);  //Initialises front pannel display
+    initialise(pad,lcd,submenu);
+    frequency=frequency_convert(pad);
     menuflag=1;  //sets up flags
     release_flag=silent_flag=0;
     used=1;  //initialises vairables
     envelope_in=0;
     a=d=s=r=17; //starting adsr values (1->35)
     noteon=false;
-    printsliders(lcd,a,d,s,r,1);  //prints initialsliders
-    out=sound.sound_main(true,submenu,440); //initialises external variables
-    out=envelope.env_in(a,d,s,r,out,true);
-    out=envelope.release(s,r,out,true);
-    pad.reset_buttons();
 #ifdef CSV
     itterator=0; //sets itterator for CSV OUTPUT
 #endif
@@ -107,7 +105,8 @@
 #endif
         if (noteon==true && g_isr_flag == 1) {
             pad.write_u16(out);
-            envelope_in=(sound.sound_main(false,submenu,440)-32767); //value around 0
+            envelope_in=(sound.sound_main(false,submenu,frequency)-32767); //value around 0
+            envelope_in=filter.LPF(envelope_in,false);
             if (release_flag==0) {
                 out=(envelope.env_in(a,d,s,r,envelope_in,false));//value around 32767
                 //out=envelope_in+32767;
@@ -179,6 +178,7 @@
             printf("NOTE_ON\n");
             noteon=true;
             out=envelope.env_in(a,d,s,r,out,true);
+            frequency=frequency_convert(pad);
         }
         if ( pad.B_pressed())  { //NOTE OFF
             //printf("NOTE_OFF (W.release)\n");
@@ -217,6 +217,16 @@
     lcd.refresh();
 }
 
+void Front::initialise(Gamepad &pad, N5110 &lcd, int submenu)
+{
+    out=sound.sound_main(true,submenu,440); //initialises external variables
+    out = filter.LPF(out,true); //initialises LPF Filter
+    out=envelope.env_in(17,17,17,17,out,true);
+    out=envelope.release(17,17,out,true);
+    printsliders(lcd,17,17,17,17,1);  //prints initialsliders
+    pad.reset_buttons();
+}
+
 void Front::printsliders(N5110 &lcd, int a, int d, int s, int r, int used)
 {
     if(used==0) {
@@ -302,6 +312,12 @@
     return(adsr);
 }
 
+int Front::frequency_convert(Gamepad &pad)
+{
+    frequency=(440+(pad.read_pot1()*440));
+    return(frequency);
+}
+
 #ifdef SLOW_TIME
 void Front::print_SLOWTIME_out (uint16_t out, bool noteon, int a, int d, int s, int r, int release_flag, int silent_flag)
 {