ChatGPTに音楽を鳴らしてもらう
ことにしました。
(このYOUTUBEは1回のみ演奏)
手始めにハッピーバースディートユウ
下記にスケッチを記載します。このスケ
ッチは曲を3回演奏します、一回毎に1
オクターブづつ上がります。
ーーーーーーーーーーーーーーーーーー
#define NOTE_C3 131
#define NOTE_CS3 139
#define NOTE_D3 147
#define NOTE_DS3 156
#define NOTE_E3 165
#define NOTE_F3 175
#define NOTE_FS3 185
#define NOTE_G3 196
#define NOTE_GS3 208
#define NOTE_A3 220
#define NOTE_AS3 233
#define NOTE_B3 247
#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 NOTE_C6 1047
#define NOTE_CS6 1109
#define NOTE_D6 1175
#define NOTE_DS6 1245
#define NOTE_E6 1319
#define NOTE_F6 1397
#define NOTE_FS6 1480
#define NOTE_G6 1568
#define NOTE_GS6 1661
#define NOTE_A6 1760
#define NOTE_AS6 1865
#define NOTE_B6 1976
const int buzzer = 9; // ブザーのピン
const int button = 7; // D7ピン
int melody[] = {
NOTE_C4, NOTE_C4, NOTE_D4, NOTE_C4, NOTE_F4, NOTE_E4, // ハッピーバースデー トゥー ユー
NOTE_C4, NOTE_C4, NOTE_D4, NOTE_C4, NOTE_G4, NOTE_F4, // ハッピーバースデー トゥー ユー
NOTE_C4, NOTE_C4, NOTE_C5, NOTE_A4, NOTE_F4, NOTE_E4, NOTE_D4, // ハッピーバースデー ディア ○○○
NOTE_AS4, NOTE_AS4, NOTE_A4, NOTE_F4, NOTE_G4, NOTE_F4 // ハッピーバースデー トゥー ユー
};
int noteDurations[] = {
300, 300, 600, 600, 600, 1200,
300, 300, 600, 600, 600, 1200,
300, 300, 600, 600, 600, 600, 1200,
300, 300, 600, 600, 600, 1200
};
void playMelody(int octaveShift) {
for (int i = 0; i < sizeof(melody) / sizeof(melody[0]); i++) {
tone(buzzer, melody[i] * pow(2, octaveShift), noteDurations[i]);
delay(noteDurations[i] + 50);
}
}
void setup() {
pinMode(buzzer, OUTPUT);
pinMode(button, INPUT_PULLUP); // D7をプルアップ
}
void loop() {
if (digitalRead(button) == LOW) { // D7がGNDに接続されたら音を鳴らす
playMelody(0); // 通常のオクターブ
delay(1000);
playMelody(1); // 1オクターブ上げる
delay(1000);
playMelody(2); // さらに1オクターブ上げる
noTone(buzzer);
}
}
ーーーーーーーーーーーーーーーーーーー
これに気を良くして
ナベサダのカルフォルニアシャワーをお願い
したら、全く別の曲を演奏し始めました。
ハッピーバースディートユウは誰かがコーデ
ィングしたものを転用したものと思われます。
その後に「ダニーボーイ」とか「ぞうさん」を
リクエストしましたが、全く別の曲を演奏しは
じめました。データがないようです。(笑)
pitches.hのファイルがあればもっとすっきり
したスケッチになると思います。
pitches.hファイルをGITHUBからダウ
ンロードしたのですが、インストールするこ
とが出来ませんでした。
もう少し勉強する必要があるようです。
面白いです。粘ってみたいと思います。
HI