struct tagSound
{
int frequency;//频率
int soundDelay;//发音时间(单位ms)
int nosoundDelay; //发完音之后暂停的时间(单位ms)
};
1 。音符与频率的关系
========低音部分
低1DO:262
#1DO#:277
低2RE:294
#2RE#:311
低3MI:330
低4FA:349
#4FA#:370
低5SO:392
#5SO#:415
低6LA:440
#6LA#:466
低7SI:494
========中音部分=低音X2
中1DO:523 956us FC44;
#1DO#:554 902us
中2RE:578 865us FC9F;
#2RE#:622 803us
中3MI:659 759us FD09;
中4FA:698 716us FD34
#4FA#:740
中5SO:784 638us FD82
#5SO#:831
中6LA:880 568us FDC8
#6LA#:932
中7SI:988 506us FE06
========高音部分=中音X2
高1DO:1046
#1DO#:1109
高2RE:1175
#2RE#:1245
高3MI:1318
高4FA:1480
#4FA#:1480
高5SO:1568
#5SO#:1661
高6LA:1760
#6LA#:1865
高7SI:1976
“#”表示半音 , 用于上升或下降半个音
2 。频率的产生
利用定时器来控制IO口的高低变化实现
周期=1/频率
半周期中断产生IO口电平
定时时间常数按照单片机的方式计算
3 。音乐节拍的产生
每个音符用1个字节,字节的高4位代表音符的高低 , 低4位代表
音符的节拍,如果 1节拍是0.4秒,则1/4拍就是0.1秒 。
其他节拍为1/4拍的整数倍 。
4 。节拍与节拍码对照表
节拍节拍数节拍数
11/41/8
22/42/8
33/43/8
411/2
55/45/8
66/46/8
821
A10/45/4
C312/8
F15/4
曲调1/4拍的延迟时间1/8拍的延迟时间
4/4125ms62ms
3/4187ms94ms
2/4250ms125ms
不过,真的好不准 。
这样就可以编辑文件了 。
送你一个函数:
void MyDelay(long tt) /*暂停tt个百分之一秒*/
{
struct time now,last;
gettime(last);
gettime(now);
while((((now.ti_sec-last.ti_sec)*100+now.ti_hund-last.ti_hund))tt)
{
gettime(now);
}
}
这个函数可以暂停 0.01*tt 秒 。
循环使用下面的句子:
Beep(frequency,soundDelay);
MyDelay(nosoundDelay/10);
就可以模拟那个音乐了 。
在C语言里可以循环使用:
sound(frequency);
MyDelay(soundDelay/10);
nosound();
MyDelay(nosoundDelay/10);
就可以了
【c语言中beep函数用法 c语言中begin】c语言中beep函数用法的介绍就聊到这里吧 , 感谢你花时间阅读本站内容,更多关于c语言中begin、c语言中beep函数用法的信息别忘了在本站进行查找喔 。
推荐阅读
- 虚拟机前需要准备什么,虚拟机前需要准备什么软件
- gis生成tin文件,arcgis由tin生成dem
- 素材拍摄用什么软件,拍摄素材是什么意思
- 移动硬盘怎么会响,移动硬盘使用时有响声
- python复制图片函数 python复制图片到另一个文件夹
- 手机推广怎么去掉,手机推广怎么去掉广告
- 开发游戏赚钱嘛可信吗,游戏开发赚钱吗?
- python类函数的重写 python 类 函数
- 390用什么CPU,390用什么机油