用编译器演奏乐曲之Beep

本文介绍了如何利用C语言中的Beep函数和Sleep函数来创作简单的乐曲。Beep函数控制音高和节拍,Sleep函数实现休止符。通过调整参数,可以在蜂鸣器上播放不同音调和节奏的音乐,例如演示中用Beep和Sleep实现了《送别》的演奏。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一个偶然的机会,听到了用蜂鸣器演奏的乐曲,音质不咋地,但总觉得神奇。但其实是一个无脑的操作:
首先,隆重欢迎主角:

Beep

闪亮登场。
注意,B要大写
格式:Beep(d,t);其中d表示音高,t表示节拍长短。
其次,不那么隆重地欢迎配角:

Sleep

同样S要大写
格式:Sleep(t);表示休止符的拍长。

两者都在#include<windows.h>中,注意,万能头不包括windows库。

由于考虑到d其实是音频大小,所以下边给出三个八度的音的音频:
前缀q表示低音,后缀1表示高音,前缀s表示升半度。
摘自大佬博文

#define qdo 262 
#define qre 294 
#define qmi 330 
#define qfa 349 
#define qso 392 
#define qla 440 
#define qsi 494 
#define do 523 
#define re 578 
#define mi 659 
#define fa 698 
#define so 784 
#define la 880 
#define si 988 
#define do1 1046 
#define re1 1175 
#define mi1 1318 
#define fa1 1480 
#define so1 1568 
#define la1 1760 
#define si1 1976 
#define sqdo 277 
#define sqre 311 
#define sqfa 370 
#define sqso 415 
#define sqla 466 
#define sdo 554 
#define sre 622 
#define sfa 740 
#define sso 831 
#define sla 932 
#define sdo1 1046 
#define sre1 1245 
#define sfa1 1480 
#define sso1 1661 
#define sla1 1865 

还有就是拍长,一般在400~900间为宜。(太快了蜂鸣器会受不了)
下面献上一曲《送别》

	#define P 700
	Beep(so,P); 
	Beep(mi,P*0.5);Beep(so,P*0.5); 
	Beep(do1,P*2); 
	Beep(la,P); 
	Beep(do1,P); 
	Beep(so,P*2); 
	Beep(so,P); 
	Beep(do,P*0.5);Beep(re,P*0.5);
	Beep(mi,P); 
	Beep(re,P*0.5);Beep(do,P*0.5); 
	Beep(re,P*2);
	Sleep(P*2); 
	 
	Beep(so,P); 
	Beep(mi,P*0.5);Beep(so,P*0.5); 
	Beep(do1,P*1.5); 
	Beep(si,P*0.5); 
	Beep(la,P); 
	Beep(do1,P); 
	Beep(so,P*2); 
	Beep(so,P); 
	Beep(re,P*0.5);Beep(mi,P*0.5);
	Beep(fa,P*1.5);
	Beep(qsi,P*0.5);
	Beep(do,P*2);
	Sleep(P*2); 
	
	Beep(la,P); 
	Beep(do1,P);
	Beep(do1,P*2); 
	Beep(si,P); 
	Beep(la,P*0.5);Beep(si,P*0.5);
	Beep(do1,P*2); 
	Beep(la,P*0.5);Beep(si,P*0.5);
	Beep(do1,P*0.5);Beep(la,P*0.5);
	Beep(la,P*0.5);Beep(so,P*0.5);
	Beep(mi,P*0.5);Beep(do,P*0.5); 
	Beep(re,P*2);
	Sleep(P*2); 
	
	Beep(so,P); 
	Beep(mi,P*0.5);Beep(so,P*0.5); 
	Beep(do1,P*1.5); 
	Beep(si,P*0.5); 
	Beep(la,P); 
	Beep(do1,P); 
	Beep(so,P*2); 
	Beep(so,P); 
	Beep(re,P*0.5);Beep(mi,P*0.5);
	Beep(fa,P*1.5);
	Beep(qsi,P*0.5);
	Beep(do,P*2);
	Sleep(P*2); 
	
	Beep(so,P); 
	Beep(mi,P*0.5);Beep(so,P*0.5); 
	Beep(do1,P*2); 
	Beep(la,P); 
	Beep(do1,P); 
	Beep(so,P*2); 
	Beep(so,P); 
	Beep(do,P*0.5);Beep(re,P*0.5);
	Beep(mi,P); 
	Beep(re,P*0.5);Beep(do,P*0.5); 
	Beep(re,P*2);
	Sleep(P*2); 
	 
	Beep(so,P); 
	Beep(mi,P*0.5);Beep(so,P*0.5); 
	Beep(do1,P*1.5); 
	Beep(si,P*0.5); 
	Beep(la,P); 
	Beep(do1,P); 
	Beep(so,P*2); 
	Beep(so,P); 
	Beep(re,P*0.5);Beep(mi,P*0.5);
	Beep(fa,P*1.5);
	Beep(qsi,P*0.5);
	Beep(do,P*2);
	Sleep(P*2); 

更多巧用Beep(),且看下回分解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值