MIDIInstrumentPAD

Dependencies:   mbed DISCO_F746NG_USBDevice

main.cpp

Committer:
60010649
Date:
2019-05-14
Revision:
0:33a7ad2adf6c

File content as of revision 0:33a7ad2adf6c:

#include "mbed.h"
#include "TS_DISCO_F746NG.h"
#include "LCD_DISCO_F746NG.h"
#include "USBMIDI.h"

#define FastSpeedInterface 0
#define HighSpeedInterface 1
AnalogIn v(A0);
LCD_DISCO_F746NG lcd;
TS_DISCO_F746NG ts;
Serial pc(USBTX, USBRX);
USBMIDI midi(FastSpeedInterface);
int a0=0;


int Y1=60;
int Yline1=131.66;
int Yline2=201.33;
int Ysize=70.66;
int o=0;
int k=12;





int main()
{
     
     top:
     int a,b,c=0;
     TS_StateTypeDef TS_State;
         lcd.SetFont(&Font24);
         lcd.Clear(LCD_COLOR_DARKGREEN); 
         lcd.SetBackColor(LCD_COLOR_DARKGREEN);
         lcd.SetTextColor(LCD_COLOR_LIGHTYELLOW);
         lcd.DisplayStringAt(0, LINE(1), (uint8_t *)"SELECT",CENTER_MODE); 
         
         
         
         lcd.SetTextColor(LCD_COLOR_BLACK); ///Block1
        lcd.FillRect(0,Y1,159,212);
        lcd.SetTextColor(LCD_COLOR_LIGHTYELLOW);
        lcd.SetBackColor(LCD_COLOR_TRANSPARENT);
        lcd.DisplayStringAt(0, LINE(6), (uint8_t *)"  DRUM",LEFT_MODE);
        
         lcd.SetTextColor(LCD_COLOR_WHITE); //////Block2
        lcd.FillRect(160,Y1,159,212);
        lcd.SetBackColor(LCD_COLOR_WHITE);
        lcd.SetTextColor(LCD_COLOR_BLACK);
        lcd.DisplayStringAt(0, LINE(6), (uint8_t *)"GUITAR",CENTER_MODE);
          
          
         lcd.SetTextColor(LCD_COLOR_BLACK); ///Block3
        lcd.FillRect(320,Y1,159,212);
        lcd.SetBackColor(LCD_COLOR_TRANSPARENT);
        lcd.SetTextColor(LCD_COLOR_LIGHTYELLOW);
        lcd.DisplayStringAt(0, LINE(6), (uint8_t *)"PIANO  ",RIGHT_MODE);
         
        wait(1);
    
    while(1) {
       ts.GetState(&TS_State);
       
        if((TS_State.touchDetected))
            {
            if(TS_State.touchX[0] >= 0&&TS_State.touchX[0]<160&&a==0&&b==0&&c==0)
                {
                     
                   
                     lcd.Clear(LCD_COLOR_DARKGREEN);
                    lcd.SetBackColor(LCD_COLOR_DARKGREEN);
                    
                    
       
        lcd.SetBackColor(LCD_COLOR_DARKGREEN);
         lcd.SetTextColor(LCD_COLOR_LIGHTYELLOW);
        lcd.DisplayStringAt(0, LINE(1), (uint8_t *)"DRUM",CENTER_MODE);
                    
                    
                     
            lcd.SetTextColor(LCD_COLOR_WHITE); ///Block1
          lcd.FillRect(0,60,140,Ysize);
            
        lcd.SetTextColor(LCD_COLOR_BLACK);
        lcd.SetBackColor(LCD_COLOR_WHITE);
        lcd.DisplayStringAt(0, LINE(3), (uint8_t *)"  Crash",LEFT_MODE);
        
         lcd.SetTextColor(LCD_COLOR_BLACK); //////Block2
        lcd.FillRect(140,60,140,Ysize);
        
        lcd.SetTextColor(LCD_COLOR_LIGHTYELLOW);
        lcd.SetBackColor(LCD_COLOR_TRANSPARENT);
        lcd.DisplayStringAt(0, LINE(3), (uint8_t *)"Tom1  ",CENTER_MODE);
        
          
         lcd.SetTextColor(LCD_COLOR_WHITE); ///Block3
        lcd.FillRect(280,60,140,Ysize);  
        
        lcd.SetTextColor(LCD_COLOR_BLACK);
        lcd.SetBackColor(LCD_COLOR_WHITE);
        lcd.DisplayStringAt(0, LINE(3), (uint8_t *)"Tom2     ",RIGHT_MODE);
        
           lcd.SetTextColor(LCD_COLOR_BLACK); ///Block4
        lcd.FillRect(0,Yline1,140,Ysize);  
        
        lcd.SetTextColor(LCD_COLOR_LIGHTYELLOW);
        lcd.SetBackColor(LCD_COLOR_BLACK);
        lcd.DisplayStringAt(0, LINE(6), (uint8_t *)" HHOpen",LEFT_MODE);
        
         lcd.SetTextColor(LCD_COLOR_WHITE); ///Block5
        lcd.FillRect(140,Yline1,140,Ysize);  
        
        
        lcd.SetTextColor(LCD_COLOR_BLACK);
        lcd.SetBackColor(LCD_COLOR_WHITE);
        lcd.DisplayStringAt(0, LINE(6), (uint8_t *)"Snare  ",CENTER_MODE);
        
       
         lcd.SetTextColor(LCD_COLOR_BLACK); ///Block6
        lcd.FillRect(280,Yline1,140,Ysize);  
        
        
        
        
        lcd.SetTextColor(LCD_COLOR_LIGHTYELLOW);
        lcd.SetBackColor(LCD_COLOR_BLACK);
        lcd.DisplayStringAt(0, LINE(6), (uint8_t *)"Tom3     ",RIGHT_MODE);
        
         lcd.SetTextColor(LCD_COLOR_WHITE); ///Block7
        lcd.FillRect(0,Yline2,140,Ysize);  
        
        
        lcd.SetTextColor(LCD_COLOR_BLACK);
        lcd.SetBackColor(LCD_COLOR_WHITE);
        lcd.DisplayStringAt(0, LINE(9), (uint8_t *)" HHClose",LEFT_MODE);
        
         lcd.SetTextColor(LCD_COLOR_BLACK); ///Block8
        lcd.FillRect(140,Yline2,140,Ysize);  
        
        
        lcd.SetTextColor(LCD_COLOR_LIGHTYELLOW);
        lcd.SetBackColor(LCD_COLOR_BLACK);
        lcd.DisplayStringAt(0, LINE(9), (uint8_t *)"Kick  ",CENTER_MODE);
        
         lcd.SetTextColor(LCD_COLOR_WHITE); ///Block9
        lcd.FillRect(280,Yline2,140,Ysize);  
        
        
        lcd.SetTextColor(LCD_COLOR_BLACK);
        lcd.SetBackColor(LCD_COLOR_WHITE);
        lcd.DisplayStringAt(0, LINE(9), (uint8_t *)"Clap     ",RIGHT_MODE);
        
        
          lcd.SetTextColor(LCD_COLOR_BROWN); ///BlockLeftBackToMain
        lcd.FillRect(420,Y1,60,212); 
        lcd.SetBackColor(LCD_COLOR_BROWN);
         lcd.SetTextColor(LCD_COLOR_LIGHTYELLOW);
        lcd.DisplayStringAt(0, LINE(3), (uint8_t *)"B ",RIGHT_MODE);
        lcd.DisplayStringAt(0, LINE(5), (uint8_t *)"A ",RIGHT_MODE);
        lcd.DisplayStringAt(0, LINE(7), (uint8_t *)"C ",RIGHT_MODE);
        lcd.DisplayStringAt(0, LINE(9), (uint8_t *)"K ",RIGHT_MODE);
                     
                
        
                a=1;  
                }
                else if(a==1&&b==0&&c==0&&TS_State.touchX[0] >= 0&&TS_State.touchX[0]<140&&TS_State.touchY[0] >= 60&&TS_State.touchY[0]<Yline1)
                 {
                     pc.printf("a");
                     midi.write(MIDIMessage::NoteOn(48));
                     wait_ms(50);
                    midi.write(MIDIMessage::NoteOff(48));
                     
                     
                }
                else if(a==1&&b==0&&c==0&&TS_State.touchX[0] >= 140&&TS_State.touchX[0]<280&&TS_State.touchY[0] >= Y1&&TS_State.touchY[0]<Yline1)
                 {
                     pc.printf("b");
                      midi.write(MIDIMessage::NoteOn(49));
                      wait_ms(50);
                    midi.write(MIDIMessage::NoteOff(49));
                     
                }
                else if(a==1&&b==0&&c==0&&TS_State.touchX[0] >= 280&&TS_State.touchX[0]<420&&TS_State.touchY[0] >= Y1&&TS_State.touchY[0]<Yline1)
                 {
                     pc.printf("c");
                         midi.write(MIDIMessage::NoteOn(50));
                      wait_ms(50);
                    midi.write(MIDIMessage::NoteOff(50));
                }
                
                else if(a==1&&b==0&&c==0&&TS_State.touchX[0] >= 0&&TS_State.touchX[0]<140&&TS_State.touchY[0] >= Yline1&&TS_State.touchY[0]<Yline2)
                 {
                     pc.printf("d");
                         midi.write(MIDIMessage::NoteOn(51));
                     wait_ms(50);
                    midi.write(MIDIMessage::NoteOff(51));
                }
                else if(a==1&&b==0&&c==0&&TS_State.touchX[0] >= 140&&TS_State.touchX[0]<280&&TS_State.touchY[0] >= Yline1&&TS_State.touchY[0]<Yline2)
                 {
                     pc.printf("e");
                         midi.write(MIDIMessage::NoteOn(52));
                 wait_ms(50);
                    midi.write(MIDIMessage::NoteOff(52));
                }
                else if(a==1&&b==0&&c==0&&TS_State.touchX[0] >= 280&&TS_State.touchX[0]<420&&TS_State.touchY[0] >= Yline1&&TS_State.touchY[0]<Yline2)
                 {
                     pc.printf("f");
                         midi.write(MIDIMessage::NoteOn(53));
                    wait_ms(50);
                    midi.write(MIDIMessage::NoteOff(53));
                }
                
                else if(a==1&&b==0&&c==0&&TS_State.touchX[0] >= 0&&TS_State.touchX[0]<140&&TS_State.touchY[0] >= Yline2)
                 {
                     midi.write(MIDIMessage::NoteOn(54));
                     wait_ms(50);
                    midi.write(MIDIMessage::NoteOff(54));
                
                }
                else if(a==1&&b==0&&c==0&&TS_State.touchX[0] >= 140&&TS_State.touchX[0]<280&&TS_State.touchY[0] >= Yline2)
                 {
                     pc.printf("h");
                       midi.write(MIDIMessage::NoteOn(57));
                     wait_ms(50);
                    midi.write(MIDIMessage::NoteOff(57));
                              
                        
                }
                else if(a==1&&b==0&&c==0&&TS_State.touchX[0] >= 280&&TS_State.touchX[0]<420&&TS_State.touchY[0] >= Yline2)
                 {
                     pc.printf("i");
                       midi.write(MIDIMessage::NoteOn(56));
                      wait_ms(50);
                    midi.write(MIDIMessage::NoteOff(56));
                }
                 else if(TS_State.touchX[0] >= 420&&TS_State.touchY[0] >60&&a==1&&b==0&&c==0)
                 {
                     a = 0;
                     pc.printf("bye");
                     goto top;
                }
                
        else if(TS_State.touchX[0] >= 160&&TS_State.touchX[0]<320&&a==0&&b==0&&c==0)
                {
                         lcd.Clear(LCD_COLOR_DARKGREEN);
                    lcd.SetBackColor(LCD_COLOR_DARKGREEN);
                    
          lcd.SetBackColor(LCD_COLOR_DARKGREEN);
         lcd.SetTextColor(LCD_COLOR_LIGHTYELLOW);
        
        lcd.DisplayStringAt(0, LINE(1), (uint8_t *)"Oc   ",RIGHT_MODE);
                    
            lcd.SetTextColor(LCD_COLOR_BLUE); //////-
        lcd.FillRect(320,0,40,60);
        
             lcd.SetTextColor(LCD_COLOR_WHITE); //////-
        lcd.FillRect(320,20,40,10);
        
          lcd.SetTextColor(LCD_COLOR_BLUE); //////+
        lcd.FillRect(440,0,40,60);
        
           lcd.SetTextColor(LCD_COLOR_WHITE); //////-
      lcd.FillRect(440,20,40,20);
        lcd.FillRect(455,0,10,60);
        
                    
        lcd.SetBackColor(LCD_COLOR_DARKGREEN);
         lcd.SetTextColor(LCD_COLOR_LIGHTYELLOW);
        lcd.DisplayStringAt(0, LINE(1), (uint8_t *)"GUITAR",CENTER_MODE);
                  
        lcd.SetTextColor(LCD_COLOR_BLACK); //////Block2
        lcd.FillRect(105,60,105,70.667);
        lcd.SetBackColor(LCD_COLOR_BLACK);
        lcd.SetTextColor(LCD_COLOR_LIGHTYELLOW);
        lcd.DisplayStringAt(0, LINE(3), (uint8_t *)"C#        ",CENTER_MODE);
        
        lcd.SetTextColor(LCD_COLOR_WHITE); ///Block6
        lcd.FillRect(105,130.66,105,70.667);
        lcd.SetBackColor(LCD_COLOR_WHITE);
        lcd.SetTextColor(LCD_COLOR_BLACK);
        lcd.DisplayStringAt(0, LINE(6), (uint8_t *)"F         ",CENTER_MODE); 
        
        lcd.SetTextColor(LCD_COLOR_BLACK); ///Block10
        lcd.FillRect(105,201.32,105,70.667);  
        lcd.SetBackColor(LCD_COLOR_BLACK);
        lcd.SetTextColor(LCD_COLOR_LIGHTYELLOW);
        lcd.DisplayStringAt(0, LINE(9), (uint8_t *)"A         ",CENTER_MODE);
         
         lcd.SetTextColor(LCD_COLOR_WHITE); ///Block3
        lcd.FillRect(210,60,105,70.667); 
        lcd.SetTextColor(LCD_COLOR_BLACK);
        lcd.SetBackColor(LCD_COLOR_WHITE);
        lcd.DisplayStringAt(0, LINE(3), (uint8_t *)" D",CENTER_MODE);
         
        lcd.SetTextColor(LCD_COLOR_BLACK); ///Block7
        lcd.FillRect(210,130.66,105,70.667);  
        lcd.SetTextColor(LCD_COLOR_LIGHTYELLOW);
        lcd.SetBackColor(LCD_COLOR_BLACK);
        lcd.DisplayStringAt(0, LINE(6), (uint8_t *)" F#",CENTER_MODE);
        
        lcd.SetTextColor(LCD_COLOR_WHITE); ///Block11
        lcd.FillRect(210,201.32,105,70.667); 
        lcd.SetBackColor(LCD_COLOR_WHITE);
        lcd.SetTextColor(LCD_COLOR_BLACK);
        lcd.DisplayStringAt(0, LINE(9), (uint8_t *)" Bb",CENTER_MODE);
        
           lcd.SetTextColor(LCD_COLOR_BLACK); ///Block4
        lcd.FillRect(315,60,105,70.667); 
        lcd.SetBackColor(LCD_COLOR_BLACK);
        lcd.SetTextColor(LCD_COLOR_LIGHTYELLOW);
        lcd.DisplayStringAt(0, LINE(3), (uint8_t *)"D#     ",RIGHT_MODE);
        
        lcd.SetTextColor(LCD_COLOR_WHITE); ///Block8
        lcd.FillRect(315,130.66,105,70.667);
        lcd.SetBackColor(LCD_COLOR_WHITE);
        lcd.SetTextColor(LCD_COLOR_BLACK);
        lcd.DisplayStringAt(0, LINE(6), (uint8_t *)"G      ",RIGHT_MODE); 
        
            lcd.SetTextColor(LCD_COLOR_BLACK); ///Block12
        lcd.FillRect(315,201.32,105,70.66);  
        lcd.SetBackColor(LCD_COLOR_BLACK);
        lcd.SetTextColor(LCD_COLOR_LIGHTYELLOW);
        lcd.DisplayStringAt(0, LINE(9), (uint8_t *)"B      ",RIGHT_MODE);
        
          lcd.SetTextColor(LCD_COLOR_WHITE); ///Block1
        lcd.FillRect(0,60,105,70.667);
        lcd.SetBackColor(LCD_COLOR_WHITE);
        lcd.SetTextColor(LCD_COLOR_BLACK);
        lcd.DisplayStringAt(0, LINE(3), (uint8_t *)"   C",LEFT_MODE);
        
         lcd.SetTextColor(LCD_COLOR_BLACK); ///Block5
        lcd.FillRect(0,130.66,105,70.667); 
        lcd.SetBackColor(LCD_COLOR_BLACK);
        lcd.SetTextColor(LCD_COLOR_LIGHTYELLOW);
        lcd.DisplayStringAt(0, LINE(6), (uint8_t *)"   E",LEFT_MODE); 
        
        lcd.SetTextColor(LCD_COLOR_WHITE); ///Block9
        lcd.FillRect(0,201.32,105,70.667);  
        lcd.SetBackColor(LCD_COLOR_WHITE);
        lcd.SetTextColor(LCD_COLOR_BLACK);
        lcd.DisplayStringAt(0, LINE(9), (uint8_t *)"  G#",LEFT_MODE);
         
        
        lcd.SetTextColor(LCD_COLOR_BROWN); ///BlockLeftBackToMain
        lcd.FillRect(420,Y1,60,212); 
        lcd.SetBackColor(LCD_COLOR_BROWN);
         lcd.SetTextColor(LCD_COLOR_LIGHTYELLOW);
        lcd.DisplayStringAt(0, LINE(3), (uint8_t *)"B ",RIGHT_MODE);
        lcd.DisplayStringAt(0, LINE(5), (uint8_t *)"A ",RIGHT_MODE);
        lcd.DisplayStringAt(0, LINE(7), (uint8_t *)"C ",RIGHT_MODE);
        lcd.DisplayStringAt(0, LINE(9), (uint8_t *)"K ",RIGHT_MODE);
        
                b=1;  
                
                   midi.write(MIDIMessage::NoteOn(100));
                     wait_ms(50);
                    midi.write(MIDIMessage::NoteOff(100));
                 
                }
                 else if(a==0&&b==1&&c==0&&TS_State.touchX[0] >= 440&&TS_State.touchX[0]<480&&TS_State.touchY[0] >= 0&&TS_State.touchY[0] < 60)
                 {
                     o=o+1;
                }
                else if(a==0&&b==1&&c==0&&TS_State.touchX[0] >= 320&&TS_State.touchX[0]<360&&TS_State.touchY[0] >= 0&&TS_State.touchY[0] < 60)
                 {
                     o=o-1;
                }
                else if(a==0&&b==1&&c==0&&TS_State.touchX[0] >= 0&&TS_State.touchX[0]<105&&TS_State.touchY[0] >= 60&&TS_State.touchY[0] < 130.667)
                 {
                     pc.printf("1");
                     midi.write(MIDIMessage::NoteOn(60+(k*o)));
                     wait_ms(150);
                    midi.write(MIDIMessage::NoteOff(60+(k*o)));
                }
          else if(a==0&&b==1&&c==0&&TS_State.touchX[0] >= 105&&TS_State.touchX[0]<210&&TS_State.touchY[0] >= 60&&TS_State.touchY[0] < 130.667)
                 {
                     pc.printf("2");
                      midi.write(MIDIMessage::NoteOn(61+(k*o)));
                     wait_ms(150);
                    midi.write(MIDIMessage::NoteOff(61+(k*o)));
                }
          else if(a==0&&b==1&&c==0&&TS_State.touchX[0] >= 210&&TS_State.touchX[0]<315&&TS_State.touchY[0] >= 60&&TS_State.touchY[0] < 130.667)
                 {
                     pc.printf("3");
                        midi.write(MIDIMessage::NoteOn(62+(k*o)));
                     wait_ms(150);
                    midi.write(MIDIMessage::NoteOff(62+(k*o)));
                }
            else if(a==0&&b==1&&c==0&&TS_State.touchX[0] >= 315&&TS_State.touchX[0]<420&&TS_State.touchY[0] >= 60&&TS_State.touchY[0] < 130.667)
                 {
                     pc.printf("4");
                        midi.write(MIDIMessage::NoteOn(63+(k*o)));
                     wait_ms(150);
                    midi.write(MIDIMessage::NoteOff(63+(k*o)));
                }
                 else if(a==0&&b==1&&c==0&&TS_State.touchX[0] >= 0&&TS_State.touchX[0]<105&&TS_State.touchY[0] >= 130.667 &&TS_State.touchY[0]<201.33)
                 {
                     pc.printf("5");
                        midi.write(MIDIMessage::NoteOn(64+(k*o)));
                     wait_ms(150);
                    midi.write(MIDIMessage::NoteOff(64+(k*o)));
                }
          else if(a==0&&b==1&&c==0&&TS_State.touchX[0] >= 105&&TS_State.touchX[0]<210&&TS_State.touchY[0] >= 130.66 &&TS_State.touchY[0]<201.34)
                 {
                     pc.printf("6");
                        midi.write(MIDIMessage::NoteOn(65+(k*o)));
                     wait_ms(150);
                    midi.write(MIDIMessage::NoteOff(65+(k*o)));
                }
          else if(a==0&&b==1&&c==0&&TS_State.touchX[0] >= 210&&TS_State.touchX[0]<315&&TS_State.touchY[0] >= 130.667 &&TS_State.touchY[0]<201.34)
                 {
                     pc.printf("7");
                        midi.write(MIDIMessage::NoteOn(66+(k*o)));
                     wait_ms(150);
                    midi.write(MIDIMessage::NoteOff(66+(k*o)));
                }
            else if(a==0&&b==1&&c==0&&TS_State.touchX[0] >= 315&&TS_State.touchX[0]<420&&TS_State.touchY[0] >= 130.667 &&TS_State.touchY[0]<201.34)
                 {
                     pc.printf("8");
                        midi.write(MIDIMessage::NoteOn(67+(k*o)));
                     wait_ms(150);
                    midi.write(MIDIMessage::NoteOff(67+(k*o)));
                }
                    else if(a==0&&b==1&&c==0&&TS_State.touchX[0] >= 0&&TS_State.touchX[0]<105&&TS_State.touchY[0] >=201.34)
                 {
                     pc.printf("9");
                        midi.write(MIDIMessage::NoteOn(68+(k*o)));
                     wait_ms(150);
                    midi.write(MIDIMessage::NoteOff(68+(k*o)));
                }
          else if(a==0&&b==1&&c==0&&TS_State.touchX[0] >= 105&&TS_State.touchX[0]<210&&TS_State.touchY[0] >=201.34)
                 {
                     pc.printf("10");
                        midi.write(MIDIMessage::NoteOn(69+(k*o)));
                     wait_ms(150);
                    midi.write(MIDIMessage::NoteOff(69+(k*o)));
                }
          else if(a==0&&b==1&&c==0&&TS_State.touchX[0] >= 210&&TS_State.touchX[0]<315&&TS_State.touchY[0] >=201.34)
                 {
                     pc.printf("11");
                        midi.write(MIDIMessage::NoteOn(70+(k*o)));
                     wait_ms(150);
                    midi.write(MIDIMessage::NoteOff(70+(k*o)));
                }
            else if(a==0&&b==1&&c==0&&TS_State.touchX[0] >= 315&&TS_State.touchX[0]<420&&TS_State.touchY[0] >=201.34)
                 {
                     pc.printf("12");
                        midi.write(MIDIMessage::NoteOn(71+(k*o)));
                     wait_ms(150);
                    midi.write(MIDIMessage::NoteOff(71+(k*o)));
                }
                
                
                  else if(TS_State.touchX[0] >= 420&&TS_State.touchY[0] >=60&&a==0&&b==1&&c==0)
                 {
                     b = 0;
                     pc.printf("bye2");
                      midi.write(MIDIMessage::NoteOn(101));
                     wait_ms(50);
                    midi.write(MIDIMessage::NoteOff(101));
                     goto top;
                    
                }
                        else if(TS_State.touchX[0] >= 320&&a==0&&b==0&&c==0)
                {
                  lcd.Clear(LCD_COLOR_DARKGREEN);
                    lcd.SetBackColor(LCD_COLOR_DARKGREEN);
                    
          lcd.SetBackColor(LCD_COLOR_DARKGREEN);
         lcd.SetTextColor(LCD_COLOR_LIGHTYELLOW);
        
        lcd.DisplayStringAt(0, LINE(1), (uint8_t *)"Oc   ",RIGHT_MODE);
                    lcd.SetTextColor(LCD_COLOR_BLUE); //////-
        lcd.FillRect(320,0,40,60);
        
             lcd.SetTextColor(LCD_COLOR_WHITE); //////-
        lcd.FillRect(320,20,40,10);
        
          lcd.SetTextColor(LCD_COLOR_BLUE); //////+
        lcd.FillRect(440,0,40,60);
        
           lcd.SetTextColor(LCD_COLOR_WHITE); //////-
      lcd.FillRect(440,20,40,20);
        lcd.FillRect(455,0,10,60);
                    
        lcd.SetBackColor(LCD_COLOR_DARKGREEN);
         lcd.SetTextColor(LCD_COLOR_LIGHTYELLOW);
        lcd.DisplayStringAt(0, LINE(1), (uint8_t *)"PIANO",CENTER_MODE);
          
         lcd.SetTextColor(LCD_COLOR_BLACK); //////Block2
        lcd.FillRect(105,60,105,70.667);
        lcd.SetBackColor(LCD_COLOR_BLACK);
        lcd.SetTextColor(LCD_COLOR_LIGHTYELLOW);
        lcd.DisplayStringAt(0, LINE(3), (uint8_t *)"C#        ",CENTER_MODE);
        
        lcd.SetTextColor(LCD_COLOR_WHITE); ///Block6
        lcd.FillRect(105,130.66,105,70.667);
        lcd.SetBackColor(LCD_COLOR_WHITE);
        lcd.SetTextColor(LCD_COLOR_BLACK);
        lcd.DisplayStringAt(0, LINE(6), (uint8_t *)"F         ",CENTER_MODE); 
        
        lcd.SetTextColor(LCD_COLOR_BLACK); ///Block10
        lcd.FillRect(105,201.32,105,70.667);  
        lcd.SetBackColor(LCD_COLOR_BLACK);
        lcd.SetTextColor(LCD_COLOR_LIGHTYELLOW);
        lcd.DisplayStringAt(0, LINE(9), (uint8_t *)"A         ",CENTER_MODE);
         
         lcd.SetTextColor(LCD_COLOR_WHITE); ///Block3
        lcd.FillRect(210,60,105,70.667); 
        lcd.SetTextColor(LCD_COLOR_BLACK);
        lcd.SetBackColor(LCD_COLOR_WHITE);
        lcd.DisplayStringAt(0, LINE(3), (uint8_t *)" D",CENTER_MODE);
         
        lcd.SetTextColor(LCD_COLOR_BLACK); ///Block7
        lcd.FillRect(210,130.66,105,70.667);  
        lcd.SetTextColor(LCD_COLOR_LIGHTYELLOW);
        lcd.SetBackColor(LCD_COLOR_BLACK);
        lcd.DisplayStringAt(0, LINE(6), (uint8_t *)" F#",CENTER_MODE);
        
        lcd.SetTextColor(LCD_COLOR_WHITE); ///Block11
        lcd.FillRect(210,201.32,105,70.667); 
        lcd.SetBackColor(LCD_COLOR_WHITE);
        lcd.SetTextColor(LCD_COLOR_BLACK);
        lcd.DisplayStringAt(0, LINE(9), (uint8_t *)" Bb",CENTER_MODE);
        
           lcd.SetTextColor(LCD_COLOR_BLACK); ///Block4
        lcd.FillRect(315,60,105,70.667); 
        lcd.SetBackColor(LCD_COLOR_BLACK);
        lcd.SetTextColor(LCD_COLOR_LIGHTYELLOW);
        lcd.DisplayStringAt(0, LINE(3), (uint8_t *)"D#     ",RIGHT_MODE);
        
        lcd.SetTextColor(LCD_COLOR_WHITE); ///Block8
        lcd.FillRect(315,130.66,105,70.667);
        lcd.SetBackColor(LCD_COLOR_WHITE);
        lcd.SetTextColor(LCD_COLOR_BLACK);
        lcd.DisplayStringAt(0, LINE(6), (uint8_t *)"G      ",RIGHT_MODE); 
        
            lcd.SetTextColor(LCD_COLOR_BLACK); ///Block12
        lcd.FillRect(315,201.32,105,70.66);  
        lcd.SetBackColor(LCD_COLOR_BLACK);
        lcd.SetTextColor(LCD_COLOR_LIGHTYELLOW);
        lcd.DisplayStringAt(0, LINE(9), (uint8_t *)"B      ",RIGHT_MODE);
        
          lcd.SetTextColor(LCD_COLOR_WHITE); ///Block1
        lcd.FillRect(0,60,105,70.667);
        lcd.SetBackColor(LCD_COLOR_WHITE);
        lcd.SetTextColor(LCD_COLOR_BLACK);
        lcd.DisplayStringAt(0, LINE(3), (uint8_t *)"   C",LEFT_MODE);
        
         lcd.SetTextColor(LCD_COLOR_BLACK); ///Block5
        lcd.FillRect(0,130.66,105,70.667); 
        lcd.SetBackColor(LCD_COLOR_BLACK);
        lcd.SetTextColor(LCD_COLOR_LIGHTYELLOW);
        lcd.DisplayStringAt(0, LINE(6), (uint8_t *)"   E",LEFT_MODE); 
        
        lcd.SetTextColor(LCD_COLOR_WHITE); ///Block9
        lcd.FillRect(0,201.32,105,70.667);  
        lcd.SetBackColor(LCD_COLOR_WHITE);
        lcd.SetTextColor(LCD_COLOR_BLACK);
        lcd.DisplayStringAt(0, LINE(9), (uint8_t *)"  G#",LEFT_MODE);
        
        lcd.SetTextColor(LCD_COLOR_BROWN); ///BlockLeftBackToMain
        lcd.FillRect(420,Y1,60,212); 
        lcd.SetBackColor(LCD_COLOR_BROWN);
         lcd.SetTextColor(LCD_COLOR_LIGHTYELLOW);
        lcd.DisplayStringAt(0, LINE(3), (uint8_t *)"B ",RIGHT_MODE);
        lcd.DisplayStringAt(0, LINE(5), (uint8_t *)"A ",RIGHT_MODE);
        lcd.DisplayStringAt(0, LINE(7), (uint8_t *)"C ",RIGHT_MODE);
        lcd.DisplayStringAt(0, LINE(9), (uint8_t *)"K ",RIGHT_MODE);
        
        
                c=1;  
                  midi.write(MIDIMessage::NoteOn(102));
                     wait_ms(50);
                    midi.write(MIDIMessage::NoteOff(102));
            
                }
        else if(a==0&&b==0&&c==1&&TS_State.touchX[0] >= 440&&TS_State.touchX[0]<480&&TS_State.touchY[0] >= 0&&TS_State.touchY[0] < 60)
                 {
                     o=o+1;
                }
                else if(a==0&&b==0&&c==1&&TS_State.touchX[0] >= 320&&TS_State.touchX[0]<360&&TS_State.touchY[0] >= 0&&TS_State.touchY[0] < 60)
                 {
                     o=o-1;
                }
         else if(a==0&&b==0&&c==1&&TS_State.touchX[0] >= 0&&TS_State.touchX[0]<105&&TS_State.touchY[0] >= 60&&TS_State.touchY[0] < 130.667)
                 {
                     pc.printf("0");
                     midi.write(MIDIMessage::NoteOn(60+(k*o)));
                     wait_ms(150);
                    midi.write(MIDIMessage::NoteOff(60+(k*o)));
                }
          else if(a==0&&b==0&&c==1&&TS_State.touchX[0] >= 105&&TS_State.touchX[0]<210&&TS_State.touchY[0] >= 60&&TS_State.touchY[0] < 130.667)
                 {
                     pc.printf("k");
                     midi.write(MIDIMessage::NoteOn(61+(k*o)));
                     wait_ms(150);
                    midi.write(MIDIMessage::NoteOff(61+(k*o)));
                }
          else if(a==0&&b==0&&c==1&&TS_State.touchX[0] >= 210&&TS_State.touchX[0]<315&&TS_State.touchY[0] >= 60&&TS_State.touchY[0] < 130.667)
                 {
                     pc.printf("d");
                     midi.write(MIDIMessage::NoteOn(62+(k*o)));
                     wait_ms(150);
                    midi.write(MIDIMessage::NoteOff(62+(k*o)));
                }
            else if(a==0&&b==0&&c==1&&TS_State.touchX[0] >= 315&&TS_State.touchX[0]<420&&TS_State.touchY[0] >= 60&&TS_State.touchY[0] < 130.667)
                 {
                     pc.printf("n");
                     midi.write(MIDIMessage::NoteOn(63+(k*o)));
                     wait_ms(150);
                    midi.write(MIDIMessage::NoteOff(63+(k*o)));
                }
            else if(a==0&&b==0&&c==1&&TS_State.touchX[0] >= 0&&TS_State.touchX[0]<105&&TS_State.touchY[0] >= 130.667 &&TS_State.touchY[0]<201.34)
                 {
                     pc.printf("z");
                     midi.write(MIDIMessage::NoteOn(64+(k*o)));
                     wait_ms(150);
                    midi.write(MIDIMessage::NoteOff(64+(k*o)));
                }
          else if(a==0&&b==0&&c==1&&TS_State.touchX[0] >= 105&&TS_State.touchX[0]<210&&TS_State.touchY[0] >= 130.667 &&TS_State.touchY[0]<201.34)
                 {
                     pc.printf("x");
                     midi.write(MIDIMessage::NoteOn(65+(k*o)));
                     wait_ms(150);
                    midi.write(MIDIMessage::NoteOff(65+(k*o)));
                }
          else if(a==0&&b==0&&c==1&&TS_State.touchX[0] >= 210&&TS_State.touchX[0]<315&&TS_State.touchY[0] >= 130.667 &&TS_State.touchY[0]<201.34)
                 {
                     pc.printf("y");
                     midi.write(MIDIMessage::NoteOn(66+(k*o)));
                     wait_ms(150);
                    midi.write(MIDIMessage::NoteOff(66+(k*o)));
                }
            else if(a==0&&b==0&&c==1&&TS_State.touchX[0] >= 315&&TS_State.touchX[0]<420&&TS_State.touchY[0] >= 130.667 &&TS_State.touchY[0]<201.34)
                 {
                     pc.printf("s");
                     midi.write(MIDIMessage::NoteOn(67+(k*o)));
                     wait_ms(150);
                    midi.write(MIDIMessage::NoteOff(67+(k*o)));
                }
            else if(a==0&&b==0&&c==1&&TS_State.touchX[0] >= 0&&TS_State.touchX[0]<105&&TS_State.touchY[0] >=201.34)
                 {
                     pc.printf("U");
                     midi.write(MIDIMessage::NoteOn(68+(k*o)));
                     wait_ms(150);
                    midi.write(MIDIMessage::NoteOff(68+(k*o)));
                }
          else if(a==0&&b==0&&c==1&&TS_State.touchX[0] >= 105&&TS_State.touchX[0]<210&&TS_State.touchY[0] >=201.34)
                 {
                     pc.printf("N0");
                     midi.write(MIDIMessage::NoteOn(69+(k*o)));
                     wait_ms(150);
                    midi.write(MIDIMessage::NoteOff(69+(k*o)));
                }
          else if(a==0&&b==0&&c==1&&TS_State.touchX[0] >= 210&&TS_State.touchX[0]<315&&TS_State.touchY[0] >=201.34)
                 {
                     pc.printf("N1");
                     midi.write(MIDIMessage::NoteOn(70+(k*o)));
                     wait_ms(150);
                    midi.write(MIDIMessage::NoteOff(70+(k*o)));
                }
            else if(a==0&&b==0&&c==1&&TS_State.touchX[0] >= 315&&TS_State.touchX[0]<420&&TS_State.touchY[0] >=201.34)
                 {
                     pc.printf("N2");
                     midi.write(MIDIMessage::NoteOn(71+(k*o)));
                     wait_ms(150);
                    midi.write(MIDIMessage::NoteOff(71+(k*o)));
                }
                
                
                  else if(TS_State.touchX[0] >= 420&&TS_State.touchY[0] >=60&&a==0&&b==0&&c==1)
                 {
                     c = 0;
                     pc.printf("bye3");
                     
                     midi.write(MIDIMessage::NoteOn(101));
                     wait_ms(50);
                    midi.write(MIDIMessage::NoteOff(101));
                    
                     goto top;
                }
            
            }
          a0=v.read()*127;
        midi.write(MIDIMessage::ControlChange(1,a0));
    
            
                
            
        wait_ms(50);
    
     }
}