//來應景下吧,送給親愛的人!
//Cooper Maa 之buzzer 聖誕版
#include "C:/pitches.h" // "pitches.h" ==改成 "C:/pitches.h ,then compiler find it // notes in the melody: int melody[] = { NOTE_G4, NOTE_G4 ,NOTE_E5, NOTE_D5, NOTE_C5, NOTE_G4,//雪花隨風飄 1 NOTE_G4, NOTE_G4, NOTE_E5, NOTE_D5, NOTE_C5, NOTE_A4,//花鹿在奔跑 2 NOTE_A4, NOTE_A4, NOTE_F5, NOTE_E5, NOTE_D5, NOTE_A4,//聖誕老公公 3 NOTE_G5, NOTE_G5, NOTE_F5, NOTE_D5, NOTE_E5, NOTE_C5,//駕著美麗雪橇 4 NOTE_G4, NOTE_G4, NOTE_E5, NOTE_D5, NOTE_C5, NOTE_G4,//經過了原野 5 NOTE_G4, NOTE_G4, NOTE_E5, NOTE_D5, NOTE_C5, NOTE_A4,//越過了小橋 6 NOTE_A4, NOTE_F5, NOTE_E5, NOTE_D5, NOTE_G5, NOTE_G5, NOTE_G5, NOTE_G5,//跟著和平歡喜歌聲 7 NOTE_A5, NOTE_G5, NOTE_F5, NOTE_D5, NOTE_C5,//翩然地來到 8/// 65421 NOTE_E5, NOTE_E5, NOTE_E5, NOTE_E5, NOTE_E5, NOTE_E5,//叮叮噹叮叮噹 9 NOTE_E5, NOTE_G5, NOTE_C5, NOTE_D5, NOTE_E5,//鈴聲多響亮 10 NOTE_F5, NOTE_F5, NOTE_F5, NOTE_F5, NOTE_E5, NOTE_E5, NOTE_E5, NOTE_E5,//你看他呀不避風霜 11 NOTE_E5, NOTE_D5, NOTE_D5, NOTE_C5, NOTE_D5, NOTE_G5,//面容多麼慈祥 12 NOTE_E5, NOTE_E5, NOTE_E5, NOTE_E5, NOTE_E5, NOTE_E5,//叮叮噹叮叮噹 13 NOTE_E5, NOTE_G5, NOTE_C5, NOTE_D5, NOTE_E5, //鈴聲多響亮 14 NOTE_F5, NOTE_F5, NOTE_F5, NOTE_F5, NOTE_E5, NOTE_E5, NOTE_E5, NOTE_E5,//他給我們帶來幸福 15 NOTE_G5, NOTE_G5, NOTE_F5, NOTE_D5, NOTE_C5}; //家喜洋洋 16 int duration[] = { 250,250,250,250,250,500, //1雪花隨風飄 250,250,250,250,250,500, //2花鹿在奔跑 250,250,250,250,250,500, //3聖誕老公公 250,250,250,250,250,1500, //4駕著美麗雪橇 250,250,250,250,250,500, //5經過了原野 250,250,250,250,250,500, //6越過了小橋 250,250,250,250,250,250,250,250,//7跟著和平歡喜歌聲 250,250,250,250,500, //8翩然地來到 250,250,500,250,250,500, //9叮叮噹叮叮噹 250,250,250,250,500, //10鈴聲多響亮 250,250,250,250,250,250,250,250,//11你看他呀不避風霜 250,250,250,250,500,500, //12面容多麼慈祥 250,250,500,250,250,500, //13叮叮噹叮叮噹-2 250,250,250,250,500, //14鈴聲多響亮-2 250,250,250,250,250,250,250,250,//15他給我們帶來幸福 250,250,250,250,1000}; //16大家喜洋洋 void setup() { } void loop() { for (int thisNote = 0; thisNote < 98; thisNote++) { // 在 pin8 上輸出聲音,每個音階響 0.5 秒 tone(8, melody[thisNote], 250); // 間隔一段時間後再播放下一個音階 delay(duration[thisNote]);///////// 音節 } // 兩秒後重新播放 delay(2000); }將底下存成一個 pitches.h 存到 C:底下
/************************************************* * Public Constants *************************************************/ #define NOTE_B0 31 #define NOTE_C1 33 #define NOTE_CS1 35 #define NOTE_D1 37 #define NOTE_DS1 39 #define NOTE_E1 41 #define NOTE_F1 44 #define NOTE_FS1 46 #define NOTE_G1 49 #define NOTE_GS1 52 #define NOTE_A1 55 #define NOTE_AS1 58 #define NOTE_B1 62 #define NOTE_C2 65 #define NOTE_CS2 69 #define NOTE_D2 73 #define NOTE_DS2 78 #define NOTE_E2 82 #define NOTE_F2 87 #define NOTE_FS2 93 #define NOTE_G2 98 #define NOTE_GS2 104 #define NOTE_A2 110 #define NOTE_AS2 117 #define NOTE_B2 123 #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 #define NOTE_C7 2093 #define NOTE_CS7 2217 #define NOTE_D7 2349 #define NOTE_DS7 2489 #define NOTE_E7 2637 #define NOTE_F7 2794 #define NOTE_FS7 2960 #define NOTE_G7 3136 #define NOTE_GS7 3322 #define NOTE_A7 3520 #define NOTE_AS7 3729 #define NOTE_B7 3951 #define NOTE_C8 4186 #define NOTE_CS8 4435 #define NOTE_D8 4699 #define NOTE_DS8 4978
硬體接線:
1.BUZZER 上有一個 +,接 D8 數位輸出(我用橘色線)
實驗後結果
參考資料
1.Do Re Mi 音頻 關係 可以理解 pitches.h 內的 音頻 代表意思,C 是Do
此程式 pitches.h 內 C4 :262 Hz ;C5:523 Hz C6:1047 Hz
2.原始來源 ARDUINO.CC TONE() example. 轉移過來的簡化版
Duration 給予聲音長度.可以符合音節關係,我則是利用間隔時間與聽覺殘留來體現音節
應用思考題:
1.如何存放多首歌 ? 動態變換 歌曲? 好比如MP3 player?
2.是否可用resource file 或 header file 存放多首歌?#Define NOTE_C5等等可否改為簡單的代碼?
3.如何用VB,VC寫一個鋼琴HUI程式,由使用者彈奏而產生需要的header file或int melody[]={C4...}?
4.是否可以用 micphone 麥克風 做音頻解析 而自動產出 需要的 程式melody?
5.如何與MIDI樂器連接 傳送與接收或控制,然後運用電子樂器 演奏 電子鋼琴 電子鼓 ?
6.可否動態從網路下載或讀取 melody[] 矩陣,然後存入記憶體? 以前的手機是否是這樣運作?
沒有留言:
張貼留言