ptt 上看到的問題,原題意是在 Dev-C 下要發出聲音,
一開始我沒幫忙解得很好,
於此將該原始碼做修改與備份 ,有空再補上怎麼看簡單的譜寫 code 之心得。
/* some music */ #pragma comment(lib,"winmm.lib") #include <windows.h> #include <mmsystem.h> #define FREQ_CNT 8 /* 中音 do ~ 中音 do,8個音階 */ #define QUARTER_SPEED 200 /* 定義 1/4 拍 */ int main() { /* range: 37~32767 */ const DWORD Freq[FREQ_CNT+1] = {0,524,588,660,698,784,880,998,1048 }; /* freqence */ const DWORD SpringGod_Freq[] = { 2,0,3,5,8, 6,8,6,5, 4,0,5,3,1, 2,0,1, 5,5,4,4, 3,5,3,2, 5,5,4,4, 3,5,3,2, 1,0,3,5,8, 6,8,6,5, 4,0,5,3,1, 2,0,1 }; /* tempo */ const DWORD SpringGod_Tempo[] = { 3,1,1,2,2, 2,1,1,4, 3,1,1,2,2,4,1,4, 2,2,2,2,2, 1,1,4, 2,2,2,2,2,1,1,4, 3,1,1,2,2, 2,1,1,4, 3,1,1,2,2,4,1,4 }; int i; for(i=0; i!=sizeof(SpringGod_Freq)/sizeof(SpringGod_Freq[0]); ++i){ if(SpringGod_Tempo[i]==Freq[0]) Sleep(SpringGod_Tempo[i]*QUARTER_SPEED); else Beep(Freq[SpringGod_Freq[i]], SpringGod_Tempo[i]*QUARTER_SPEED); } return 0; }
音階對照表
低音 | Do | Do# | Re | Re# | Mi | Fa | Fa# | So | So# | La | La# | Si |
頻率 | 262 | 277 | 294 | 311 | 330 | 349 | 370 | 392 | 415 | 440 | 464 | 494 |
中音 | Do | Do# | Re | Re# | Mi | Fa | Fa# | So | So# | La | La# | Si |
頻率 | 524 | 554 | 588 | 622 | 660 | 698 | 740 | 784 | 830 | 880 | 928 | 988 |
高音 | Do | Do# | Re | Re# | Mi | Fa | Fa# | So | So# | La | La# | Si |
頻率 | 1048 | 1108 | 1176 | 1244 | 1320 | 1396 | 1480 | 1568 | 1660 | 1760 | 1856 | 1976 |
若有建議的簡譜,請不吝提供,讓小弟研究,感激不盡。
全站熱搜
留言列表