#include "note.h"
const int buzzerPin = 2;
const int buttonPin = 8;
const int melodyLength = 155;
const int melodyNotes[melodyLength] = {
//主歌1
0,
C4, 0, C4, C4, B3, C4, D4, B3, //當 我和世界不一
C4, 0, C4, C4, B3, C4, D4, E4, //樣 那就讓我不一
C4, 0, C4, C4, C4, G3, C4, E4, 0, //樣 堅持對我來說
F4, E4, D4, C4, E4, D4, //就是以剛克剛
C4, 0, C4, C4, B3, C4, D4, B3, //我 如果對自己妥
C4, 0, C4, C4, B3, C4, D4, E4, //協 如果對自己說
C4, 0, C4, C4, C4, G3, C4, E4, 0, //謊 即使別人原諒
F4, E4, D4, C4, E4, D4, //我也不能原諒
C4, B3, C4, B3, C4, 0, //最美的願望
C4, B3, C4, D4, E4, 0, //一定最瘋狂
C4, B3, C4, D4, F4, E4, D4, C4, //我就是我自己的神
C4, B3, C4, E4, A4, G4, //在我活的地方
//副歌1
E4, E4, E4, F4, G4, F4, E4, D4, //我和我最後的倔強
C4, B3, C4, D4, E4, D4, C4, B3, //握緊雙手絕對不放
C4, A3, C4, A4, B4, A4, G4, E4, G4, //下一站是不是天堂 就
A4, C4, C4, G4, B4, E4, G4, //算失望不能絕望
E4, E4, E4, F4, G4, F4, E4, D4, //我和我驕傲的倔強
C4, B3, C4, D4, E4, D4, C4, B3, //我在風中大聲的唱
C4, A3, C4, A4, B4, A4, G4, E4, A4, //這一次為自己瘋狂 就
A4, C4, C4, A4, B4, A4, G4, A3, //這一次 我和我的倔
C4, //強
};
const int melodyDurations[melodyLength] = {
//主歌1
4,
4, 8, 16 ,16, 8, 8, 8, 8, //當 我和世界不一
4, 8, 16 ,16, 8, 8, 8, 8, //樣 那就讓我不一
4, 8, 16 ,16, 8, 8, 16, 8, 16, //樣 堅持對我來說
8, 8, 8, 8, 4, 4, //就是以剛克剛
4, 8, 16 ,16, 8, 8, 8, 8, //我 如果對自己妥
4, 8, 16 ,16, 8, 8, 8, 8, //協 如果對自己說
4, 8, 16 ,16, 8, 8, 16, 8, 16, //謊 即使別人原諒
8, 8, 8, 8, 4, 4, //我也不能原諒
8, 16, 16/3, 16, 16/5, 4, //最美的願望
8, 8, 8, 16, 16/5, 4, //一定最瘋狂
8, 16, 16/3, 8, 8, 8, 8, 8, //我就是我自己的神
8, 8, 8, 8, 4, 4, //在我活的地方
//副歌1
8, 16, 16/3, 16, 16/3, 8, 8, 8, //我和我最後的倔強
8, 16, 16/3, 16, 16/3, 8, 8, 8, //握緊雙手絕對不放
8, 16, 16/3, 16, 16/3, 8, 8, 16, 16, //下一站是不是天堂 就 //
8, 16, 4, 16, 8, 16, 16/5, //算失望不能絕望
8, 16, 16/3, 16, 16/3, 8, 8, 8, //我和我最後的倔強
8, 16, 16/3, 16, 16/3, 8, 8, 8, //我在風中大聲的唱
8, 16, 16/3, 16, 16/3, 8, 8, 16, 16, //這一次為自己瘋狂 就 //
8, 16, 16/5, 16, 8, 16, 8, 8, //這一次 我和我的倔
1, //強
};
int buttonState = 0;
int index = 0;
void setup() {
pinMode(buzzerPin, OUTPUT);
pinMode(buttonPin, INPUT);
}
void loop() {
buttonState = digitalRead(buttonPin);
if (buttonState == HIGH) {
// 按鈕被按下,停止播放音樂
noTone(buzzerPin);
} else {
// 播放音樂
int noteDuration = 1600 / melodyDurations[index];
tone(buzzerPin, melodyNotes[index], noteDuration);
index = (index + 1) % melodyLength;
delay(noteDuration * 1.5); // 加入短暫的停頓
if (index == 0) {
delay(1000); // 延遲一秒,讓播放結束後有一點間隔
}
}
}