[size=+0]#include <windows>
#include <cmath>
// 提供 Macro 版 和 Function 版。
// 把 freq 和 Freq 對換改名就可以用不同的版了。
#define Freq(f) (220 * pow(2,((double)(f)+3)/12))
double freq(int i)
{
const double d = pow(2, 1. / 12); //根號 2 的 12 次方
return 220*pow(d, 3)*pow(d, i);
//A 的基音是 440, 故 220*pow(d, 3) 就是中央 C
}
int main()
{
/*
音名定位
c,#c, d,#d, e, f,#f, g,#g, a,#a, b, ...
= 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11, ...
*/
int pitch[] = {7, 7, 9, 7, 12, 11,
7, 7, 9, 7, 14, 12,
7, 7, 19, 16, 12, 11, 9,
17, 17, 16, 12, 14, 12};
int size = sizeof(pitch) / sizeof(pitch[0]);
double tempo[] = {0.5, 0.5, 1, 1, 1, 2,
0.5, 0.5, 1, 1, 1, 2,
0.5, 0.5, 1, 1, 1, 1, 2,
0.5, 0.5, 1, 1, 1, 2};
for (int i = 0; i < size; ++i)
Beep(freq(pitch), tempo*300);
}
其實我對這程式碼整個結構不是很懂也
所以能否有人一行一行(一個片段) 〝註解〞 或 敘述 解析 這個程式碼呢??
結果是可以執行的,有些(單字=術語?)不是很懂.. 感激不盡,謝謝...
(對音樂有熱血度,也想不到這程式可以玩這個)很有趣!!! |