#define NOTE_D4 294
#define NOTE_E4 330
#define NOTE_F4 349
#define NOTE_G4 392
#define NOTE_A4 440
#define NOTE_A4S 466
#define NOTE_B4 494
#define NOTE_C5 523
#define NOTE_D5 587
#define NOTE_E5 659
#define NOTE_F5 698
#define NOTE_G5 784
#define NOTE_A5 880
#define NOTE_B5 988
#define NOTE_REST 0
#define BPM 120
const int buzzer = A0;
const int ledPins[] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
int melody[] = {
NOTE_D4, NOTE_REST, NOTE_F4, NOTE_REST, NOTE_A4, NOTE_REST, NOTE_B4, NOTE_REST,
NOTE_G4, NOTE_REST, NOTE_A4, NOTE_REST, NOTE_B4, NOTE_REST, NOTE_C5, NOTE_REST,
NOTE_G4, NOTE_REST, NOTE_A4, NOTE_REST, NOTE_B4, NOTE_REST, NOTE_C5, NOTE_REST,
NOTE_D5, NOTE_REST, NOTE_E5, NOTE_REST, NOTE_F5, NOTE_REST, NOTE_E5, NOTE_REST,
NOTE_D5, NOTE_REST, NOTE_C5, NOTE_REST, NOTE_B4, NOTE_REST, NOTE_A4, NOTE_REST,
NOTE_G4, NOTE_REST, NOTE_A4, NOTE_REST, NOTE_E4, NOTE_REST, NOTE_G4, NOTE_REST,
NOTE_A4, NOTE_REST, NOTE_B4, NOTE_REST, NOTE_G4, NOTE_REST, NOTE_A4, NOTE_REST,
NOTE_B4, NOTE_REST, NOTE_C5, NOTE_REST, NOTE_D5, NOTE_REST, NOTE_E5, NOTE_REST,
NOTE_F5, NOTE_REST, NOTE_E5, NOTE_REST, NOTE_D5, NOTE_REST, NOTE_C5, NOTE_REST,
NOTE_B4, NOTE_REST, NOTE_A4, NOTE_REST, NOTE_B4, NOTE_REST, NOTE_C5, NOTE_REST,
NOTE_D5, NOTE_REST, NOTE_E5, NOTE_REST, NOTE_F5, NOTE_REST, NOTE_E5, NOTE_REST,
NOTE_D5, NOTE_REST, NOTE_C5, NOTE_REST, NOTE_B4, NOTE_REST, NOTE_A4, NOTE_REST,
NOTE_G4, NOTE_REST, NOTE_A4, NOTE_REST, NOTE_E4, NOTE_REST, NOTE_G4, NOTE_REST,
NOTE_A4, NOTE_REST, NOTE_B4, NOTE_REST, NOTE_G4, NOTE_REST, NOTE_A4, NOTE_REST,
NOTE_B4, NOTE_REST, NOTE_C5, NOTE_REST, NOTE_D5, NOTE_REST, NOTE_E5, NOTE_REST,
NOTE_F5, NOTE_REST, NOTE_E5, NOTE_REST, NOTE_D5, NOTE_REST, NOTE_C5, NOTE_REST,
NOTE_B4, NOTE_REST, NOTE_A4, NOTE_REST, NOTE_B4, NOTE_REST, NOTE_C5, NOTE_REST,
NOTE_D5, NOTE_REST, NOTE_E5, NOTE_REST, NOTE_F5, NOTE_REST, NOTE_E5, NOTE_REST,
NOTE_D5, NOTE_REST, NOTE_C5, NOTE_REST, NOTE_B4, NOTE_REST, NOTE_A4, NOTE_REST,
NOTE_G4
};
int noteDurations[] = {
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, 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
};
void setup() {
pinMode(buzzer, OUTPUT);
for (int i = 0; i < 12; i++) {
pinMode(ledPins[i], OUTPUT);
}
}
void loop() {
// Iterate over the melody
for (int i = 0; i < sizeof(melody) / sizeof(melody[0]); i++) {
int duration = (60000 / BPM) / noteDurations[i];
tone(buzzer, melody[i], duration * 0.9);
digitalWrite(ledPins[i % 12], HIGH);
delay(duration * 1.1);
noTone(buzzer);
digitalWrite(ledPins[i % 12], LOW);
}
delay(2000);
}