keypad piano project

Dependencies:   4DGL-uLCD-SE SDFileSystem Speaker mbed wave_player

Fork of Beat_Demo_full_full by James Hawkins

Revision:
1:90c01826cdb8
Parent:
0:81b352a233ca
--- a/main.cpp	Wed Oct 22 01:17:25 2014 +0000
+++ b/main.cpp	Tue Dec 08 00:45:23 2015 +0000
@@ -4,270 +4,612 @@
 #include "Speaker.h"
 #include "SDFileSystem.h"
 #include "wave_player.h"
+#include "wavfile.c"
+#include "wavfile.h"
 
-DigitalOut led1(LED1);
-DigitalOut led2(LED2);
-DigitalOut led3(LED3);
-DigitalOut led4(LED4);
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "wave_player.h"
 
 SDFileSystem sd(p5, p6, p7, p8,"sd"); //SD card
 
 uLCD_4DGL uLCD(p13,p14,p11);
 
-AnalogOut DACout(p18);
-wave_player waver(&DACout);
-
-
 // Create the interrupt receiver object on pin 26
-InterruptIn interrupt(p26);
-InterruptIn pardon(p25);
+InterruptIn interrupt1(p26);
+InterruptIn interrupt2(p25);
 // Setup the i2c bus on pins 9 and 10
-I2C i2c(p9, p10);
+I2C i2c1(p9, p10);
 I2C i2c2(p28, p27);
 // Setup the Mpr121:
 // constructor(i2c object, i2c address of the mpr121)
-Mpr121 mpr121(&i2c, Mpr121::ADD_VSS);
-Mpr121 pad(&i2c2, Mpr121::ADD_VSS);
+Mpr121 tones1pad(&i2c1, Mpr121::ADD_VSS);
+Mpr121 tones2pad(&i2c2, Mpr121::ADD_VSS);
 
-//Speaker mySpeaker(p21);
+Speaker mySpeaker(p21);
+InterruptIn pb1(p12);
+InterruptIn pb2(p29);
+
+AnalogOut DACout(p18);
+wave_player waver(&DACout);
 
-int key_code;
-int Past_code;
-int Past_code2;
-bool PlayPtr;
+int key_code [2] = {88,88};
+int touches;
+int music [1000] = { };
+int music2 [1000] = { };
+
+const int NUM_SAMPLES = (WAVFILE_SAMPLES_PER_SECOND*0.2);
+int flagPb;
+bool flagPb2;
+bool flagInterrupt;
  
 // Key hit/release interrupt routine for 1st touchpad
