const word NOTE_B0 = 31;
const word NOTE_C1 = 33;
const word NOTE_CS1 = 35;
const word NOTE_D1 = 37;
const word NOTE_DS1 = 39;
const word NOTE_E1 = 41;
const word NOTE_F1 = 44;
const word NOTE_FS1 = 46;
const word NOTE_G1 = 49;
const word NOTE_GS1 = 52;
const word NOTE_A1 = 55;
const word NOTE_AS1 = 58;
const word NOTE_B1 = 62;
const word NOTE_C2 = 65;
const word NOTE_CS2 = 69;
const word NOTE_D2 = 73;
const word NOTE_DS2 = 78;
const word NOTE_E2 = 82;
const word NOTE_F2 = 87;
const word NOTE_FS2 = 93;
const word NOTE_G2 = 98;
const word NOTE_GS2 = 104;
const word NOTE_A2 = 110;
const word NOTE_AS2 = 117;
const word NOTE_B2 = 123;
const word NOTE_C3 = 131;
const word NOTE_CS3 = 139;
const word NOTE_D3 = 147;
const word NOTE_DS3 = 156;
const word NOTE_E3 = 165;
const word NOTE_F3 = 175;
const word NOTE_FS3 = 185;
const word NOTE_G3 = 196;
const word NOTE_GS3 = 208;
const word NOTE_A3 = 220;
const word NOTE_AS3 = 233;
const word NOTE_B3 = 247;
const word NOTE_C4 = 262;
const word NOTE_CS4 = 277;
const word NOTE_D4 = 294;
const word NOTE_DS4 = 311;
const word NOTE_E4 = 330;
const word NOTE_F4 = 349;
const word NOTE_FS4 = 370;
const word NOTE_G4 = 392;
const word NOTE_GS4 = 415;
const word NOTE_A4 = 440;
const word NOTE_AS4 = 466;
const word NOTE_B4 = 494;
const word NOTE_C5 = 523;
const word NOTE_CS5 = 554;
const word NOTE_D5 = 587;
const word NOTE_DS5 = 622;
const word NOTE_E5 = 659;
const word NOTE_F5 = 698;
const word NOTE_FS5 = 740;
const word NOTE_G5 = 784;
const word NOTE_GS5 = 831;
const word NOTE_A5 = 880;
const word NOTE_AS5 = 932;
const word NOTE_B5 = 988;
const word NOTE_C6 = 1047;
const word NOTE_CS6 = 1109;
const word NOTE_D6 = 1175;
const word NOTE_DS6 = 1245;
const word NOTE_E6 = 1319;
const word NOTE_F6 = 1397;
const word NOTE_FS6 = 1480;
const word NOTE_G6 = 1568;
const word NOTE_GS6 = 1661;
const word NOTE_A6 = 1760;
const word NOTE_AS6 = 1865;
const word NOTE_B6 = 1976;
const word NOTE_C7 = 2093;
const word NOTE_CS7 = 2217;
const word NOTE_D7 = 2349;
const word NOTE_DS7 = 2489;
const word NOTE_E7 = 2637;
const word NOTE_F7 = 2794;
const word NOTE_FS7 = 2960;
const word NOTE_G7 = 3136;
const word NOTE_GS7 = 3322;
const word NOTE_A7 = 3520;
const word NOTE_AS7 = 3729;
const word NOTE_B7 = 3951;
const word NOTE_C8 = 4186;
const word NOTE_CS8 = 4435;
const word NOTE_D8 = 4699;
const word NOTE_DS8 = 4978;
const word REST = 0;
#define BUZZER_PIN 13
const word PROGMEM melody[] = {
NOTE_E6, NOTE_DS6, NOTE_D6, NOTE_CS6, NOTE_D6, NOTE_CS6, NOTE_C6, NOTE_B5,
NOTE_C6, NOTE_B5, NOTE_AS5, NOTE_A5, NOTE_GS5, NOTE_G5, NOTE_FS5, NOTE_F5,
NOTE_E5, NOTE_DS5, NOTE_D5, NOTE_CS5, NOTE_D5, NOTE_CS5, NOTE_C5, NOTE_B4,
//4
NOTE_C5, NOTE_B4, NOTE_AS4, NOTE_A4, NOTE_GS4, NOTE_G4, NOTE_FS4, NOTE_F4,
NOTE_E4, NOTE_DS4, NOTE_D4, NOTE_CS4, NOTE_D4, NOTE_CS4, NOTE_C4, NOTE_B3,
NOTE_E4, NOTE_DS4, NOTE_D4, NOTE_CS4, NOTE_D4, NOTE_CS4, NOTE_C4, NOTE_B3,
NOTE_E4, NOTE_DS4, NOTE_DS4, NOTE_CS4, NOTE_C4, NOTE_B3, NOTE_AS3, NOTE_A3,
//8
NOTE_GS3, NOTE_A3, NOTE_AS3, NOTE_B3, NOTE_C4, NOTE_CS4, NOTE_D4, NOTE_DS4,
NOTE_E4, NOTE_DS4, NOTE_D4, NOTE_CS4, NOTE_C4, NOTE_F4, NOTE_E4, NOTE_DS4,
NOTE_E4, NOTE_DS4, NOTE_D4, NOTE_CS4, NOTE_C4, NOTE_CS4, NOTE_D4, NOTE_DS4,
//11
NOTE_E4, NOTE_DS4, NOTE_D4, NOTE_CS4, NOTE_C4, NOTE_F4, NOTE_D4, NOTE_DS4,
NOTE_E4, NOTE_DS4, NOTE_D4, NOTE_CS4, NOTE_C4, NOTE_CS4, NOTE_D4, NOTE_DS4,
NOTE_E4, NOTE_DS4, NOTE_D4, NOTE_CS4, NOTE_C4, NOTE_CS4, NOTE_C4, NOTE_B3,
NOTE_C4, NOTE_CS4, NOTE_D4, NOTE_DS4, NOTE_E4, NOTE_F4, NOTE_E4, NOTE_DS4,
//15
NOTE_E4, NOTE_DS4, NOTE_D4, NOTE_CS4, NOTE_D4, NOTE_CS4, NOTE_C4, NOTE_B3,
NOTE_C4, NOTE_CS4, NOTE_D4, NOTE_DS4, NOTE_E4, NOTE_FS4, NOTE_G4, NOTE_GS4,
NOTE_A4, NOTE_GS4, NOTE_G4, NOTE_FS4, NOTE_F4, NOTE_AS4, NOTE_A4, NOTE_GS4,
//18
NOTE_G4, NOTE_GS4, NOTE_G4, NOTE_FS4, NOTE_F4, NOTE_FS4, NOTE_G4, NOTE_GS4,
NOTE_A4, NOTE_GS4, NOTE_G4, NOTE_FS4, NOTE_F4, NOTE_AS4, NOTE_A4, NOTE_GS4,
NOTE_A4, NOTE_GS4, NOTE_G4, NOTE_FS4, NOTE_F4, NOTE_FS4, NOTE_G4, NOTE_GS4,
//21
NOTE_A4, NOTE_GS4, NOTE_G4, NOTE_FS4, NOTE_F4, NOTE_FS4, NOTE_F4, NOTE_E4,
NOTE_F4, NOTE_FS4, NOTE_G4, NOTE_GS4, NOTE_A4, NOTE_AS4, NOTE_A4, NOTE_G4,
NOTE_A4, NOTE_GS4, NOTE_G4, NOTE_FS4, NOTE_F4, NOTE_E4, NOTE_DS4, NOTE_E4,
NOTE_F4, NOTE_FS4, NOTE_G4, NOTE_GS4, NOTE_A4, NOTE_AS4, NOTE_A4, NOTE_G4,
//25
NOTE_A4, NOTE_A3, NOTE_A3, NOTE_A3, NOTE_A3, NOTE_A3, NOTE_A3, NOTE_A3,
NOTE_AS3, NOTE_GS3, NOTE_A3, NOTE_GS3, NOTE_AS3, NOTE_GS3, NOTE_A3, NOTE_GS3,
NOTE_A3, NOTE_A3, NOTE_A3, NOTE_A3, NOTE_A3, NOTE_A3, NOTE_A3, NOTE_A3,
NOTE_AS3, NOTE_GS3, NOTE_A3, NOTE_GS3, NOTE_AS3, NOTE_GS3, NOTE_A3, NOTE_GS3,
//29
NOTE_AS3, NOTE_AS3, NOTE_A3, NOTE_GS3, NOTE_AS3, NOTE_AS3, NOTE_A3, NOTE_GS3,
NOTE_AS3, NOTE_AS3, NOTE_A3, NOTE_GS3, NOTE_AS3, NOTE_AS3, NOTE_A3, NOTE_GS3,
NOTE_AS3, NOTE_AS3, NOTE_B3, NOTE_CS4, NOTE_CS4, NOTE_C4, NOTE_B3, NOTE_AS3,
//32
NOTE_A3, NOTE_AS3, NOTE_B3, NOTE_C4, NOTE_CS4, NOTE_D4, NOTE_DS4, NOTE_E4,
NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4,
NOTE_DS4, NOTE_CS4, NOTE_DS4, NOTE_CS4, NOTE_DS4, NOTE_CS4, NOTE_DS4, NOTE_CS4,
NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4,
NOTE_DS4, NOTE_CS4, NOTE_DS4, NOTE_CS4, NOTE_DS4, NOTE_CS4, NOTE_DS4, NOTE_CS4,
//37
NOTE_D4, NOTE_DS4, NOTE_D4, NOTE_CS4, NOTE_D4, NOTE_DS4, NOTE_D4, NOTE_CS4,
NOTE_D4, NOTE_DS4, NOTE_D4, NOTE_CS4, NOTE_D4, NOTE_DS4, NOTE_D4, NOTE_CS4,
NOTE_D4, NOTE_DS4, NOTE_E4, NOTE_F4, NOTE_FS4, NOTE_F4, NOTE_E4, NOTE_DS4,
NOTE_D4, NOTE_DS4, NOTE_E4, NOTE_F4, NOTE_FS4, NOTE_G4, NOTE_GS4, NOTE_A4,
//41
NOTE_D5, NOTE_CS5, NOTE_C5, NOTE_B4, NOTE_AS4, NOTE_DS5, NOTE_D5, NOTE_CS5,
NOTE_D5, NOTE_CS5, NOTE_C5, NOTE_B4, NOTE_AS4, NOTE_B4, NOTE_C5, NOTE_CS5,
NOTE_D5, NOTE_CS5, NOTE_C5, NOTE_B4, NOTE_C5, NOTE_B4, NOTE_AS4, NOTE_A4,
NOTE_AS4, NOTE_B4, NOTE_C5, NOTE_CS5, NOTE_D5, NOTE_DS5, NOTE_E5, NOTE_DS5,
//45
NOTE_E5, NOTE_DS5, NOTE_D5, NOTE_CS5, NOTE_D5, NOTE_CS5, NOTE_C5, NOTE_B4,
NOTE_C5, NOTE_B4, NOTE_AS4, NOTE_A4, NOTE_GS4, NOTE_G4, NOTE_FS4, NOTE_F4,
NOTE_E4, NOTE_F4, NOTE_E4, NOTE_DS4, NOTE_E4, NOTE_F4, NOTE_E4, NOTE_DS4,
NOTE_E4, NOTE_F4, NOTE_E4, NOTE_DS4, NOTE_E4, NOTE_F4, NOTE_E4, NOTE_DS4,
//49
NOTE_E4, NOTE_F4, NOTE_E4, NOTE_DS4, NOTE_E4, NOTE_F4, NOTE_E4, NOTE_DS4,
NOTE_E4, NOTE_F4, NOTE_E4, NOTE_DS4, NOTE_E4, NOTE_F4, NOTE_E4, NOTE_DS4,
// (1/4)
NOTE_DS4, REST, NOTE_E5, NOTE_C5, NOTE_A4, NOTE_F4, NOTE_A4, NOTE_C5,
NOTE_E5, REST, NOTE_E6, NOTE_C6, NOTE_A5, NOTE_F5, NOTE_A5, NOTE_C6,
//59
NOTE_E6, REST, REST, NOTE_E5, REST, REST,
// (2/4)
NOTE_E4, REST, NOTE_E4, NOTE_F4, NOTE_FS4, NOTE_G4,
NOTE_GS4, NOTE_A4, NOTE_AS4, NOTE_B4, NOTE_C5, NOTE_CS5, NOTE_D5, NOTE_DS5,
NOTE_E5, NOTE_DS5, NOTE_D5, NOTE_CS5, NOTE_C5, NOTE_F5, NOTE_E5, NOTE_DS5,
// 65
NOTE_E5, NOTE_DS5, NOTE_D5, NOTE_CS5, NOTE_C5, NOTE_CS5, NOTE_D5, NOTE_DS5,
NOTE_E5, NOTE_DS5, NOTE_D5, NOTE_CS5, NOTE_C5, NOTE_F5, NOTE_E5, NOTE_DS5,
NOTE_E5, NOTE_DS5, NOTE_D5, NOTE_CS5, NOTE_C5, NOTE_CS5, NOTE_D5, NOTE_DS5,
//68
NOTE_E5, NOTE_DS5, NOTE_D5, NOTE_CS5, NOTE_D5, NOTE_CS5, NOTE_C5, NOTE_B4,
NOTE_C5, NOTE_CS5, NOTE_D5, NOTE_DS5, NOTE_E5, NOTE_F5, NOTE_E5, NOTE_DS5,
NOTE_E5, NOTE_DS5, NOTE_D5, NOTE_CS5, NOTE_D5, NOTE_CS5, NOTE_C5, NOTE_B4,
NOTE_C5, NOTE_CS5, NOTE_D5, NOTE_DS5, NOTE_E5, NOTE_FS5, NOTE_G5, NOTE_GS5,
//72
NOTE_A5, NOTE_GS5, NOTE_G5, NOTE_FS5, NOTE_F5, NOTE_AS5, NOTE_A5, NOTE_GS5,
NOTE_A5, NOTE_GS5, NOTE_G5, NOTE_FS5, NOTE_F5, NOTE_FS5, NOTE_G5, NOTE_GS5,
NOTE_A5, NOTE_GS5, NOTE_G5, NOTE_FS5, NOTE_F5, NOTE_AS5, NOTE_A5, NOTE_GS5,
//75
NOTE_A5, NOTE_GS5, NOTE_G5, NOTE_FS5, NOTE_F5, NOTE_FS5, NOTE_G5, NOTE_GS5,
NOTE_A5, NOTE_GS5, NOTE_G5, NOTE_FS5, NOTE_G5, NOTE_FS5, NOTE_F5, NOTE_E5,
NOTE_F5, NOTE_FS5, NOTE_G5, NOTE_GS5, NOTE_A5, NOTE_AS5, NOTE_A5, NOTE_GS5,
NOTE_A5, NOTE_GS5, NOTE_G5, NOTE_FS5, NOTE_E5, NOTE_F5, NOTE_FS5, NOTE_G5,
// 79
NOTE_GS5, NOTE_A5, NOTE_AS5, NOTE_B5, NOTE_C6, NOTE_CS6, NOTE_D6, NOTE_DS6,
//repeat
NOTE_E6, NOTE_DS6, NOTE_D6, NOTE_CS6, NOTE_C6, NOTE_F6, NOTE_E6, NOTE_DS6,
NOTE_E6, NOTE_DS6, NOTE_D6, NOTE_CS6, NOTE_C6, NOTE_CS6, NOTE_D6, NOTE_DS6,
// 82
NOTE_E6, NOTE_DS6, NOTE_D6, NOTE_CS6, NOTE_C6, NOTE_F6, NOTE_E6, NOTE_DS6,
NOTE_E6, NOTE_DS6, NOTE_D6, NOTE_CS6, NOTE_C6, NOTE_CS6, NOTE_D6, NOTE_DS6,
NOTE_E6, NOTE_GS4, NOTE_A4, NOTE_AS4, NOTE_B4, NOTE_C5, NOTE_CS5,
//85
NOTE_D5, NOTE_CS5, NOTE_C5, NOTE_B4, NOTE_C5, NOTE_B4, NOTE_AS4, NOTE_A4,
NOTE_GS4, NOTE_A4, NOTE_AS4, NOTE_B4, NOTE_C5, NOTE_CS5, NOTE_D5, NOTE_DS5,
NOTE_E5, NOTE_F5, NOTE_E5, NOTE_DS5, NOTE_E5, NOTE_F5, NOTE_E5, NOTE_DS5,
NOTE_E5, NOTE_GS4, NOTE_A4, NOTE_AS4, NOTE_B4, NOTE_C5, NOTE_CS5,
//89
NOTE_D5, NOTE_CS5, NOTE_C5, NOTE_B4, NOTE_C5, NOTE_B4, NOTE_AS4, NOTE_A4,
// 1.exit
NOTE_GS4, NOTE_A4, NOTE_AS4, NOTE_B4, NOTE_C5, NOTE_CS5, NOTE_D5, NOTE_DS5,
NOTE_E5, NOTE_FS5, NOTE_GS5, NOTE_A5, NOTE_B5, NOTE_C6, NOTE_D6, NOTE_DS6,
//repeat
NOTE_E6, NOTE_DS6, NOTE_D6, NOTE_CS6, NOTE_C6, NOTE_F6, NOTE_E6, NOTE_DS6,
NOTE_E6, NOTE_DS6, NOTE_D6, NOTE_CS6, NOTE_C6, NOTE_CS6, NOTE_D6, NOTE_DS6,
// 82
NOTE_E6, NOTE_DS6, NOTE_D6, NOTE_CS6, NOTE_C6, NOTE_F6, NOTE_E6, NOTE_DS6,
NOTE_E6, NOTE_DS6, NOTE_D6, NOTE_CS6, NOTE_C6, NOTE_CS6, NOTE_D6, NOTE_DS6,
NOTE_E6, NOTE_GS4, NOTE_A4, NOTE_AS4, NOTE_B4, NOTE_C5, NOTE_CS5,
//85
NOTE_D5, NOTE_CS5, NOTE_C5, NOTE_B4, NOTE_C5, NOTE_B4, NOTE_AS4, NOTE_A4,
NOTE_GS4, NOTE_A4, NOTE_AS4, NOTE_B4, NOTE_C5, NOTE_CS5, NOTE_D5, NOTE_DS5,
NOTE_E5, NOTE_F5, NOTE_E5, NOTE_DS5, NOTE_E5, NOTE_F5, NOTE_E5, NOTE_DS5,
NOTE_E5, NOTE_GS4, NOTE_A4, NOTE_AS4, NOTE_B4, NOTE_C5, NOTE_CS5,
//89
NOTE_D5, NOTE_CS5, NOTE_C5, NOTE_B4, NOTE_C5, NOTE_B4, NOTE_AS4, NOTE_A4,
// 2.exit
NOTE_GS4, NOTE_A4, NOTE_AS4, NOTE_B4, NOTE_C5, NOTE_CS5, NOTE_D5, NOTE_DS5,
//93
NOTE_E5, NOTE_F5, NOTE_E5, NOTE_DS5, NOTE_E5, NOTE_FS5, NOTE_G5, NOTE_GS5,
NOTE_A5, NOTE_GS5, NOTE_G5, NOTE_FS5, NOTE_G5, NOTE_FS5, NOTE_F5, NOTE_E5,
NOTE_F5, NOTE_E5, NOTE_DS5, NOTE_D5, NOTE_CS5, NOTE_C5, NOTE_B4, NOTE_AS4,
NOTE_A4, NOTE_GS4, NOTE_G4, NOTE_FS4, NOTE_G4, NOTE_FS4, NOTE_F4, NOTE_E4,
//97
NOTE_F4, NOTE_E4, NOTE_DS4, NOTE_D4, NOTE_CS4, NOTE_C4, NOTE_B3, NOTE_AS3,
NOTE_A3, NOTE_AS3, NOTE_A3, NOTE_GS3, NOTE_A3, NOTE_AS3, NOTE_A3, NOTE_GS3,
NOTE_A3, NOTE_AS3, NOTE_A3, NOTE_GS3, NOTE_A3, NOTE_B3, NOTE_C4, NOTE_D4,
NOTE_E4, NOTE_F4, NOTE_E4, NOTE_DS4, NOTE_E4, NOTE_F4, NOTE_E4, NOTE_DS4,
//101
NOTE_E4, NOTE_F4, NOTE_E4, NOTE_DS4, NOTE_E4, NOTE_FS4, NOTE_G4, NOTE_GS4,
NOTE_A4, NOTE_G4, NOTE_FS4, NOTE_F4, NOTE_E4, NOTE_DS4, NOTE_D4, NOTE_CS4,
NOTE_C4, NOTE_B3, NOTE_AS3, NOTE_GS3, NOTE_A3, NOTE_AS3, NOTE_B3, NOTE_C4,
NOTE_CS4, NOTE_D4, NOTE_DS4, NOTE_E4, NOTE_F4, NOTE_FS4, NOTE_G4, NOTE_GS4,
//105
NOTE_A4, NOTE_AS4, NOTE_B4, NOTE_C5, NOTE_CS5, NOTE_D5, NOTE_DS5, NOTE_E5,
NOTE_A5, REST, NOTE_E6, REST, NOTE_A4, REST, NOTE_E4, REST,
NOTE_A3,
};
const byte PROGMEM durations[] = {
16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16,
//4
16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16,
//8
16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16,
//11
16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16,
//15
16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16,
//18
16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16,
//21
16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16,
//25
16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16,
//29
16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16,
//32
16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16,
//37
16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16,
//41
16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16,
//45
16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16,
//49
16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16,
//(1/4)
5, 16, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8, 8, 8, 8,
//59
8, 8, 8, 8, 8, 8,
//(2/4)
8, 8, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16,
//65
16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16,
//68
16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16,
//72
16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16,
//75
16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16,
//79
16, 16, 16, 16, 16, 16, 16, 16,
// repeat
16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16,
//82
16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16,
8, 16, 16, 16, 16, 16, 16,
//85
16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16,
8, 16, 16, 16, 16, 16, 16,
//89
16, 16, 16, 16, 16, 16, 16, 16,
//1. exit
16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16,
// repeat
16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16,
//82
16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16,
8, 16, 16, 16, 16, 16, 16,
//85
16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16,
8, 16, 16, 16, 16, 16, 16,
//89
16, 16, 16, 16, 16, 16, 16, 16,
//2. exit
16, 16, 16, 16, 16, 16, 16, 16,
//93
16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16,
//97
16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16,
//101
16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16,
//105
16, 16, 16, 16, 16, 16, 16, 16,
8, 8, 8, 8, 8, 8, 8, 8,
8,
};
void setup()
{
pinMode(BUZZER_PIN, OUTPUT);
Serial.begin(9600);
}
void loop()
{
int size = sizeof(durations) / sizeof(byte);
int note;
static bool PLAY = true;
if (PLAY == true)
{
for (note = 0; note < size; note++) {
int duration = 1000 / pgm_read_byte_near(durations + note);
//to distinguish the notes, set a minimum time between them.
//the note's duration + 30% seems to work well:
int pauseBetweenNotes = duration * 1.30;
float f, n;
f = pgm_read_word_near(melody + note);
n = 49 + 12 * log(f / 440.0) / log(2) ;
n += -12.0 + 84.0 * analogRead(A0) / 1024.0; //transpose
f = 440 * pow(2, (n - 49) / 12.0);
Serial.println(f);
tone(BUZZER_PIN, f, duration - duration * 0.50);
delay(pauseBetweenNotes);
//stop the tone playing:
noTone(BUZZER_PIN);
}
Serial.println(note);
}
PLAY = false;
delay(5000);
}