//Doki Doki Forever - Chorus (Buzzer Pin 2)
#define NOTE_C4 262
#define NOTE_CS4 277
#define NOTE_D4 294
#define NOTE_DS4 311
#define NOTE_E4 330
#define NOTE_F4 349
#define NOTE_FS4 370
#define NOTE_G4 392
#define NOTE_GS4 415
#define NOTE_A4 440
#define NOTE_AS4 466
#define NOTE_B4 494
#define NOTE_C5 523
#define NOTE_CS5 554
#define NOTE_D5 587
#define NOTE_DS5 622
#define NOTE_E5 659
#define NOTE_F5 698
#define NOTE_FS5 740
#define NOTE_G5 784
#define NOTE_GS5 831
#define NOTE_A5 880
#define NOTE_AS5 932
#define NOTE_B5 988
#define REST 0
int buzzer = 2; // Updated to Pin 2
int tempo = 160;
int melody[] = {
NOTE_FS5,8, NOTE_FS5,8, REST,8, NOTE_FS5,8, NOTE_E5,8, NOTE_FS5,8, NOTE_G5,4,
NOTE_E5,8, NOTE_E5,8, REST,8, NOTE_E5,8, NOTE_D5,8, NOTE_E5,8, NOTE_FS5,4,
NOTE_D5,8, NOTE_D5,8, REST,8, NOTE_D5,8, NOTE_CS5,8, NOTE_D5,8, NOTE_E5,4,
NOTE_A4,8, NOTE_B4,8, NOTE_CS5,8, NOTE_D5,8, NOTE_E5,4, REST,4,
NOTE_FS5,8, NOTE_FS5,8, REST,8, NOTE_FS5,8, NOTE_E5,8, NOTE_FS5,8, NOTE_G5,4,
NOTE_E5,8, NOTE_E5,8, REST,8, NOTE_E5,8, NOTE_D5,8, NOTE_E5,8, NOTE_FS5,4,
NOTE_D5,8, NOTE_D5,8, REST,8, NOTE_D5,8, NOTE_CS5,8, NOTE_D5,8, NOTE_E5,4,
NOTE_A5,4, NOTE_FS5,4, NOTE_D5,2
};
// Fixed the note calculation bug
int totalBytes = sizeof(melody);
int totalElements = totalBytes / sizeof(melody[0]);
int notes = totalElements / 2;
int wholenote = (60000 * 4) / tempo;
int divider = 0, noteDuration = 0;
int catbuzzerz =2;
void setup() {
// put your setup code here, to run once:
pinMode (catbuzzerz, OUTPUT);
for (int thisNote = 0; thisNote < notes * 2; thisNote = thisNote + 2) {
divider = melody[thisNote + 1];
if (divider > 0) {
noteDuration = (wholenote) / divider;
} else if (divider < 0) {
noteDuration = (wholenote) / abs(divider);
noteDuration *= 1.5;
}
if (melody[thisNote] != REST) {
tone(buzzer, melody[thisNote], noteDuration * 0.9);
} else {
noTone(buzzer);
}
delay(noteDuration);
noTone(buzzer);
}
}
void loop() {
// put your main code here, to run repeatedly:
}