int speakerPin = 8; //pin dimana buzzer dihubungkan
void setup() {
pinMode(speakerPin, OUTPUT); //set pin digital sebagai output untuk speaker
}
void loop() {
play('g', 2); //ha
play('g', 1); //ppy
play('a', 4); //birth
play('g', 4); //day
play('C', 4); //to
play('b', 4); //you
play(' ', 2); //jeda 2 beats
play('g', 2); //ha
play('g', 1); //ppy
play('a', 4); //birth
play('g', 4); //day
play('D', 4); //to
play('C', 4); //you
play(' ', 2); //jeda 2 beats
play('g', 2); //ha
play('g', 1); //ppy
play('G', 4); //birth
play('E', 4); //day
play('C', 4); //dear
play('b', 4); //your
play('a', 6); //name
play(' ', 2); //jeda 2 beats
play('F', 2); //ha
play('F', 1); //ppy
play('E', 4); //birth
play('C', 4); //day
play('D', 4); //to
play('C', 6); //you
while(true){} //membuaat program stak disini sehingga musik hanya dimainkan sekali
}
void play( char note, int beats) {
int numNotes = 14; //jumlah nada didalam array notes dan frekuensi (ada 15 nilai, tapi sebuah array dimulai dari 0 - 14)
//Catatan: nada-nada yang digunakan adalah C major
//array notes ini digunakan untuk menyimpan kumpulan nada-nada
char notes[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C', 'D', 'E', 'F', 'G', 'A', 'B', ' '};
//array frequencies dibawah berpasangan dengan tiap huruf (contoh urutan nada ke 4 adalah 'f', urutan frekuensi ke 4 adalah 175)
int frequencies[] = {131, 147, 165, 175, 196, 220, 247, 262, 294, 330, 349, 392, 440, 494, 0};
int currentFrequency = 0; //variabel ini digunakan untuk menyimpan frekuensi yang sedang dimainkan
int beatLength = 150; //waktu ketukan (merubah nilai ini akan mempercepat atau memperlambat tempo tempo dari lagu)
//mencari frekuensi yang berpasangan sesuai dengan nada
for (int i = 0; i < numNotes; i++) //cek setiap nilai didalam array notes dari 0 sampai 14
{
if (notes[i] == note) //memeriksa apakah huruf yang akan dimainkan ada yang cocok dengan huruf/nada yang berada didalam array notes?
{
currentFrequency = frequencies[i]; //jika Ya! Set nilai currentFrequency sama dengan frekuensi yang sepasang dengan huruf/nada
}
}
//memainkan frequency yang sepasang dengan huruf/nada dengan ketukan yang sesuai dengan nilai variabel beats pada pemanggilan fungsi play
tone(speakerPin, currentFrequency, beats * beatLength);
delay(beats* beatLength); //jeda sesuai dengan lama ketukan nada yang dimainkan
delay(50); //sedikit jeda antara tiap nada untuk membuat lagu menjadi lebih natural
}