Game codes for Pokemon Academy Yiu Fai Kwok - 201198802 I have read the University Regulations on Plagiarism and state that the work covered by this declaration is my own and does not contain any unacknowledged work from other sources.

Dependencies:   mbed FXOS8700CQ mbed-rtos

Revision:
23:4a070960817a
Parent:
22:f8f36e88b2ca
Child:
26:c60becf3f840
--- a/main.cpp	Sun Apr 28 18:58:10 2019 +0000
+++ b/main.cpp	Mon Apr 29 20:45:04 2019 +0000
@@ -17,6 +17,7 @@
 #include "Game_two.h"
 #include "Exam.h"
 #include "FXOS8700CQ.h"
+#include "rtos.h"
 
 /////////////// objects ///////////////
 N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11);  // K64F - pwr from 3V3
@@ -26,6 +27,7 @@
 Game_one game_1;
 Game_two game_2;
 Exam test;
+Thread thread;
 // I2C connection for FXOS8700CQ accelerometer/magnetometer
 FXOS8700CQ device(I2C_SDA,I2C_SCL);  // PTE25/PTE24
 
@@ -47,6 +49,7 @@
 void lose();
 void passed();
 void failed();
+void gym();
 
 //Starting states
 enum StartStates {
@@ -74,6 +77,7 @@
 int select = 0;
 int year = 0;
 int pass = 0;
+volatile bool finished = false;
 
 ///////////// functions ////////////////
 int main(){
@@ -257,10 +261,14 @@
                         
                         // Game loop for EXAM
                         case EXAM:
+                            finished = false;
                             test.exam_title(pad, lcd);
-                            if(year == 0) {pass = test.exam_q_one(pad, lcd, score);}
-                            else if(year == 1) {pass = test.exam_q_two(pad, lcd, score);}
-                            else if(year == 2) {pass = test.exam_q_three(pad, lcd, score);}
+                            thread.start(gym);
+                            if(year == 0) {pass = test.exam_q_one(pad, lcd, score); finished = true;}
+                            else if(year == 1) {pass = test.exam_q_two(pad, lcd, score); finished = true;}
+                            else if(year == 2) {pass = test.exam_q_three(pad, lcd, score); finished = true;}
+                            Thread::wait(1000);
+                            thread.join();
                             if(pass >= 2){
                                 passed();
                                 music.win(pad);
@@ -968,4 +976,575 @@
     lcd.clear();
     lcd.drawSprite(4, 19, 10, 77, (int *)instruct_data);
     lcd.refresh();
+}
+
+void gym()
+{
+    // bar 1
+    pad.tone(NOTE_B4,0.33/2);
+    Thread::wait(330/2);
+    if (finished == true) {return;}
+    pad.tone(NOTE_FS4,0.33/2);
+    wait(0.33/2);
+    pad.tone(NOTE_B3,0.33/2);
+    wait(0.33/2);
+    pad.tone(NOTE_FS4,0.33/2);
+    wait(0.33/2);
+    pad.tone(NOTE_B3,0.33/2);
+    wait(0.33/2);
+    pad.tone(NOTE_FS4,0.33/2);
+    wait(0.33/2);
+    pad.tone(NOTE_B3,0.33/2);
+    wait(0.33/2);
+    pad.tone(NOTE_FS4,0.33/2);
+    wait(0.33/2);
+    pad.tone(NOTE_B4,0.33/2);
+    wait(0.33/2);
+    pad.tone(NOTE_FS4,0.33/2);
+    wait(0.33/2);
+    pad.tone(NOTE_B3,0.33/2);
+    wait(0.33/2);
+    pad.tone(NOTE_FS4,0.33/2);
+    wait(0.33/2);
+    pad.tone(NOTE_B3,0.33/2);
+    wait(0.33/2);
+    pad.tone(NOTE_C5,0.33*1.5);
+    wait(0.33*1.5);
+    // bar 3
+    pad.tone(NOTE_B4,0.33/2);
+    Thread::wait(330/2);
+    if (finished == true) {return;}
+    pad.tone(NOTE_FS4,0.33/2);
+    wait(0.33/2);
+    pad.tone(NOTE_B3,0.33/2);
+    wait(0.33/2);
+    pad.tone(NOTE_FS4,0.33/2);
+    wait(0.33/2);
+    pad.tone(NOTE_B3,0.33/2);
+    wait(0.33/2);
+    pad.tone(NOTE_FS4,0.33/2);
+    wait(0.33/2);
+    pad.tone(NOTE_B3,0.33/2);
+    wait(0.33/2);
+    pad.tone(NOTE_FS4,0.33/2);
+    wait(0.33/2);
+    pad.tone(NOTE_B4,0.33/2);
+    wait(0.33/2);
+    pad.tone(NOTE_FS4,0.33/2);
+    wait(0.33/2);
+    pad.tone(NOTE_B3,0.33/2);
+    wait(0.33/2);
+    pad.tone(NOTE_FS4,0.33/2);
+    wait(0.33/2);
+    pad.tone(NOTE_B3,0.33/2);
+    wait(0.33/2);
+    pad.tone(NOTE_AS4,0.33*1.5);
+    wait(0.33*1.5);
+    // bar 5
+    pad.tone(NOTE_B4,0.33/2);
+    Thread::wait(330/2);
+    if (finished == true) {return;}
+    pad.tone(NOTE_FS4,0.33/2);
+    wait(0.33/2);
+    pad.tone(NOTE_B3,0.33/2);
+    wait(0.33/2);
+    pad.tone(NOTE_FS4,0.33/2);
+    wait(0.33/2);
+    pad.tone(NOTE_B3,0.33/2);
+    wait(0.33/2);
+    pad.tone(NOTE_FS4,0.33/2);
+    wait(0.33/2);
+    pad.tone(NOTE_B3,0.33/2);
+    wait(0.33/2);
+    pad.tone(NOTE_FS4,0.33/2);
+    wait(0.33/2);
+    pad.tone(NOTE_B4,0.33/2);
+    wait(0.33/2);
+    pad.tone(NOTE_FS4,0.33/2);
+    wait(0.33/2);
+    pad.tone(NOTE_B3,0.33/2);
+    wait(0.33/2);
+    pad.tone(NOTE_FS4,0.33/2);
+    wait(0.33/2);
+    pad.tone(NOTE_B3,0.33/2);
+    wait(0.33/2);
+    pad.tone(NOTE_C5,0.33*1.5);
+    wait(0.33*1.5);
+    // bar 7
+    pad.tone(NOTE_B4,0.33/2);
+    Thread::wait(330/2);
+    if (finished == true) {return;}
+    pad.tone(NOTE_FS4,0.33/2);
+    wait(0.33/2);
+    pad.tone(NOTE_B3,0.33/2);
+    wait(0.33/2);
+    pad.tone(NOTE_FS4,0.33/2);
+    wait(0.33/2);
+    pad.tone(NOTE_B3,0.33/2);
+    wait(0.33/2);
+    pad.tone(NOTE_FS4,0.33/2);
+    wait(0.33/2);
+    pad.tone(NOTE_B3,0.33/2);
+    wait(0.33/2);
+    pad.tone(NOTE_FS4,0.33/2);
+    wait(0.33/2);
+    pad.tone(NOTE_B4,0.33/2);
+    wait(0.33/2);
+    pad.tone(NOTE_FS4,0.33/2);
+    wait(0.33/2);
+    pad.tone(NOTE_B3,0.33/2);
+    wait(0.33/2);
+    pad.tone(NOTE_FS4,0.33/2);
+    wait(0.33/2);
+    pad.tone(NOTE_B3,0.33/2);
+    Thread::wait(330/2);
+    if (finished == true) {return;}
+    pad.tone(NOTE_CS5,0.33*1.5);
+    wait(0.33*1.5);
+    
+    // Loop while state is true
+    while(!finished){
+        // bar 8 
+        pad.tone(NOTE_DS5,0.33);
+        wait(0.33);
+        pad.tone(NOTE_CS5,0.33);
+        wait(0.33);
+        pad.tone(NOTE_DS5,0.33);
+        wait(0.33);
+        pad.tone(NOTE_E5,0.33/2);
+        Thread::wait(330/2);
+        if(finished == true) {break;}
+        pad.tone(NOTE_FS5,0.33);
+        wait(0.33);
+        pad.tone(NOTE_E5,0.33);
+        wait(0.33);
+        pad.tone(NOTE_DS5,0.33/2);
+        Thread::wait(330/2);
+        if(finished == true) {break;}
+        pad.tone(NOTE_CS5,0.33/2);
+        wait(0.33/2);
+        pad.tone(NOTE_B4,0.33/2);
+        wait(0.33/2);
+        pad.tone(NOTE_CS5,0.33/2);
+        wait(0.33/2);
+        pad.tone(NOTE_DS5,0.33/2);
+        Thread::wait(330/2);
+        if(finished == true) {break;}
+        // bar 10
+        pad.tone(NOTE_A4,0.33*2);
+        wait(0.33*2);
+        pad.tone(NOTE_CS5,0.33*2);
+        Thread::wait(330*2);
+        if(finished == true) {break;}
+        pad.tone(NOTE_E5,0.33*2);
+        wait(0.33*2);
+        pad.tone(NOTE_CS5,0.33*2);
+        Thread::wait(330*2);
+        if(finished == true) {break;}
+        // bar 8 
+        pad.tone(NOTE_DS5,0.33);
+        wait(0.33);
+        pad.tone(NOTE_CS5,0.33);
+        wait(0.33);
+        pad.tone(NOTE_DS5,0.33);
+        wait(0.33);
+        pad.tone(NOTE_E5,0.33/2);
+        Thread::wait(330/2);
+        if(finished == true) {break;}
+        pad.tone(NOTE_FS5,0.33);
+        wait(0.33);
+        pad.tone(NOTE_E5,0.33);
+        wait(0.33);
+        pad.tone(NOTE_DS5,0.33/2);
+        wait(0.33/2);
+        pad.tone(NOTE_CS5,0.33/2);
+        wait(0.33/2);
+        pad.tone(NOTE_B4,0.33/2);
+        Thread::wait(330/2);
+        if(finished == true) {break;}
+        pad.tone(NOTE_CS5,0.33/2);
+        wait(0.33/2);
+        pad.tone(NOTE_DS5,0.33/2);
+        wait(0.33/2);
+        // bar 12
+        pad.tone(NOTE_CS5,0.33*2);
+        wait(0.33*2);
+        pad.tone(NOTE_B4,0.33*2);
+        Thread::wait(330*2);
+        if(finished == true) {break;}
+        pad.tone(NOTE_A4,0.33*2);
+        wait(0.33*2);
+        pad.tone(NOTE_E5,0.33);
+        wait(0.33);
+        pad.tone(NOTE_E5,0.33/2);
+        wait(0.33/2);
+        pad.tone(NOTE_CS5,0.33/2);
+        Thread::wait(330/2);
+        if(finished == true) {break;}
+        // bar 14
+        pad.tone(NOTE_B3,0.33/2);
+        wait(0.33/2);
+        pad.tone(NOTE_B3,0.33/2);
+        wait(0.33/2);
+        pad.tone(NOTE_D4,0.33/4);
+        wait(0.33/4);
+        pad.tone(NOTE_CS4,0.33/4);
+        wait(0.33/4);
+        pad.tone(NOTE_B3,0.33/4);
+        wait(0.33/4);
+        pad.tone(NOTE_D4,0.33/4);
+        wait(0.33/4);
+        pad.tone(NOTE_B3,0.33/2);
+        Thread::wait(330/2);
+        if(finished == true) {break;}
+        pad.tone(NOTE_B3,0.33/2);
+        wait(0.33/2);
+        pad.tone(NOTE_E4,0.33/4);
+        wait(0.33/4);
+        pad.tone(NOTE_D4,0.33/4);
+        wait(0.33/4);
+        pad.tone(NOTE_B3,0.33/4);
+        wait(0.33/4);
+        pad.tone(NOTE_E4,0.33/4);
+        wait(0.33/4);
+        // bar 15
+        pad.tone(NOTE_B3,0.33/2);
+        wait(0.33/2);
+        pad.tone(NOTE_B3,0.33/2);
+        Thread::wait(330/2);
+        if(finished == true) {break;}
+        pad.tone(NOTE_FS4,0.33/4);
+        wait(0.33/4);
+        pad.tone(NOTE_E4,0.33/4);
+        wait(0.33/4);
+        pad.tone(NOTE_CS4,0.33/4);
+        wait(0.33/4);
+        pad.tone(NOTE_FS4,0.33/4);
+        wait(0.33/4);
+        pad.tone(NOTE_B3,0.33/2);
+        wait(0.33/2);
+        pad.tone(NOTE_E4,0.33/4);
+        wait(0.33/4);
+        pad.tone(NOTE_CS4,0.33/4);
+        wait(0.33/4);
+        pad.tone(NOTE_E4,0.25/2);
+        Thread::wait(250/2);
+        if(finished == true) {break;}
+        pad.tone(NOTE_F4,0.25/2);
+        wait(0.33/2);
+        // bar 16
+        pad.tone(NOTE_D4,0.33/4);
+        wait(0.33/4);
+        pad.tone(NOTE_CS4,0.33/4);
+        wait(0.33/4);
+        pad.tone(NOTE_B3,0.33/4);
+        wait(0.33/4);
+        pad.tone(NOTE_D4,0.33/4);
+        wait(0.33/4);
+        pad.tone(NOTE_B3,0.33/2);
+        Thread::wait(330/2);
+        if(finished == true) {break;}
+        pad.tone(NOTE_B3,0.33/2);
+        wait(0.33/2);
+        pad.tone(NOTE_E4,0.33/4);
+        wait(0.33/4);
+        pad.tone(NOTE_D4,0.33/4);
+        wait(0.33/4);
+        pad.tone(NOTE_B3,0.33/4);
+        wait(0.33/4);
+        pad.tone(NOTE_E4,0.33/4);
+        wait(0.33/4);
+        pad.tone(NOTE_B3,0.33/2);
+        wait(0.33/2);
+        pad.tone(NOTE_B3,0.33/2);
+        Thread::wait(330/2);
+        if(finished == true) {break;}
+        // bar 17
+        pad.tone(NOTE_FS4,0.33/4);
+        wait(0.33/4);
+        pad.tone(NOTE_E4,0.33/4);
+        wait(0.33/4);
+        pad.tone(NOTE_CS4,0.33/4);
+        wait(0.33/4);
+        pad.tone(NOTE_FS4,0.33/4);
+        wait(0.33/4);
+        pad.tone(NOTE_E4,0.33/2);
+        Thread::wait(330/2);
+        if(finished == true) {break;}
+        pad.tone(NOTE_CS4,0.33/2);
+        wait(0.33/2);
+        pad.tone(NOTE_D4,0.33/2);
+        wait(0.33/2);
+        pad.tone(NOTE_CS4,0.33/2);
+        wait(0.33/2);
+        pad.tone(NOTE_FS4,0.33/2);
+        Thread::wait(330/2);
+        if(finished == true) {break;}
+        pad.tone(NOTE_E4,0.33/2);
+        wait(0.33/2);
+        // bar 18
+        pad.tone(NOTE_B3,0.33/2);
+        wait(0.33/2);
+        pad.tone(NOTE_B3,0.33/2);
+        wait(0.33/2);
+        pad.tone(NOTE_B4,0.33);
+        Thread::wait(330);
+        if(finished == true) {break;}
+        pad.tone(NOTE_C5,0.33);
+        wait(0.33);
+        pad.tone(NOTE_A4,0.33);
+        wait(0.33);
+        pad.tone(NOTE_B4,0.33);
+        Thread::wait(330);
+        if(finished == true) {break;}
+        pad.tone(NOTE_C5,0.33);
+        wait(0.33);
+        pad.tone(NOTE_A4,0.33);
+        wait(0.33);
+        pad.tone(NOTE_G4,0.33);
+        Thread::wait(330);
+        if(finished == true) {break;}
+        // bar 19
+        pad.tone(NOTE_FS4,0.33*4);
+        wait(0.33);
+        pad.tone(NOTE_C4,0.33/4);
+        wait(0.33/4);
+        pad.tone(NOTE_B3,0.33/4);
+        wait(0.33/4);
+        pad.tone(NOTE_A3,0.33/4);
+        wait(0.33/4);
+        pad.tone(NOTE_B3,0.33/4);
+        Thread::wait(330/4);
+        if(finished == true) {break;}
+        pad.tone(NOTE_C4,0.33/4);
+        wait(0.33/4);
+        pad.tone(NOTE_B3,0.33/4);
+        wait(0.33/4);
+        pad.tone(NOTE_A3,0.33/4);
+        wait(0.33/4);
+        pad.tone(NOTE_B3,0.33/4);
+        wait(0.33/4);
+        pad.tone(NOTE_C4,0.33/4);
+        wait(0.33/4);
+        pad.tone(NOTE_B3,0.33/4);
+        Thread::wait(330/4);
+        if(finished == true) {break;}
+        pad.tone(NOTE_A3,0.33/4);
+        wait(0.33/4);
+        pad.tone(NOTE_B3,0.33/4);
+        wait(0.33/4);
+        // bar 20
+        pad.tone(NOTE_C4,0.33/4);
+        wait(0.33/4);
+        pad.tone(NOTE_CS4,0.33/4);
+        wait(0.33/4);
+        pad.tone(NOTE_D4,0.33/4);
+        wait(0.33/4);
+        pad.tone(NOTE_DS4,0.33/4);
+        Thread::wait(330/4);
+        if(finished == true) {break;}
+        pad.tone(NOTE_E4,0.33/4);
+        wait(0.33/4);
+        pad.tone(NOTE_DS4,0.33/4);
+        wait(0.33/4);
+        pad.tone(NOTE_D4,0.33/4);
+        wait(0.33/4);
+        pad.tone(NOTE_CS4,0.33/4);
+        wait(0.33/4);
+        pad.tone(NOTE_C4,0.33/4);
+        wait(0.33/4);
+        pad.tone(NOTE_B3,0.33/4);
+        Thread::wait(330/4);
+        if(finished == true) {break;}
+        pad.tone(NOTE_AS3,0.33/4);
+        wait(0.33/4);
+        pad.tone(NOTE_A3,0.33/4);
+        wait(0.33/4);
+        pad.tone(NOTE_GS3,0.33/4);
+        wait(0.33/4);
+        pad.tone(NOTE_G3,0.33/4);
+        wait(0.33/4);
+        pad.tone(NOTE_FS3,0.33/4);
+        Thread::wait(330/4);
+        if(finished == true) {break;}
+        pad.tone(NOTE_G3,0.33/4);
+        wait(0.33/4);
+        // bar 22
+        pad.tone(NOTE_GS3,0.33/4);
+        wait(0.33/4);
+        pad.tone(NOTE_A3,0.33/4);
+        wait(0.33/4);
+        pad.tone(NOTE_AS3,0.33/4);
+        wait(0.33/4);
+        pad.tone(NOTE_B3,0.33/4);
+        Thread::wait(330/4);
+        if(finished == true) {break;}
+        pad.tone(NOTE_B4,0.33);
+        wait(0.33);
+        pad.tone(NOTE_C5,0.33);
+        wait(0.33);
+        pad.tone(NOTE_A4,0.33);
+        Thread::wait(330);
+        if(finished == true) {break;}
+        pad.tone(NOTE_B4,0.33);
+        wait(0.33);
+        pad.tone(NOTE_C5,0.33);
+        wait(0.33);
+        pad.tone(NOTE_A4,0.33);
+        Thread::wait(330);
+        if(finished == true) {break;}
+        pad.tone(NOTE_C5,0.33);
+        wait(0.33);
+        pad.tone(NOTE_B4,0.33*4);
+        wait(0.33*4);
+        pad.tone(NOTE_FS5,0.33*4);
+        Thread::wait(330*4);
+        if(finished == true) {break;}
+        // bar 26
+        pad.tone(NOTE_B3,0.33/2);
+        wait(0.33/2);
+        pad.tone(NOTE_B3,0.33/2);
+        Thread::wait(330/2);
+        if(finished == true) {break;}
+        pad.tone(NOTE_A4,0.33*3);
+        wait(0.33*3);
+        pad.tone(NOTE_B3,0.33/2);
+        wait(0.33/2);
+        pad.tone(NOTE_B3,0.33/2);
+        Thread::wait(330/2);
+        if(finished == true) {break;}
+        pad.tone(NOTE_CS5,0.33*3);
+        wait(0.33*3);
+        pad.tone(NOTE_DS4,0.33);
+        wait(0.33);
+        pad.tone(NOTE_CS4,0.33);
+        wait(0.33);
+        pad.tone(NOTE_DS4,0.33);
+        Thread::wait(330);
+        if(finished == true) {break;}
+        pad.tone(NOTE_E4,0.33/2);
+        wait(0.33/2);
+        pad.tone(NOTE_FS4,0.33/2);
+        wait(0.33/2);
+        pad.tone(NOTE_B3,0.33/2);
+        wait(0.33/2);
+        pad.tone(NOTE_B3,0.33/2);
+        Thread::wait(330/2);
+        if(finished == true) {break;}
+        pad.tone(NOTE_CS4,0.33/2);
+        wait(0.33/2);
+        pad.tone(NOTE_FS4,0.33/2);
+        wait(0.33/2);
+        pad.tone(NOTE_B4,0.33/2);
+        wait(0.33/2);
+        pad.tone(NOTE_FS4,0.33/2);
+        Thread::wait(330/2);
+        if(finished == true) {break;}
+        pad.tone(NOTE_DS4,0.33/2);
+        wait(0.33/2);
+        pad.tone(NOTE_FS4,0.33/2);
+        wait(0.33/2);
+        // bar 30
+        pad.tone(NOTE_B3,0.33/2);
+        wait(0.33/2);
+        pad.tone(NOTE_B3,0.33/2);
+        Thread::wait(330/2);
+        if(finished == true) {break;}
+        pad.tone(NOTE_CS5,0.33*3);
+        wait(0.33*3);
+        pad.tone(NOTE_A5,0.33*2);
+        Thread::wait(330*2);
+        if(finished == true) {break;}
+        pad.tone(NOTE_E5,0.33*2);
+        wait(0.33*2);
+        // bar 32
+        pad.tone(NOTE_B5,0.33*4);
+        wait(0.33);
+        pad.tone(NOTE_E4,0.33);
+        Thread::wait(330);
+        if(finished == true) {break;}
+        pad.tone(NOTE_CS4,0.33/2);
+        wait(0.33/2);
+        pad.tone(NOTE_DS4,0.33*1.5);
+        wait(0.33*1.5);
+        pad.tone(NOTE_FS4,0.33);
+        Thread::wait(330);
+        if(finished == true) {break;}
+        pad.tone(NOTE_E4,0.33/2);
+        wait(0.33/2);
+        pad.tone(NOTE_DS4,0.33);
+        Thread::wait(330);
+        if(finished == true) {break;}
+        pad.tone(NOTE_E4,0.33*1.5);
+        wait(0.33*1.5);
+        // bar 34
+        pad.tone(NOTE_DS4,0.33);
+        wait(0.33);
+        pad.tone(NOTE_E4,0.33);
+        Thread::wait(330);
+        if(finished == true) {break;}
+        pad.tone(NOTE_CS4,0.33/2);
+        wait(0.33/2);
+        pad.tone(NOTE_DS4,0.33*1.5);
+        wait(0.33*1.5);
+        pad.tone(NOTE_FS4,0.33);
+        Thread::wait(330);
+        if(finished == true) {break;}
+        pad.tone(NOTE_A4,0.33/2);
+        wait(0.33/2);
+        pad.tone(NOTE_GS4,0.33);
+        Thread::wait(330);
+        if(finished == true) {break;}
+        pad.tone(NOTE_G4,0.33*1.5);
+        wait(0.33/2);
+        pad.tone(NOTE_B4,0.33/4);
+        wait(0.33/4);
+        pad.tone(NOTE_DS5,0.33/4);
+        wait(0.33/4);
+        pad.tone(NOTE_FS5,0.33/4);
+        wait(0.33/4);
+        pad.tone(NOTE_AS5,0.33/4);
+        Thread::wait(330/4);
+        if(finished == true) {break;}
+        // bar 36
+        pad.tone(NOTE_B5,0.33*4);
+        wait(0.33);
+        pad.tone(NOTE_E4,0.33);
+        Thread::wait(330);
+        if(finished == true) {break;}
+        pad.tone(NOTE_CS4,0.33/2);
+        wait(0.33/2);
+        pad.tone(NOTE_DS4,0.33*1.5);
+        wait(0.33*1.5);
+        pad.tone(NOTE_FS5,0.33);
+        Thread::wait(330);
+        if(finished == true) {break;}
+        pad.tone(NOTE_DS4,0.33/2);
+        wait(0.33/2);
+        pad.tone(NOTE_CS4,0.33);
+        Thread::wait(330);
+        if(finished == true) {break;}
+        pad.tone(NOTE_C4,0.33*1.5);
+        wait(0.33*1.5);
+        // bar 38
+        pad.tone(NOTE_A5,0.33*4);
+        wait(0.33);
+        pad.tone(NOTE_E4,0.33);
+        Thread::wait(330);
+        if(finished == true) {break;}
+        pad.tone(NOTE_CS4,0.33/2);
+        wait(0.33/2);
+        pad.tone(NOTE_DS4,0.33*1.5);
+        wait(0.33*1.5);
+        pad.tone(NOTE_CS6,0.33);
+        Thread::wait(330);
+        if(finished == true) {break;}
+        pad.tone(NOTE_A4,0.33/2);
+        wait(0.33/2);
+        pad.tone(NOTE_GS4,0.33);
+        Thread::wait(330);
+        if(finished == true) {break;}
+        pad.tone(NOTE_A5,0.33*1.5);
+        wait(0.33*1.5);
+    }
 }
\ No newline at end of file