-void fallInterrupt() {
-  key_code=77;
-  Past_code=77;
-  int value=mpr121.read(0x00);
-  value +=mpr121.read(0x01)<<8;
+void fallInterrupt1()
+{
+  key_code[0]=88;
+  key_code[1]=88;
+  flagInterrupt = true;
   
+  int value=tones1pad.read(0x00);
+  value +=tones1pad.read(0x01)<<8;  
   
-  // puts key number out to LEDs for demo
+  int k = 0;  
   for(int i=0; i<12; i++) 
-  {
-    
+  {    
     if(((value>>i)&0x01) == 1)
     {
-        key_code = i;
-    }
-    
+        key_code[k] = i;
+        if (k < 1){
+            k=k+1;
+        }
+    }    
   }
-  
- uLCD.locate(1,2);
- uLCD.printf("%2D",key_code);
-    uLCD.cls();
-  uLCD.printf("\n%2D\n", key_code);
-  uLCD.printf("\n%2D\n", Past_code);
-  if(key_code != Past_code)
-  {
-      PlayPtr = false;
-  }
-  else
-  {
-      PlayPtr = true;
-  }
-  Past_code = key_code;
-  
-  
+  uLCD.locate(1,2);
+  //uLCD.printf("%2D%2D",key_code[0],key_code[1]);
+  touches = touches + 1;
 }
 
 //sets up interrupts for 2nd toucpad
 void fallInterrupt2() {
-  key_code=77;
-  Past_code2=77;
-  int value2=pad.read(0x00);
-  value2 +=pad.read(0x01)<<8;
+  key_code[0]=88;
+  key_code[1]=88;
+  flagInterrupt = true;
+  
+  int value2=tones2pad.read(0x00);
+  value2 +=tones2pad.read(0x01)<<8;
   
   // puts key number out to LEDs for demo
+  int k = 0;
   for(int j=0; j<12; j++) 
-  {
-    
+  {        
     if(((value2>>j)&0x01) == 1)
     {
-        key_code= j +12;
-        
+        key_code [k] = j +12;        
+        if (k < 1){
+            k=k+1;
+        }
     }
   }
   
-    if(key_code != Past_code2)
-    {
-      PlayPtr = false;
-    }
-    else
-    {
-      PlayPtr = true;
-    }
-    Past_code2 = key_code;
-
-  
   uLCD.locate(1,3);
-  uLCD.printf("%2D",key_code);
-  
-  
+  //uLCD.printf("%2D%2D",key_code[0],key_code[1]);
+  touches = touches + 1;
 }
- 
-int main() {
-  pardon.fall(&fallInterrupt2);
-  pardon.mode(PullUp);
-  interrupt.fall(&fallInterrupt);
-  interrupt.mode(PullUp);
-  
-  FILE *wave_file;
-  
-  while(1)
-  {
-      switch(key_code) //uses a case for each individual touch sensor
-      {
-        case 0:
-            //mySpeaker.PlayNote(969.0, 0.5, 0.5);
-            wave_file = fopen("/sd/piano_G.wav","r");
-            waver.play(wave_file, &PlayPtr);
-            fclose(wave_file);
-            break;
-        case 1:
-            //mySpeaker.PlayNote(200.0, 0.1, 0.1);
-            wave_file = fopen("/sd/piano_F_sharp.wav","r");
-            waver.play(wave_file, &PlayPtr);
-            fclose(wave_file);
-            led1 = 1;
-            break;
-        case 2:
-            //mySpeaker.PlayNote(300.0, 0.1, 0.1);
-            wave_file = fopen("/sd/piano_B.wav","r");
-            waver.play(wave_file, &PlayPtr);
-            fclose(wave_file);
-            break;
-        case 3:
-            //mySpeaker.PlayNote(500.0, 0.15, 0.1);
-            wave_file = fopen("/sd/piano_A_sharp.wav","r");
-            waver.play(wave_file, &PlayPtr);
-            fclose(wave_file);
-            break;
-        case 4:
-            //mySpeaker.PlayNote(700.0, 0.15, 0.1);
-            wave_file = fopen("/sd/Gb3.wav","r");
-            waver.play(wave_file, &PlayPtr);
-            fclose(wave_file);
-            break;
-        case 5:
-            //mySpeaker.PlayNote(600.0, 0.15, 0.1);
-            wave_file = fopen("/sd/G3.wav","r");
-            waver.play(wave_file, &PlayPtr);
-            fclose(wave_file);
-            break;
-        case 6:
-            //mySpeaker.PlayNote(969.0, 0.5, 0.5);
-            wave_file = fopen("/sd/F3.wav","r");
-            waver.play(wave_file, &PlayPtr);
-            fclose(wave_file);
-            break;
-        case 7:
-            //mySpeaker.PlayNote(161.0, 0.25, 0.01);
-            wave_file = fopen("/sd/Eb4.wav","r");
-            waver.play(wave_file, &PlayPtr);
-            fclose(wave_file);
-            break;
-        case 8:
-            //mySpeaker.PlayNote(869.0, 0.5, 0.5);
-            wave_file = fopen("/sd/Eb3.wav","r");
-            waver.play(wave_file, &PlayPtr);
-            fclose(wave_file);
-            break;
-        case 9:
-            //mySpeaker.PlayNote(769.0, 0.5, 0.5);
-            wave_file = fopen("/sd/E3.wav","r");
-            waver.play(wave_file, &PlayPtr);
-            fclose(wave_file);
-            break;
-        case 10:
-            //mySpeaker.PlayNote(669.0, 0.5, 0.5);
-            wave_file = fopen("/sd/Db4.wav","r");
-            waver.play(wave_file, &PlayPtr);
-            fclose(wave_file);
-            break;
-        case 11:
-            //mySpeaker.PlayNote(469.0, 0.5, 0.5);
-            wave_file = fopen("/sd/Db3.wav","r");
-            waver.play(wave_file, &PlayPtr);
-            fclose(wave_file);
-            break;
-        case 12:
-            //mySpeaker.PlayNote(969.0, 0.5, 0.5);
-            wave_file = fopen("/sd/D4.wav","r");
-            waver.play(wave_file, &PlayPtr);
-            fclose(wave_file);
-            break;
-        case 13:
-            //mySpeaker.PlayNote(200.0, 0.1, 0.1);
-            wave_file = fopen("/sd/Db3.wav","r");
-            waver.play(wave_file, &PlayPtr);
-            fclose(wave_file);
-            led1 = 1;
-            uLCD.printf("Hey");
-            break;
-        case 14:
-            //mySpeaker.PlayNote(300.0, 0.1, 0.1);
-            wave_file = fopen("/sd/C4.wav","r");
-            waver.play(wave_file, &PlayPtr);
-            fclose(wave_file);
-            break;
-        case 15:
-            //mySpeaker.PlayNote(500.0, 0.15, 0.1);
-            wave_file = fopen("/sd/C3.wav","r");
-            waver.play(wave_file, &PlayPtr);
-            fclose(wave_file);
-            break;
-        case 16:
-            //mySpeaker.PlayNote(700.0, 0.15, 0.1);
-            wave_file = fopen("/sd/Bb3.wav","r");
-            waver.play(wave_file, &PlayPtr);
-            fclose(wave_file);
-            break;
-        case 17:
-            //mySpeaker.PlayNote(600.0, 0.15, 0.1);
-            wave_file = fopen("/sd/Bb2.wav","r");
-            waver.play(wave_file, &PlayPtr);
-            fclose(wave_file);
-            break;
-        case 18:
-            //mySpeaker.PlayNote(969.0, 0.5, 0.5);
-            wave_file = fopen("/sd/B3.wav","r");
-            waver.play(wave_file, &PlayPtr);
-            fclose(wave_file);
-            break;
-        case 19:
-            //mySpeaker.PlayNote(161.0, 0.25, 0.01);
-            wave_file = fopen("/sd/B2.wav","r");
-            waver.play(wave_file, &PlayPtr);
-            fclose(wave_file);
-            break;
-        case 20:
-            //mySpeaker.PlayNote(869.0, 0.5, 0.5);
-            wave_file = fopen("/sd/Ab3.wav","r");
-            waver.play(wave_file, &PlayPtr);
-            fclose(wave_file);
-            break;
-        case 21:
-            //mySpeaker.PlayNote(769.0, 0.5, 0.5);
-            wave_file = fopen("/sd/A3.wav","r");
-            waver.play(wave_file, &PlayPtr);
-            fclose(wave_file);
-            break;
-        case 22:
-            //mySpeaker.PlayNote(669.0, 0.5, 0.5);
-            wave_file = fopen("/sd/C3.wav","r");
-            waver.play(wave_file, &PlayPtr);
-            fclose(wave_file);
-            break;
-        case 23:
-            //mySpeaker.PlayNote(469.0, 0.5, 0.5);
-            wave_file = fopen("/sd/C4.wav","r");
-            waver.play(wave_file, &PlayPtr);
-            fclose(wave_file);
-            break;
-      }
-  }
+
+void pb1_hit_interrupt (void)
+{      
+    if (flagPb == 0)
+    {
+        touches = 0;
+        
+        uLCD.locate(1,1);
+        uLCD.printf("Start Recording");
+        uLCD.locate(1,5);
+        uLCD.printf("Waiting");
+        flagPb = 1;
+
+    }
+    else if (flagPb == 1)
+    {
+        FILE * f = wavfile_open("/sd/Example14.wav");
+        uLCD.locate(1,1);
+        uLCD.printf("Recording ended");
+        uLCD.locate(1,4);
+        uLCD.printf("touches = %d",touches);
+        uLCD.locate(1,6);
+        /*
+        for (int k = 0; k<=touches; k++)
+        {
+            uLCD.printf("%d",music[k]);
+        }
+        */  
+        for (int k = 0; k<=touches; k++){
+            short waveform[NUM_SAMPLES];
+            double frequency = music[k]; //880.0;
+            double frequency2 = music2[k];            
+            int volume = 32000;            
+            int length = NUM_SAMPLES;   
+            int i;
+            for(i=0;i<length;i++) {
+                double t = (double) i / WAVFILE_SAMPLES_PER_SECOND;
+                if (frequency2 == 0)
+                {
+                    waveform[i] = volume*sin(frequency*t*2*3.1415926);
+                }
+                else if (frequency2 != 0)
+                {
+                    waveform[i] = volume*(sin(frequency*t*2*3.1415926)+sin(frequency2*t*2*3.1415926))/2;
+                }
+            }
+            if (music[k] == 0)
+            {
+                int length_short = length*2/9;
+                fwrite(waveform,sizeof(short),length_short,f);
+            }
+            else if (music[k] != 0)
+            {
+                fwrite(waveform,sizeof(short),length,f);
+            }
+        }
+        wavfile_close(f);        
+               
+        uLCD.locate(1,5);
+        uLCD.printf("Done   ");
+        flagPb = 0;
+    }    
+}
+
+void pb2_hit_interrupt (void)
+{
+    flagPb2 = true;
+    uLCD.cls();
+    uLCD.locate(1,1);
+    uLCD.printf("Let the fun begin\n");
 }
 
+int main()
+{    
+    touches = -1;
+    flagPb = 0;
+    flagInterrupt = false;
+    
+    key_code[0] = 88;
+    key_code[1] = 88;
+    
+    pb1.fall(&pb1_hit_interrupt);
+    wait(.2);
+    pb1.mode(PullUp);
+    wait(.2);
+    
+    pb2.mode(PullUp);
+    wait(.2);
+    pb2.fall(&pb2_hit_interrupt);
+    wait(.2);
+     
+    interrupt2.fall(&fallInterrupt2);
+    interrupt2.mode(PullUp);
+    interrupt1.fall(&fallInterrupt1);
+    interrupt1.mode(PullUp);
+        
+    while(1)
+    {
+            
+      if ( (flagPb == 1) && (flagInterrupt == false ))
+      {
+          
+          touches = touches + 1;
+          music[touches] = 0;
+          music2[touches] = 0;
+          wait(0.05);
+          //flagInterrupt = false;
+      }
+      
+      if (flagPb2 == true)
+      { 
+        FILE *wave_file;
+        uLCD.locate(1,6);
+        uLCD.printf("Playing");    
+        wave_file=fopen("/sd/Example14.wav","r");
+        waver.play(wave_file);        
+        fclose(wave_file);
+        flagPb2 = false;
+        uLCD.locate(1,7);
+        uLCD.printf("Playing Ended");
+      }
+      
+      if (key_code[1] == 88)
+      {
+        music2[touches] = 0;
+        switch(key_code[0]) //uses a case for each individual touch sensor
+        {            
+            case 0:
+                mySpeaker.PlayNote(262,0,0.2,1);
+                music[touches] = 262;
+                flagInterrupt = false;
+                mySpeaker.StopPlaying();         
+                break;
+            case 1:
+                mySpeaker.PlayNote(277,0,0.2,1);
+                music[touches] = 277;
+                flagInterrupt = false;
+                mySpeaker.StopPlaying();
+                break;
+            case 2:
+                mySpeaker.PlayNote(294,0,0.2,1);
+                music[touches] = 294;
+                flagInterrupt = false;
+                mySpeaker.StopPlaying();
+                break;
+            case 3:
+                mySpeaker.PlayNote(311,0,0.2,1);
+                music[touches] = 311;
+                flagInterrupt = false;
+                mySpeaker.StopPlaying();
+                break;
+            case 4:
+                mySpeaker.PlayNote(330,0,0.2,1);
+                music[touches] = 330;
+                flagInterrupt = false;
+                mySpeaker.StopPlaying();
+                break;
+            case 5:
+                mySpeaker.PlayNote(349,0,0.2,1);
+                music[touches] = 349;
+                flagInterrupt = false;
+                mySpeaker.StopPlaying();
+                break;
+            case 6:
+                mySpeaker.PlayNote(370,0,0.2,1);
+                music[touches] = 370;
+                flagInterrupt = false;
+                mySpeaker.StopPlaying();
+                break;
+            case 7:
+                mySpeaker.PlayNote(392,0,0.2,1);
+                music[touches] = 392;
+                flagInterrupt = false;
+                mySpeaker.StopPlaying();
+                break;
+            case 8:
+                mySpeaker.PlayNote(415,0,0.2,1);
+                music[touches] = 415;
+                flagInterrupt = false;
+                mySpeaker.StopPlaying();
+                break;
+            case 9:
+                mySpeaker.PlayNote(440,0,0.2,1);
+                music[touches] = 440;
+                flagInterrupt = false;
+                mySpeaker.StopPlaying();
+                break;
+            case 10:
+                mySpeaker.PlayNote(466,0,0.2,1);
+                music[touches] = 466;
+                flagInterrupt = false;
+                mySpeaker.StopPlaying();
+                break;
+            case 11:
+                mySpeaker.PlayNote(494,0,0.2,1);
+                music[touches] = 494;
+                flagInterrupt = false;
+                mySpeaker.StopPlaying();
+                break;
+            case 12:
+                mySpeaker.PlayNote(523,0,0.2,1);
+                music[touches] = 523;
+                flagInterrupt = false;
+                mySpeaker.StopPlaying();
+                break;
+            case 13:
+                mySpeaker.PlayNote(554,0,0.2,1);
+                music[touches] = 554;
+                flagInterrupt = false;
+                mySpeaker.StopPlaying();
+                break;
+            case 14:
+                mySpeaker.PlayNote(587,0,0.2,1);
+                music[touches] = 587;
+                flagInterrupt = false;
+                mySpeaker.StopPlaying();
+                break;
+            case 15:
+                mySpeaker.PlayNote(622,0,0.2,1);
+                music[touches] = 622;
+                flagInterrupt = false;
+                mySpeaker.StopPlaying();
+                break;
+            case 16:
+                mySpeaker.PlayNote(659,0,0.2,1);
+                music[touches] = 659;
+                flagInterrupt = false;
+                mySpeaker.StopPlaying();
+                break;
+            case 17:
+                mySpeaker.PlayNote(698,0,0.2,1);
+                music[touches] = 698;
+                flagInterrupt = false;
+                mySpeaker.StopPlaying();
+                break;
+            case 18:
+                mySpeaker.PlayNote(740,0,0.2,1);
+                music[touches] = 740;
+                flagInterrupt = false;
+                mySpeaker.StopPlaying();
+                break;
+            case 19:
+                mySpeaker.PlayNote(784,0,0.2,1);
+                music[touches] = 784;
+                flagInterrupt = false;
+                mySpeaker.StopPlaying();
+                break;
+            case 20:
+                mySpeaker.PlayNote(830,0,0.2,1);
+                music[touches] = 830;
+                flagInterrupt = false;
+                mySpeaker.StopPlaying();
+                break;
+            case 21:
+                mySpeaker.PlayNote(880,0,0.2,1);
+                music[touches] = 830;
+                flagInterrupt = false;
+                mySpeaker.StopPlaying();
+                break;
+            case 22:
+                mySpeaker.PlayNote(932,0,0.2,1);
+                music[touches] = 932;
+                flagInterrupt = false;
+                mySpeaker.StopPlaying();
+                break;
+            case 23:
+                mySpeaker.PlayNote(988,0,0.2,1);
+                music[touches] = 988;
+                flagInterrupt = false;
+                mySpeaker.StopPlaying();
+                break;
+            
+            default:
+                music[touches] = 0;
+                flagInterrupt = false;
+            
+        }
+      }
+      
+      if (key_code[1] != 88) //Overtunes
+      {
+        switch(key_code[0]) //uses a case for each individual touch sensor
+        {            
+            case 0:
+                music[touches] = 262;                         
+                break;
+            case 1:
+                music[touches] = 277;
+                break;
+            case 2:
+                music[touches] = 294;
+                break;
+            case 3:
+                music[touches] = 311;
+                break;
+            case 4:
+                music[touches] = 330;
+                break;
+            case 5:
+                music[touches] = 349;
+                break;
+            case 6:
+                music[touches] = 370;
+                break;
+            case 7:
+                music[touches] = 392;
+                break;
+            case 8:
+                music[touches] = 415;
+                break;
+            case 9:
+                music[touches] = 440;
+                break;
+            case 10:
+                music[touches] = 466;
+                break;
+            case 11:
+                music[touches] = 494;
+                break;
+            case 12:
+                music[touches] = 523;
+                break;
+            case 13:
+                music[touches] = 554;
+                break;
+            case 14:
+                music[touches] = 587;
+                break;
+            case 15:
+                music[touches] = 622;
+                break;
+            case 16:
+                music[touches] = 659;
+                break;
+            case 17:
+                music[touches] = 698;
+                break;
+            case 18:
+                music[touches] = 740;
+                break;
+            case 19:
+                music[touches] = 784;
+                break;
+            case 20:
+                music[touches] = 830;
+                break;
+            case 21:
+                music[touches] = 830;
+                break;
+            case 22:
+                music[touches] = 932;
+                break;
+            case 23:
+                music[touches] = 988;
+                break;
+            
+            default:
+                music[touches] = 0;
+            
+        }
+        
+        switch(key_code[1]) //uses a case for each individual touch sensor
+        {            
+            case 0:
+                mySpeaker.PlayNote(music[touches],262,0.2,1);
+                music2[touches] = 262;
+                flagInterrupt = false;
+                mySpeaker.StopPlaying();         
+                break;
+            case 1:
+                mySpeaker.PlayNote(music[touches],277,0.2,1);
+                music2[touches] = 277;
+                flagInterrupt = false;
+                mySpeaker.StopPlaying();
+                break;
+            case 2:
+                mySpeaker.PlayNote(music[touches],294,0.2,1);
+                music2[touches] = 294;
+                flagInterrupt = false;
+                mySpeaker.StopPlaying();
+                break;
+            case 3:
+                mySpeaker.PlayNote(music[touches],311,0.2,1);
+                music2[touches] = 311;
+                flagInterrupt = false;
+                mySpeaker.StopPlaying();
+                break;
+            case 4:
+                mySpeaker.PlayNote(music[touches],330,0.2,1);
+                music2[touches] = 330;
+                flagInterrupt = false;
+                mySpeaker.StopPlaying();
+                break;
+            case 5:
+                mySpeaker.PlayNote(music[touches],349,0.2,1);
+                music2[touches] = 349;
+                flagInterrupt = false;
+                mySpeaker.StopPlaying();
+                break;
+            case 6:
+                mySpeaker.PlayNote(music[touches],370,0.2,1);
+                music2[touches] = 370;
+                flagInterrupt = false;
+                mySpeaker.StopPlaying();
+                break;
+            case 7:
+                mySpeaker.PlayNote(music[touches],392,0.2,1);
+                music2[touches] = 392;
+                flagInterrupt = false;
+                mySpeaker.StopPlaying();
+                break;
+            case 8:
+                mySpeaker.PlayNote(music[touches],415,0.2,1);
+                music2[touches] = 415;
+                flagInterrupt = false;
+                mySpeaker.StopPlaying();
+                break;
+            case 9:
+                mySpeaker.PlayNote(music[touches],440,0.2,1);
+                music2[touches] = 440;
+                flagInterrupt = false;
+                mySpeaker.StopPlaying();
+                break;
+            case 10:
+                mySpeaker.PlayNote(music[touches],466,0.2,1);
+                music2[touches] = 466;
+                flagInterrupt = false;
+                mySpeaker.StopPlaying();
+                break;
+            case 11:
+                mySpeaker.PlayNote(music[touches],494,0.2,1);
+                music2[touches] = 494;
+                flagInterrupt = false;
+                mySpeaker.StopPlaying();
+                break;
+            case 12:
+                mySpeaker.PlayNote(music[touches],523,0.2,1);
+                music2[touches] = 523;
+                flagInterrupt = false;
+                mySpeaker.StopPlaying();
+                break;
+            case 13:
+                mySpeaker.PlayNote(music[touches],554,0.2,1);
+                music2[touches] = 554;
+                flagInterrupt = false;
+                mySpeaker.StopPlaying();
+                break;
+            case 14:
+                mySpeaker.PlayNote(music[touches],587,0.2,1);
+                music2[touches] = 587;
+                flagInterrupt = false;
+                mySpeaker.StopPlaying();
+                break;
+            case 15:
+                mySpeaker.PlayNote(music[touches],622,0.2,1);
+                music2[touches] = 622;
+                flagInterrupt = false;
+                mySpeaker.StopPlaying();
+                break;
+            case 16:
+                mySpeaker.PlayNote(music[touches],659,0.2,1);
+                music2[touches] = 659;
+                flagInterrupt = false;
+                mySpeaker.StopPlaying();
+                break;
+            case 17:
+                mySpeaker.PlayNote(music[touches],698,0.2,1);
+                music2[touches] = 698;
+                flagInterrupt = false;
+                mySpeaker.StopPlaying();
+                break;
+            case 18:
+                mySpeaker.PlayNote(music[touches],740,0.2,1);
+                music2[touches] = 740;
+                flagInterrupt = false;
+                mySpeaker.StopPlaying();
+                break;
+            case 19:
+                mySpeaker.PlayNote(music[touches],784,0.2,1);
+                music2[touches] = 784;
+                flagInterrupt = false;
+                mySpeaker.StopPlaying();
+                break;
+            case 20:
+                mySpeaker.PlayNote(music[touches],830,0.2,1);
+                music2[touches] = 830;
+                flagInterrupt = false;
+                mySpeaker.StopPlaying();
+                break;
+            case 21:
+                mySpeaker.PlayNote(music[touches],880,0.2,1);
+                music2[touches] = 830;
+                flagInterrupt = false;
+                mySpeaker.StopPlaying();
+                break;
+            case 22:
+                mySpeaker.PlayNote(music[touches],932,0.2,1);
+                music2[touches] = 932;
+                flagInterrupt = false;
+                mySpeaker.StopPlaying();
+                break;
+            case 23:
+                mySpeaker.PlayNote(music[touches],988,0.2,1);
+                music2[touches] = 988;
+                flagInterrupt = false;
+                mySpeaker.StopPlaying();
+                break;
+            
+            default:
+                music2[touches] = 0;
+                flagInterrupt = false;
+            
+        }        
+      }
+    }
+}
+