Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Diff: Front/Front.cpp
- 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) {