鐵之狂傲

 取回密碼
 註冊
搜尋

切換到指定樓層
1#
[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);
}

其實我對這程式碼整個結構不是很懂也
所以能否有人一行一行(一個片段) 〝註解〞 或 敘述 解析 這個程式碼呢??
結果是可以執行的,有些(單字=術語?)不是很懂.. 感激不盡,謝謝...
(對音樂有熱血度,也想不到這程式可以玩這個)很有趣!!!
 
轉播0 分享0 收藏0

回覆 使用道具 檢舉

你需要登入後才可以回覆 登入 | 註冊

存檔|手機版|聯絡我們|新聞提供|鐵之狂傲

GMT+8, 24-11-5 11:23 , Processed in 0.020859 second(s), 21 queries , Gzip On.

回頂部