Luke Cartwright / Mbed 2 deprecated ELEC2645_Project_el18loc_nearlythere

Dependencies:   mbed

Revision:
31:cfdb014ff086
Parent:
30:08cc4ec58d07
--- a/Front/Front.cpp	Tue May 26 10:17:47 2020 +0000
+++ b/Front/Front.cpp	Tue May 26 14:21:36 2020 +0000
@@ -169,113 +169,108 @@
         print_SLOWTIME_out(out,noteon,a,d,s,r,release_flag,silent_flag); //debug terminal print function
 #endif
         if (noteon==true && g_isr_flag == 1) { //isr triggered and note on
-            pad.write_u16(out);
+            pad.write_u16(out); //writes Output in uns short format 
             envelope_in=(sound.sound_main(false,submenu,frequency)-32767); //int around 0
             envelope_in=filter.filter_run(envelope_in,filter_type,false);
-            if (release_flag==0) {
+            if (release_flag==0) { //Note still on
                 out=(envelope.env_in(a,d,s,r,envelope_in,false));//Uint around 32767
-            }  else {
-                out=envelope.release(s,r,envelope_in,false);
-                if (silent_flag==1) {
-                    release_flag=0;
+            }  else { //Note off
+                out=envelope.release(s,r,envelope_in,false); //release rubnthrough
+                if (silent_flag==1) { //release transient finished
+                    release_flag=0; //resets variables
                     silent_flag=0;
                     noteon=false;
-                    out=envelope.env_in(a,d,s,r,out,true);
+                    out=envelope.env_in(a,d,s,r,out,true); //initialises
                     out=0;
                 }
             }
-            g_isr_flag=0;
-#ifdef CSV
+            g_isr_flag=0; //resets ISR flag
+#ifdef CSV //generates CSV out
             printf("%d,%d\n",itterator,out);
             itterator++;
 #endif
         }
-        dir=pad.get_direction();
+        dir=pad.get_direction(); //checks joystick
         if (dir!=dir_1) {
             //printf("dir =%d\n",dir); //debug
-            if(dir==3) {
-                used++;
-                if (used>5) {
-                    used=5;
-                }
-            }
-            if (dir==7) {
-                used--;
-                if(used<1) {
-                    used=1;
-                }
+            switch (dir) {
+                case 3:
+                    used=fader_select(used,1); break; //itterates Fader (R)
+                case 7:
+                    used=fader_select(used,-1); break; //itterates fader(L)
+                case 1:
+                    if (used==1) {
+                        a=incrament_adsr(used,a,1); //Attack up
+                    }
+                    if (used==2) {
+                        d=incrament_adsr(used,d,1); //Decay up
+                    }
+                    if (used==3) {
+                        s=incrament_adsr(used,s,1); //Sustain Up
+                    }
+                    if (used==4) {
+                        r=incrament_adsr(used,r,1); //Release Up
+                    }
+                    if (used==5) { //Filter UP
+                        filter_type=incrament_adsr(used,filter_type,-1);
+                        //printf("FILTER_TYPE=%d\n",filter_type);
+                    }
+                    break;
+                case 5:
+                    if (used==1) {
+                        a=incrament_adsr(used,a,-1); //Attack Down
+                    }
+                    if (used==2) {
+                        d=incrament_adsr(used,d,-1); //Decay Down
+                    }
+                    if (used==3) {
+                        s=incrament_adsr(used,s,-1); //Sustain Down
+                    }
+                    if (used==4) {
+                        r=incrament_adsr(used,r,-1); //Release Down
+                    }
+                    if (used==5) { //Filter Down
+                        filter_type=incrament_adsr(used,filter_type,1);
+                        //printf("FILTER_TYPE=%d\n",filter_type);
+                    }
+                    break;
             }
-            if (dir==1) {
-                if (used==1) {
-                    a=incrament_adsr(used,a,1);
-                }
-                if (used==2) {
-                    d=incrament_adsr(used,d,1);
-                }
-                if (used==3) {
-                    s=incrament_adsr(used,s,1);
-                }
-                if (used==4) {
-                    r=incrament_adsr(used,r,1);
-                }
-                if (used==5) {
-                    filter_type=incrament_adsr(used,filter_type,-1);
-                    printf("FILTER_TYPE=%d\n",filter_type);
-                    }
-            }
-
-            if (dir==5) {
-                if (used==1) {
-                    a=incrament_adsr(used,a,-1);
-                }
-                if (used==2) {
-                    d=incrament_adsr(used,d,-1);
-                }
-                if (used==3) {
-                    s=incrament_adsr(used,s,-1);
-                }
-                if (used==4) {
-                    r=incrament_adsr(used,r,-1);
-                }
-                if (used==5) {
-                filter_type=incrament_adsr(used,filter_type,1);
-                printf("FILTER_TYPE=%d\n",filter_type);
-                }
-            }
-            frontsetup(lcd,pad,submenu,filter_type,false);
-            printsliders(lcd,a,d,s,r,used);
-            wait_ms(80);
+            frontsetup(lcd,pad,submenu,filter_type,false); //reprints Front Panel
+            printsliders(lcd,a,d,s,r,used); //Prints Sliders
+            wait_ms(100); //Debounce
         } //END if DIR
         if ( pad.A_pressed())  { //NOTE ON
-            printf("NOTE_ON\n");
+            //printf("NOTE_ON\n");
             noteon=true;
-            out=envelope.env_in(a,d,s,r,out,true);
-            frequency=frequency_convert(pad,oct);
+            out=envelope.env_in(a,d,s,r,out,true); //Initiialises
+            frequency=frequency_convert(pad,oct); //Checks Frequnecy
         }
         if ( pad.B_pressed())  { //NOTE OFF
-            //printf("NOTE_OFF (W.release)\n");
-            release_flag=1;
-            envelope_in=envelope.release(s,r,envelope_in,true);
+            release_flag=1; //Begins release
+            envelope_in=envelope.release(s,r,envelope_in,true); //initialises
             pad.reset_buttons();
         }
-        if ( pad.X_pressed())  {
+        if ( pad.X_pressed())  { //Down Octave
             oct--;
-            if (oct<0) {oct++;}
-            printf("OCTAVE %d\n",oct);
+            if (oct<0) { //Min Value
+                oct++;
+            }
+            //printf("OCTAVE %d\n",oct);
             pad.reset_buttons();
         }
-        if ( pad.Y_pressed())  { 
+        if ( pad.Y_pressed())  { //Octave Up
             oct++;
-            if (oct>5) {oct--;}
-            printf("OCTAVE %d\n",oct);
+            if (oct>5) { //Max Value
+                oct--;
+            }
+            //printf("OCTAVE %d\n",oct);
             pad.reset_buttons();
         }
 
-        if (pad.start_pressed())  { //go back menu
-            // printf("start pressed\n");
-            printf("Waveforms Sub selected\n"); //debug
+        if (pad.start_pressed())  { //Main Menu Select
+            //printf("Main selected\n"); //debug
             noteon=false;
-            menuflag=0; //sets flag
+            menuflag=0; //sets flag to exit
             break;
         }
         dir=dir_1;
@@ -283,24 +278,25 @@
     }
 }
 
+
 //PRIVATE-----------------------------------------------------------------------
 
 void Front::frontsetup(N5110 &lcd, Gamepad &pad, int submenu, int filter_type, bool initial)
 {
-    if (initial==true) {
-        printsliders(lcd,17,17,17,17,1);
-        initialise(pad,lcd,submenu);
+    if (initial==true) { //intial Setup
+        printsliders(lcd,17,17,17,17,1); 
+        initialise(pad,lcd,submenu); //Initialises functions
 
     }
-    lcd.clear();
+    lcd.clear(); //Draws Front Pannel
     lcd.printString("A D S R",3,5);
     printfader(lcd,3,3);
     printfader(lcd,15,3);
     printfader(lcd,27,3);
     printfader(lcd,39,3);
     lcd.drawRect(50,3,30,8,FILL_TRANSPARENT);
-    printwav(lcd,submenu);
-    printfilter(lcd, filter_type);
+    printwav(lcd,submenu); //Prints Waveform
+    printfilter(lcd, filter_type); //Prints Filter Type
     lcd.refresh();
 }
 
@@ -308,8 +304,8 @@
 {
     out=sound.sound_main(true,submenu,440); //initialises external variables
     out = filter.filter_run(out,1,true); //initialises LPF Filter
-    out = filter.filter_run(out,2,true); //initialises LPF Filter
-    out = filter.filter_run(out,3,true); //initialises LPF Filter
+    out = filter.filter_run(out,2,true); //initialises HPF Filter
+    out = filter.filter_run(out,3,true); //initialises BPF 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
@@ -318,31 +314,32 @@
 
 void Front::printsliders(N5110 &lcd, int a, int d, int s, int r, int used)
 {
-    if(used==0) {
+    //printf("USED(SLIDERS)=%d\n",used);
+    if(used==0) { //NONE
         printslider(lcd,3,a,false);
         printslider(lcd,15,d,false);
         printslider(lcd,27,s,false);
         printslider(lcd,39,r,false);
     }
-    if(used==1) {
+    if(used==1) { //ATTACK
         printslider(lcd,3,a,true);
         printslider(lcd,15,d,false);
         printslider(lcd,27,s,false);
         printslider(lcd,39,r,false);
     }
-    if(used==2) {
+    if(used==2) { //DECAY
         printslider(lcd,3,a,false);
         printslider(lcd,15,d,true);
         printslider(lcd,27,s,false);
         printslider(lcd,39,r,false);
     }
-    if(used==3) {
+    if(used==3) { //SUSTAIN
         printslider(lcd,3,a,false);
         printslider(lcd,15,d,false);
         printslider(lcd,27,s,true);
         printslider(lcd,39,r,false);
     }
-    if(used==4) {
+    if(used==4) { //Relase
         printslider(lcd,3,a,false);
         printslider(lcd,15,d,false);
         printslider(lcd,27,s,false);
@@ -378,15 +375,15 @@
 {
     if (submenu==1) {
         // x origin, y origin, rows, cols, sprite
-        lcd.drawSprite(51,4,6,28,(int *)sin_wav);
+        lcd.drawSprite(51,4,6,28,(int *)sin_wav); //sin
     }
     if (submenu==2) {
         // x origin, y origin, rows, cols, sprite
-        lcd.drawSprite(51,4,6,28,(int *)tri_wav);
+        lcd.drawSprite(51,4,6,28,(int *)tri_wav); //tri
     }
     if (submenu==3) {
         // x origin, y origin, rows, cols, sprite
-        lcd.drawSprite(51,4,6,28,(int *)square_wav);
+        lcd.drawSprite(51,4,6,28,(int *)square_wav); //sqr
     }
 }
 
@@ -396,36 +393,30 @@
         lcd.drawLine(51,32,51,12,1); //y axis
         lcd.drawLine(51,32,81,32,1); //x axis
         if (filter_type==1) {
-            lcd.drawSprite(52,13,19,29,(int *)Low_pass);
+            lcd.drawSprite(52,13,19,29,(int *)Low_pass); //LPF
             lcd.printString("L",45,2);
         }
         if (filter_type==2) {
-            lcd.drawSprite(52,13,19,29,(int *)High_pass);
+            lcd.drawSprite(52,13,19,29,(int *)High_pass); //HPF
             lcd.printString("H",45,2);
         }
         if (filter_type==3) {
-            lcd.drawSprite(52,13,19,29,(int *)Band_pass);
+            lcd.drawSprite(52,13,19,29,(int *)Band_pass); //BPF
             lcd.printString("B",45,2);
         }
     }
 }
 
-int Front::parameter_manager(Gamepad &pad, int dir, int a, int d, int s, int r)
-{
-
-    return(used);
-}
-
 int Front::incrament_adsr(int used, int adsr, int ud)
 {
-    if (used<=4) {
-        if (ud==1) {
+    if (used<=4) { //Num of Faders
+        if (ud==1) { //Up
             adsr++;
             if (adsr>35) {
                 adsr--;
             }
         }
-        if (ud==-1) {
+        if (ud==-1) {//Down
             adsr--;
             if (adsr<1) {
                 adsr++;
@@ -433,20 +424,20 @@
         }
     }
     if (used==5) {
-        adsr=incrament_filter(adsr,ud);
+        adsr=incrament_filter(adsr,ud); //Filter Type Change
     }
     return(adsr);
 }
 
 int Front::incrament_filter(int adsr, int ud)
 {
-    if (ud==1) {
+    if (ud==1) { //UP
         adsr++;
-        if (adsr>3) {
+        if (adsr>3) { //Max Filters
             adsr--;
         }
     }
-    if (ud==-1) {
+    if (ud==-1) { //down
         adsr--;
         if (adsr<0) {
             adsr++;
@@ -456,12 +447,30 @@
 }
 
 int Front::frequency_convert(Gamepad &pad,int oct)
-{   
-    frequency=55*(pow(2.0,oct));
-    frequency=(frequency+(pad.read_pot1()*frequency));
+{
+    frequency=55*(pow(2.0,oct)); //Converts to correct Octave Start
+    frequency=(frequency+(pad.read_pot1()*frequency)); //Generates Exact Frequency
     return(frequency);
 }
 
+int Front::fader_select(int used,int lr)
+{
+    if (lr==1) { //Right
+        used++;
+        if (used>5) { //Max
+            used=5;
+        }
+    }
+    if(lr==-1) { ///Left
+        used--;
+        if(used<1) { //Min
+            used=1;
+        }
+    }
+    //printf("INCRAMENT USED= %d\n",used); //debug
+    return(used);
+}
+
 #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)
 {