int buzzerPin = 8; // ブザーを接続するピン番号
int buttonPin = 2; // ボタンを接続するピン番号
int bpm = 60; //スピード
//音階を周波数に変換
int noteToHz(char note) {
switch (note) {
case 'C': return 131;
case 'D': return 147;
case 'E': return 165;
case 'F': return 175;
case 'G': return 196;
case 'A': return 220;
case 'B': return 247;
default: return 0;
}
}
//note:音階 oct:オクターブ len:音符長 4分音符→4
void sound(char note,int oct,int len){
int ms = 60000 / bpm *4 / len;
int hz = noteToHz(note);
int mul = 1;
//オクターブの倍率を計算
for(int i=0;i<oct;i++){
mul = mul*2;
}
//実際に音を出す部分
if(hz != 0){
tone(buzzerPin, hz*mul,ms);
}
delay(ms+5);
}
//ラヴェルのボレロ
void music2(){
int base = 2;
bpm = 60; //スピード
sound('C',base+1,4);
sound('C',base+1,8);
sound('B',base ,16);
sound('C',base+1,16);
sound('D',base+1,16);
sound('C',base+1,16);
sound('B',base ,16);
sound('A',base ,16);
sound('C',base+1,8);
sound('C',base+1,16);
sound('A',base ,16);
sound('C',base+1,4);
sound('C',base+1,8);
sound('B',base+0,16);
sound('C',base+1,16);
sound('A',base+0,16);
sound('G',base+0,16);
sound('E',base+0,16);
sound('F',base+0,16);
sound('G',base+0,2);
sound('G',base+0,16);
sound('F',base+0,16);
sound('E',base+0,16);
sound('D',base+0,16);
sound('E',base+0,16);
sound('F',base+0,16);
sound('G',base+0,16);
sound('A',base+0,16);
sound('G',base+0,4);
sound('G',base+0,4);
sound('G',base+0,16);
sound('A',base+0,16);
sound('B',base+0,16);
sound('A',base+0,16);
sound('G',base+0,16);
sound('F',base+0,16);
sound('E',base+0,16);
sound('D',base+0,16);
sound('E',base+0,16);
sound('D',base+0,16);
sound('C',base+0,8);
sound('C',base+0,8);
sound('C',base+0,16);
sound('D',base+0,16);
sound('E',base+0,8);
sound('F',base+0,8);
sound('D',base+0,4);
sound('G',base+0,1);
}
//プリキュア?
void music1(){
int base = 2;
bpm = 240; //スピード
sound('C',base+1,4);
sound('B',base ,4);
sound('A',base ,4);
sound('G',base ,4);
sound('F',base ,4);
sound('E',base ,4);
sound('D',base ,4);
sound('C',base ,4);
sound('S',base ,4);
sound('C',base+1,4);
sound('S',base+1,4);
sound('C',base+1,2);
}
//音階テスト
void music0(){
bpm = 240; //スピード
sound('C',0,4);
sound('D',0,4);
sound('E',0,4);
sound('F',0,4);
sound('G',0,4);
sound('A',0,4);
sound('B',0,4);
sound('C',1,4);
sound('D',1,4);
sound('E',1,4);
sound('F',1,4);
sound('G',1,4);
sound('A',1,4);
sound('B',1,4);
sound('C',2,4);
sound('D',2,4);
sound('E',2,4);
sound('F',2,4);
sound('G',2,4);
sound('A',2,4);
sound('B',2,4);
sound('C',3,4);
}
// メイン関数
void setup() {
// ブザーピンをアウトプットモード
pinMode(buzzerPin, OUTPUT);
// ボタンピンをインプットモード
pinMode(buttonPin, INPUT_PULLUP);
}
void loop() {
int buttonState = digitalRead(buttonPin);
if(buttonState == LOW){
music0();
}
delay(100);
}
コメント
コメントを投稿