const int NOTE_A3 = 220;
const int NOTE_B3 = 247;
const int NOTE_C4 = 262;
const int NOTE_D4 = 294;
const int NOTE_E4 = 330;
const int NOTE_FS4 = 370;
const int NOTE_G4 = 392;
const int NOTE_A4 = 440;
const int NOTE_B4 = 494;
const int NOTE_C5 = 523;
const int NOTE_D5 = 587;
const int NOTE_E5 = 659;
const int buzzerPin = 23;
const int wholeNote = 2500;
// ---------- BAIT 1 : nada ----------
int melodyBait[] = {
// Indonesia tanah airku
NOTE_B3, NOTE_C4, NOTE_D4, NOTE_B4, NOTE_B4, NOTE_A4, NOTE_A4, NOTE_G4, NOTE_D4,
// Tanah tumpah darahku
NOTE_D4, NOTE_D4, NOTE_E4, NOTE_D4, NOTE_C4, NOTE_B3, NOTE_A3,
// Di sanalah aku berdiri
NOTE_A3, NOTE_B3, NOTE_C4, NOTE_A4, NOTE_A4, NOTE_G4, NOTE_G4, NOTE_FS4, NOTE_E4,
// Jadi pandu ibuku
NOTE_D4, NOTE_D4, NOTE_FS4, NOTE_E4, NOTE_D4, NOTE_C4, NOTE_B3,
// Indonesia kebangsaanku
NOTE_B3, NOTE_C4, NOTE_D4, NOTE_B4, NOTE_B4, NOTE_A4, NOTE_A4, NOTE_G4, NOTE_D4,
// Bangsa dan tanah airku
NOTE_D4, NOTE_D4, NOTE_E4, NOTE_D4, NOTE_G4, NOTE_A4, NOTE_FS4, NOTE_E4,
// Marilah kita berseru
NOTE_E4, NOTE_E4, NOTE_C5, NOTE_C5, NOTE_B4, NOTE_A4, NOTE_D5, NOTE_G4,
// Indonesia bersatu
NOTE_FS4, NOTE_E4, NOTE_D4, NOTE_C5, NOTE_B4, NOTE_A4, NOTE_G4,
// Hiduplah tanahku
NOTE_D4, NOTE_D4, NOTE_E4, NOTE_C5, NOTE_C5, NOTE_C5,
// Hiduplah negeriku
NOTE_C5, NOTE_C5, NOTE_B4, NOTE_G4, NOTE_G4, NOTE_G4,
// Bangsaku rakyatku semuanya
NOTE_FS4, NOTE_G4, NOTE_A4, NOTE_D5, NOTE_D5, NOTE_D5, NOTE_C5, NOTE_C5, NOTE_B4, NOTE_G4,
// Bangunlah jiwanya
NOTE_D4, NOTE_D4, NOTE_E4, NOTE_C5, NOTE_C5, NOTE_C5,
// Bangunlah badannya
NOTE_C5, NOTE_C5, NOTE_B4, NOTE_G4, NOTE_G4, NOTE_G4,
// Untuk Indonesia Raya
NOTE_FS4, NOTE_G4, NOTE_A4, NOTE_D5, NOTE_D5, NOTE_B4, NOTE_A4, NOTE_G4
};
// ---------- BAIT 1 : durasi ----------
int durasiBait[] = {
-8, 16, 4, -8, 16, 4, 4, 4, 2, // Indonesia tanah airku
4, 4, 4, 4, 4, 4, 2, // Tanah tumpah darahku
-8, 16, 4, -8, 16, 4, 4, 4, 2, // Di sanalah aku berdiri
4, 4, 4, 4, 4, 4, 2, // Jadi pandu ibuku
-8, 16, 4, -8, 16, 4, 4, 4, 2, // Indonesia kebangsaanku
4, 4, 4, 4, 4, 4, 8, -4, // Bangsa dan tanah airku
4, 4, 4, 4, 4, 4, 8, -4, // Marilah kita berseru
4, 4, 4, 4, 4, 4, 2, // Indonesia bersatu
4, 8, 8, 4, 8, 8, // Hiduplah tanahku
4, 8, 8, 4, 8, 8, // Hiduplah negeriku
8, 8, 4, 4, 8, 8, 4, 8, 8, 2, // Bangsaku rakyatku semuanya
4, 8, 8, 4, 8, 8, // Bangunlah jiwanya
4, 8, 8, 4, 8, 8, // Bangunlah badannya
8, 8, 4, 4, 4, 4, 4, 2 // Untuk Indonesia Raya
};
// ---------- REFF : nada ----------
int melodyReff[] = {
// Indonesia Raya
NOTE_G4, NOTE_G4, NOTE_C5, NOTE_E5, NOTE_E5, NOTE_E5,
// Merdeka merdeka
NOTE_E5, NOTE_E5, NOTE_D5, NOTE_B4, NOTE_B4, NOTE_B4,
// Tanahku negeriku yang kucinta
NOTE_D5, NOTE_D5, NOTE_C5, NOTE_A4, NOTE_A4, NOTE_A4, NOTE_D5, NOTE_C5, NOTE_B4, NOTE_G4,
// Indonesia Raya
NOTE_G4, NOTE_G4, NOTE_C5, NOTE_E5, NOTE_E5, NOTE_E5,
// Merdeka merdeka
NOTE_E5, NOTE_E5, NOTE_D5, NOTE_B4, NOTE_B4, NOTE_B4,
// Hiduplah Indonesia Raya
NOTE_D5, NOTE_D5, NOTE_D5, NOTE_C5, NOTE_B4, NOTE_A4, NOTE_B4, NOTE_A4, NOTE_G4
};
// ---------- REFF : durasi ----------
int durasiReff[] = {
8, 8, 4, 4, 8, 8, // Indonesia Raya
8, 8, 4, 4, 8, 8, // Merdeka merdeka
4, 4, 4, 8, 8, 4, 8, 8, 8, -4, // Tanahku negeriku yang kucinta
8, 8, 4, 4, 8, 8, // Indonesia Raya
8, 8, 4, 4, 8, 8, // Merdeka merdeka
4, 4, 4, 4, 4, 8, 8, 8, -4 // Hiduplah Indonesia Raya
};
// ---------- FUNGSI: memainkan satu rangkaian nada ----------
void mainkanLagu(int nada[], int durasi[], int jumlahNada) {
for (int i = 0; i < jumlahNada; i++) {
int noteDuration;
if (durasi[i] > 0) {
noteDuration = wholeNote / durasi[i]; // not biasa
} else {
noteDuration = wholeNote / (-durasi[i]) * 1.5; // not bertitik
}
// tone() tanpa parameter durasi, supaya hasilnya sama di semua board
tone(buzzerPin, nada[i]); // mulai membunyikan nada
delay(noteDuration * 0.9); // tahan 90% durasi
noTone(buzzerPin); // berhenti ketika nada selesai dibunyikan
delay(noteDuration * 0.1); // jeda singkat antarnada
}
}
void setup() {
pinMode(buzzerPin, OUTPUT);
// bait 1
mainkanLagu(melodyBait, durasiBait, sizeof(melodyBait) / sizeof(melodyBait[0]));
// reff dinyanyikan 2 kali
for (int ulang = 0; ulang < 2; ulang++) {
mainkanLagu(melodyReff, durasiReff, sizeof(melodyReff) / sizeof(melodyReff[0]));
}
}
void loop() {
}
Loading
esp32-devkit-c-v4
esp32-devkit-c-v4