#define TONE_USE_INT
#define TONE_PITCH 440
#include <TonePitch.h>
#define REST 0
int melody[] = {
NOTE_A4, NOTE_D5, NOTE_E5, NOTE_FS5, NOTE_A5, NOTE_A5, NOTE_B5, NOTE_A5, NOTE_FS5, NOTE_E5, NOTE_FS5, NOTE_E5, NOTE_D5,
NOTE_A4 ,NOTE_D5, NOTE_A5, NOTE_FS5, REST, NOTE_FS5, REST, NOTE_E5, NOTE_D5, NOTE_A4, NOTE_D5, NOTE_E5, NOTE_FS5, NOTE_G5, NOTE_GS5, NOTE_A5,
NOTE_A4 , NOTE_D5, NOTE_E5, NOTE_FS5, NOTE_A5, NOTE_A5, NOTE_B5, NOTE_A5, NOTE_FS5, NOTE_E5, NOTE_FS5, NOTE_E5, NOTE_D5,
NOTE_A4, NOTE_D5, NOTE_A5, NOTE_A5, NOTE_G5, NOTE_FS5, REST, REST, NOTE_FS5, NOTE_E5, NOTE_D5,REST, NOTE_D5, REST, REST,
NOTE_A4, NOTE_B4, NOTE_D5, NOTE_E5, NOTE_D5, NOTE_E5, NOTE_FS5, NOTE_A4, NOTE_B4, NOTE_A4, REST, NOTE_B4, NOTE_D5, NOTE_E5, NOTE_FS5,
NOTE_A4, NOTE_B4, NOTE_D5, NOTE_E5, NOTE_D5, NOTE_E5, NOTE_FS5, NOTE_A4, NOTE_B4, NOTE_A4, REST, NOTE_B4, NOTE_D5, NOTE_E5, NOTE_FS5,
REST, NOTE_G5, NOTE_A5, NOTE_A5, NOTE_A5, NOTE_A5, REST, NOTE_G5, NOTE_FS5,
NOTE_G5, NOTE_A5, NOTE_A5, NOTE_A5, NOTE_A5, REST, NOTE_G5, NOTE_FS5, NOTE_A5, NOTE_B5, NOTE_A5, NOTE_E5, NOTE_FS5, NOTE_A5, NOTE_FS5, NOTE_D5, REST,
NOTE_A5, REST, NOTE_G5, REST, NOTE_FS5,REST, NOTE_D5, NOTE_A4, REST,
NOTE_A5, REST, NOTE_G5, REST, NOTE_FS5,REST, NOTE_D5, NOTE_A4, REST,
NOTE_A5, REST, NOTE_G5, REST, NOTE_FS5,REST, NOTE_D5, NOTE_A4, REST,
NOTE_A5, REST, NOTE_G5, REST, NOTE_FS5,REST, NOTE_D5, NOTE_E5, REST,
NOTE_B5, NOTE_A5, NOTE_FS5, NOTE_E5, NOTE_D5, NOTE_CS5, REST, NOTE_D5, NOTE_E5, NOTE_FS5, REST, NOTE_A5, NOTE_FS5, NOTE_CS5,
NOTE_D5, REST, NOTE_B4, NOTE_D5, NOTE_E5, NOTE_FS5, NOTE_B5, NOTE_A5, NOTE_FS5, NOTE_E5, NOTE_FS5, NOTE_D5,
NOTE_B4, NOTE_D5, NOTE_E5, NOTE_FS5, NOTE_E5, NOTE_D5, NOTE_E5, NOTE_D5, NOTE_FS5, NOTE_A5, REST,
REST, NOTE_G5, NOTE_A5, NOTE_A5, NOTE_A5, NOTE_A5, REST, NOTE_G5, NOTE_FS5,
NOTE_G5, NOTE_A5, NOTE_A5, NOTE_A5, NOTE_A5, REST, NOTE_G5, NOTE_FS5, NOTE_A5, NOTE_B5, NOTE_A5, NOTE_E5, NOTE_FS5, NOTE_A5, NOTE_FS5, NOTE_D5, REST,
REST, NOTE_G5, NOTE_A5, NOTE_A5, NOTE_A5, NOTE_A5, REST, NOTE_G5, NOTE_FS5,
NOTE_G5, NOTE_A5, NOTE_A5, NOTE_A5, NOTE_A5, REST, NOTE_G5, NOTE_FS5, NOTE_A5, NOTE_FS5, NOTE_FS5, REST, NOTE_G5, NOTE_FS5,NOTE_D5,NOTE_D5, REST, NOTE_D5, REST,
//REST, NOTE_G5, NOTE_A5, NOTE_A5, NOTE_A5, NOTE_A5, REST, NOTE_G5, NOTE_FS5,
//NOTE_G5, NOTE_A5, NOTE_A5, NOTE_A5, NOTE_A5, REST, NOTE_G5, NOTE_FS5, NOTE_A5, NOTE_B5, NOTE_A5, NOTE_E5, NOTE_FS5, NOTE_A5, NOTE_FS5, NOTE_D5, REST,
//REST, NOTE_G5, NOTE_A5, NOTE_A5, NOTE_A5, NOTE_A5, REST, NOTE_G5, NOTE_FS5,
//NOTE_G5, NOTE_A5, NOTE_A5, NOTE_A5, NOTE_A5, REST, NOTE_G5, NOTE_FS5, NOTE_A5, NOTE_B5, NOTE_A5, NOTE_E5, NOTE_FS5, NOTE_A5, NOTE_FS5, NOTE_D5, REST,
NOTE_A4, NOTE_B4, NOTE_D5, NOTE_E5, NOTE_D5, NOTE_E5, NOTE_FS5, NOTE_A4, NOTE_B4, NOTE_A4, REST, NOTE_B4, NOTE_D5, NOTE_E5, NOTE_FS5,
NOTE_A4, NOTE_B4, NOTE_D5, NOTE_E5, NOTE_D5, NOTE_E5, NOTE_FS5, NOTE_A4, NOTE_B4, NOTE_A4, REST, NOTE_B4, NOTE_D5, NOTE_E5, NOTE_FS5,
REST, NOTE_G5, NOTE_A5, NOTE_A5, NOTE_A5, NOTE_A5, REST, NOTE_G5, NOTE_FS5,
NOTE_G5, NOTE_A5, NOTE_A5, NOTE_A5, NOTE_A5, REST, NOTE_G5, NOTE_FS5, NOTE_A5, NOTE_B5, NOTE_A5, NOTE_E5, NOTE_FS5, NOTE_A5, NOTE_FS5, NOTE_D5, REST,
// NOTE_A4, NOTE_B4, NOTE_D5, NOTE_E5, NOTE_D5, NOTE_E5, NOTE_FS5, NOTE_A4, NOTE_B4, NOTE_A4, REST, NOTE_B4, NOTE_D5, NOTE_E5, NOTE_FS5,
// NOTE_A4, NOTE_B4, NOTE_D5, NOTE_E5, NOTE_D5, NOTE_E5, NOTE_FS5, NOTE_A4, NOTE_B4, NOTE_A4, REST, NOTE_B4, NOTE_D5, NOTE_E5, NOTE_FS5,
// REST, NOTE_G5, NOTE_A5, NOTE_A5, NOTE_A5, NOTE_A5, REST, NOTE_G5, NOTE_FS5,
// NOTE_G5, NOTE_A5, NOTE_A5, NOTE_A5, NOTE_A5, REST, NOTE_G5, NOTE_FS5, NOTE_A5, NOTE_B5, NOTE_A5, NOTE_E5, NOTE_FS5, NOTE_A5, NOTE_FS5, NOTE_D5, REST,
REST, NOTE_FS4, NOTE_FS4, NOTE_FS4, NOTE_FS4, REST, NOTE_FS4, NOTE_FS4,
REST, NOTE_E4, NOTE_E4, NOTE_E4, NOTE_FS4, REST, NOTE_FS4, NOTE_FS4,
REST, NOTE_FS4, NOTE_FS4, NOTE_FS4, NOTE_FS4, REST, NOTE_FS4, NOTE_F4,
REST, NOTE_E4, NOTE_E4, NOTE_E4, NOTE_FS4, REST, NOTE_FS4, NOTE_FS4,
REST, NOTE_FS4, NOTE_FS4, NOTE_FS4, NOTE_FS4, REST, NOTE_FS4, NOTE_FS4,
REST, NOTE_E4, NOTE_E4, NOTE_E4, NOTE_F4, REST, NOTE_F4, NOTE_F4,
REST, NOTE_FS4, NOTE_FS4, NOTE_FS4, NOTE_FS4, REST, NOTE_FS4, NOTE_FS4,
REST, NOTE_E4, NOTE_E4, NOTE_E4, NOTE_E4, NOTE_A4, NOTE_D5, NOTE_E5,
NOTE_FS5, REST, NOTE_A5, REST, NOTE_A5, NOTE_B5, NOTE_A5, NOTE_FS5, NOTE_E5,
REST, NOTE_FS5, NOTE_E5, NOTE_D5, REST, NOTE_A4, NOTE_D5, NOTE_A5,
NOTE_FS5, NOTE_FS5, NOTE_E5, NOTE_D5, NOTE_A4, NOTE_D5, NOTE_E5, NOTE_FS5,
REST, NOTE_G5, NOTE_GS5, NOTE_A5, REST, NOTE_A4, NOTE_D5, NOTE_E5,
NOTE_FS5, REST, NOTE_A5, REST, NOTE_A5, NOTE_B5, NOTE_A5, NOTE_FS5, NOTE_E5,
REST, NOTE_FS5, NOTE_E5, NOTE_D5, REST, NOTE_A4, NOTE_D5, NOTE_A5,
NOTE_A4, NOTE_G4, NOTE_FS4, NOTE_FS4, NOTE_E4, NOTE_D4, NOTE_D4, NOTE_D4,
};
int durations[] = { // 1= ตัวกลม 4 จังหวะ 2= ตัวขาว 2 จังหวะ 4 = ตัวดำ 1 จังหวะ 8= เขบ็ด 1 ชั้น 16= เขบ็ด 2 ชั้น
8, 8, 8, 4, 4, 16, 16, 8, 8, 4, 8, 8, 4,
8, 8, 8, 16, 16, 16, 16, 8, 8, 8, 8, 8, 4, 8, 8, 4,
8, 8, 8, 4, 4, 16, 16, 8, 8, 4, 8, 8, 4,
8, 8, 8, 16, 16, 8,8,16, 16, 16, 8, 8, 8, 4, 8,
8,8,8,8,8,8,8,8,8,8,8,8, 8, 8, 4,
8,8,8,8,8,8,8,8,8,8,8,8, 8, 8, 4,
8,8,8,8,8,8,8,8,8,
8,8,8,8,8,8,8,8,8,8,8,8,4,8,4,2,4,
8, 8, 8, 8, 8, 8, 8, 8, 1,
8, 8, 8, 8, 8, 8, 8, 8, 1,
8, 8, 8, 8, 8, 8, 8, 8, 1,
8, 8, 8, 8, 8, 8, 8, 8, 1,
8, 8, 8, 8, 8, 2, 4, 16, 16, 4, 4, 8, 8, 2,
16, 16, 8, 8, 8, 4, 4, 4, 8, 4, 4, 4,
8, 8, 8, 8, 8, 8, 8, 8, 4, 4, 1,
8,8,8,8,8,8,8,8,8,
8,8,8,8,8,8,8,8,8,8,8,8,4,8,4,2,4,
8,8,8,8,8,8,8,8,8,
8,8,8,8,8,8,8,8,16,8,4,16,16,8,8,16,16,4,4,
// 8,8,8,8,8,8,8,8,8,
// 8,8,8,8,8,8,8,8,8,8,8,8,4,8,4,2,4,
// 8,8,8,8,8,8,8,8,8,
// 8,8,8,8,8,8,8,8,8,8,8,8,4,8,4,2,4,
8,8,8,8,8,8,8,8,8,8,8,8, 8, 8, 4,
8,8,8,8,8,8,8,8,8,8,8,8, 8, 8, 4,
8,8,8,8,8,8,8,8,8,
8,8,8,8,8,8,8,8,8,8,8,8,4,8,4,2,4,
// 8,8,8,8,8,8,8,8,8,8,8,8, 8, 8, 4,
// 8,8,8,8,8,8,8,8,8,8,8,8, 8, 8, 4,
// 8,8,8,8,8,8,8,8,8,
// 8,8,8,8,8,8,8,8,8,8,8,8,4,8,4,2,4,
8,8,8,8,8,8,8,8,
8,8,8,8,8,8,8,8,
8,8,8,8,8,8,8,8,
8,8,8,8,8,8,8,8,
8,8,8,8,8,8,8,8,
8,8,8,8,8,8,8,8,
8,8,8,8,8,8,8,8,
8,8,8,8,8,8,8,8,
8,8,8,8,16,16,8,8,8,
8,8,8,8,8,8,8,8,
8,8,8,8,8,8,8,8,
8,8,8,8,8,8,8,8,
8,8,8,8,16,16,8,8,8,
8,8,8,8,8,8,8,8,
8,16,16,4,8,16,16,8,4,
};
// change this to whichever pin you want to use
int buzzer = 5;
int tempo = 170;
void setup() {
pinMode(buzzer, OUTPUT);
}
void loop() {
int size = sizeof(durations) / sizeof(int);
for (int note = 0; note < size; note++) {
//to calculate the note duration, take one second divided by the note type.
//e.g. quarter note = 1000 / 4, eighth note = 1000/8, etc.
//int duration = 1000 / durations[note];
int duration = (int)((1000 * (60 * 4 / tempo)) / durations[note] + 0.);
tone(buzzer, melody[note], duration);
//to distinguish the notes, set a minimum time between them.
//the note's duration + 30% seems to work well:
int pauseBetweenNotes = duration * 1.4;
delay(pauseBetweenNotes);
//stop the tone playing:
noTone(buzzer);}
delay(1000);
}