4 songs: rain, william, sun, and circus

Dependencies:   mbed

Committer:
Luminoscity
Date:
Sat May 09 21:32:39 2015 +0000
Revision:
1:3595fce69880
Parent:
0:c02f01feda7b
Sped up circus

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Luminoscity 0:c02f01feda7b 1 #include "mbed.h"
Luminoscity 0:c02f01feda7b 2 #include "Songs.h"
Luminoscity 0:c02f01feda7b 3
Luminoscity 0:c02f01feda7b 4 Serial sTerm(USBTX, USBRX);
Luminoscity 0:c02f01feda7b 5
Luminoscity 0:c02f01feda7b 6 Song::Song() {
Luminoscity 0:c02f01feda7b 7 choose("rain");
Luminoscity 0:c02f01feda7b 8 }
Luminoscity 0:c02f01feda7b 9
Luminoscity 0:c02f01feda7b 10 Song::Song(char *choice) {
Luminoscity 0:c02f01feda7b 11 choose(choice);
Luminoscity 0:c02f01feda7b 12 }
Luminoscity 0:c02f01feda7b 13
Luminoscity 0:c02f01feda7b 14 void Song::play() {
Luminoscity 0:c02f01feda7b 15
Luminoscity 0:c02f01feda7b 16 for(int i = 0; i < length; i++) {
Luminoscity 0:c02f01feda7b 17 if(notes[i] == ' ') {
Luminoscity 0:c02f01feda7b 18 wait_us(beats[i] * tempo * 1000);
Luminoscity 0:c02f01feda7b 19 } else {
Luminoscity 0:c02f01feda7b 20 playNote(notes[i], range[i], beats[i] * tempo);
Luminoscity 0:c02f01feda7b 21 }
Luminoscity 0:c02f01feda7b 22 wait_us(betweenWait); /* delay between notes */
Luminoscity 0:c02f01feda7b 23 }
Luminoscity 0:c02f01feda7b 24 }
Luminoscity 0:c02f01feda7b 25
Luminoscity 0:c02f01feda7b 26 void Song::choose(char *choice) {
Luminoscity 0:c02f01feda7b 27
Luminoscity 0:c02f01feda7b 28 if (!strcmp(choice, "sun")) {
Luminoscity 0:c02f01feda7b 29 int beatsRef[] = {2,4,4,5,2,2,2,5,4,2,4,4,8,1,2,4,4,1,4,4,4,4};
Luminoscity 0:c02f01feda7b 30 notes = "CbCaCabC CbCa aba Cba ";
Luminoscity 0:c02f01feda7b 31 int rangeRef[] = {6,5,6,5,6,5,5,6,0,6,5,6,5,0,5,5,5,0,6,5,5,0};
Luminoscity 0:c02f01feda7b 32 tempo = 150;
Luminoscity 0:c02f01feda7b 33 betweenWait = 1;
Luminoscity 0:c02f01feda7b 34 length = sizeof(beatsRef) / sizeof(beatsRef[0]);
Luminoscity 0:c02f01feda7b 35 for (int i = 0; i < length; ++i) {
Luminoscity 0:c02f01feda7b 36 beats[i] = beatsRef[i];
Luminoscity 0:c02f01feda7b 37 range[i] = rangeRef[i];
Luminoscity 0:c02f01feda7b 38 }
Luminoscity 0:c02f01feda7b 39 }
Luminoscity 0:c02f01feda7b 40 else if (!strcmp(choice, "william")) {
Luminoscity 0:c02f01feda7b 41 int beatsRef[] = {1,1,2,1,1,2,1,1,2,2,2,1,1,2,1,1,2,1,1,2,2,2,1,1,2,1,1,2,1,1,2,2,2,1,1,5,1,1,1,2,2,2,4};
Luminoscity 0:c02f01feda7b 42 notes = "ddddddddgabdddddgbbaFdddddddddgabgbdcbagbg ";
Luminoscity 0:c02f01feda7b 43 int rangeRef[] = {5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,5,5,5,5,5,0};
Luminoscity 0:c02f01feda7b 44 tempo = 90;
Luminoscity 0:c02f01feda7b 45 betweenWait = 20000;
Luminoscity 0:c02f01feda7b 46 length = sizeof(beatsRef) / sizeof(beatsRef[0]);
Luminoscity 0:c02f01feda7b 47 for (int i = 0; i < length; ++i) {
Luminoscity 0:c02f01feda7b 48 beats[i] = beatsRef[i];
Luminoscity 0:c02f01feda7b 49 range[i] = rangeRef[i];
Luminoscity 0:c02f01feda7b 50 }
Luminoscity 0:c02f01feda7b 51 }
Luminoscity 0:c02f01feda7b 52 else if (!strcmp(choice, "circus")) {
Luminoscity 0:c02f01feda7b 53 int beatsRef[] = {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4};
Luminoscity 0:c02f01feda7b 54 notes = "cCdDefFgGaAbcCdDefFgGaAbcCdDefFgGaAbc ";
Luminoscity 0:c02f01feda7b 55 int rangeRef[] = {4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,7,0};
Luminoscity 1:3595fce69880 56 tempo = 50;
Luminoscity 0:c02f01feda7b 57 betweenWait = 1;
Luminoscity 0:c02f01feda7b 58 length = sizeof(beatsRef) / sizeof(beatsRef[0]);
Luminoscity 0:c02f01feda7b 59 for (int i = 0; i < length; ++i) {
Luminoscity 0:c02f01feda7b 60 beats[i] = beatsRef[i];
Luminoscity 0:c02f01feda7b 61 range[i] = rangeRef[i];
Luminoscity 0:c02f01feda7b 62 }
Luminoscity 0:c02f01feda7b 63 }
Luminoscity 0:c02f01feda7b 64 else { //rain
Luminoscity 0:c02f01feda7b 65 int beatsRef[] = {4,2,4,2,4,2,4,2,4,2,3,1,2,2,2,2,2,2,2,4};
Luminoscity 0:c02f01feda7b 66 notes = "ecdbcabgacbcdecdbca ";
Luminoscity 0:c02f01feda7b 67 int rangeRef[] = {6,6,6,5,6,5,5,5,5,6,5,6,6,6,6,6,5,6,5,0};
Luminoscity 0:c02f01feda7b 68 tempo = 120;
Luminoscity 0:c02f01feda7b 69 betweenWait = 1;
Luminoscity 0:c02f01feda7b 70 length = sizeof(beatsRef) / sizeof(beatsRef[0]);
Luminoscity 0:c02f01feda7b 71 for (int i = 0; i < length; ++i) {
Luminoscity 0:c02f01feda7b 72 beats[i] = beatsRef[i];
Luminoscity 0:c02f01feda7b 73 range[i] = rangeRef[i];
Luminoscity 0:c02f01feda7b 74 }
Luminoscity 0:c02f01feda7b 75 }
Luminoscity 0:c02f01feda7b 76 }
Luminoscity 0:c02f01feda7b 77
Luminoscity 0:c02f01feda7b 78 void Song::setTempo(int setT) {
Luminoscity 0:c02f01feda7b 79 tempo = setT;
Luminoscity 0:c02f01feda7b 80 }
Luminoscity 0:c02f01feda7b 81
Luminoscity 0:c02f01feda7b 82