C++ <windows.h> Beep方法讲解

这篇博客介绍了如何利用C++和Windows头文件windows.h中的Beep函数来创建简单的音乐程序。通过定义不同音符对应的频率,结合不同的持续时间,可以播放出简单的旋律。示例代码演示了如何用Beep方法播放一段旋律。

C++的windows.h里有一个Beep方法,这个方法调用系统蜂鸣器,发出特定频率的声音。

参数如下:

windows.h Beep方法
参数名类型是否必须说明
dwFreqDWORD发出声音的频率
dwDurationDWORD发出声音的长度(毫秒)

先给大家放出音调对应频率的#define语句~

#define C0 16.35
#define CSHARP0 17.32
#define D0 18.35
#define DSHARP0 19.45
#define E0 20.60
#define F0 21.83
#define FSHARP0 23.12
#define G0 24.50
#define GSHARP0 25.96
#define A0 27.50
#define ASHARP0 29.14
#define B0 30.87
#define C1 32.70
#define CSHARP1 34.65
#define D1 36.71
#define DSHARP1 38.89
#define E1 41.20
#define F1 43.65
#define FSHARP1 46.25
#define G1 49.00
#define GSHARP1 51.91
#define A1 55.00
#define ASHARP1 58.27
#define B1 61.74
#define C2 65.41
#define CSHARP2 69.30
#define D2 73.42
#define DSHARP2 77.78
#define E2 82.41
#define F2 87.31
#define FSHARP2 92.50
#define G2 98.00
#define GSHARP2 103.83
#define A2 110.00
#define ASHARP2 116.54
#define B2 123.47
#define C3 130.81
#define CSHARP3 138.59
#define D3 146.83
#define DSHARP3 155.56
#define E3 164.81
#define F3 174.61
#define FSHARP3 185.00
#define G3 196.00
#define GSHARP3 207.65
#define A3 220.00
#define ASHARP3 233.08
#define B3 246.94
#define C4 261.63
#define CSHARP4 277.18
#define D4 293.66
#define DSHARP4 311.13
#define E4 329.63
#define F4 349.23
#define FSHARP4 369.99
#define G4 392.00
#define GSHARP4 415.30
#define A4 440.00
#define ASHARP4 466.16
#define B4 493.88
#define C5 523.25
#define CSHARP5 554.37
#define D5 587.33
#define DSHARP5 622.25
#define E5 659.25
#define F5 698.46
#define FSHARP5 739.99
#define G5 783.99
#define GSHARP5 830.61
#define A5 880.00
#define ASHARP5 932.33
#define B5 987.77
#define C6 1046.50
#define CSHARP6 1108.73
#define D6 1174.66
#define DSHARP6 1244.51
#define E6 1318.51
#define F6 1396.91
#define FSHARP6 1479.98
#define G6 1567.98
#define GSHARP6 1661.22
#define A6 1760.00 
#define ASHARP6 1864.66
#define B6 1975.53
#define C7 2093.00

然后,就可以做一个放音乐的程序了!

​
#include<windows.h>
#define C0 16.35
#define CSHARP0 17.32
#define D0 18.35
#define DSHARP0 19.45
#define E0 20.60
#define F0 21.83
#define FSHARP0 23.12
#define G0 24.50
#define GSHARP0 25.96
#define A0 27.50
#define ASHARP0 29.14
#define B0 30.87
#define C1 32.70
#define CSHARP1 34.65
#define D1 36.71
#define DSHARP1 38.89
#define E1 41.20
#define F1 43.65
#define FSHARP1 46.25
#define G1 49.00
#define GSHARP1 51.91
#define A1 55.00
#define ASHARP1 58.27
#define B1 61.74
#define C2 65.41
#define CSHARP2 69.30
#define D2 73.42
#define DSHARP2 77.78
#define E2 82.41
#define F2 87.31
#define FSHARP2 92.50
#define G2 98.00
#define GSHARP2 103.83
#define A2 110.00
#define ASHARP2 116.54
#define B2 123.47
#define C3 130.81
#define CSHARP3 138.59
#define D3 146.83
#define DSHARP3 155.56
#define E3 164.81
#define F3 174.61
#define FSHARP3 185.00
#define G3 196.00
#define GSHARP3 207.65
#define A3 220.00
#define ASHARP3 233.08
#define B3 246.94
#define C4 261.63
#define CSHARP4 277.18
#define D4 293.66
#define DSHARP4 311.13
#define E4 329.63
#define F4 349.23
#define FSHARP4 369.99
#define G4 392.00
#define GSHARP4 415.30
#define A4 440.00
#define ASHARP4 466.16
#define B4 493.88
#define C5 523.25
#define CSHARP5 554.37
#define D5 587.33
#define DSHARP5 622.25
#define E5 659.25
#define F5 698.46
#define FSHARP5 739.99
#define G5 783.99
#define GSHARP5 830.61
#define A5 880.00
#define ASHARP5 932.33
#define B5 987.77
#define C6 1046.50
#define CSHARP6 1108.73
#define D6 1174.66
#define DSHARP6 1244.51
#define E6 1318.51
#define F6 1396.91
#define FSHARP6 1479.98
#define G6 1567.98
#define GSHARP6 1661.22
#define A6 1760.00 
#define ASHARP6 1864.66
#define B6 1975.53
#define C7 2093.00
using namespace std;
int main()
{
    Beep(A3, 500);
    Beep(A3, 250);
    Beep(E4, 250);
    Beep(D4, 500);
    Beep(C4, 500);
    Beep(B3, 500);
    Beep(B3, 250);
    Beep(B3, 250);
    Beep(D4, 500);
    Beep(C4, 250);
    Beep(B3, 250);
    Beep(A3, 500);
    Beep(A3, 250);
    Beep(C5, 250);
    Beep(B4, 250);
    Beep(C5, 250);
    Beep(B4, 250);
    Beep(C5, 250);
    Beep(A4, 500);
    Beep(A4, 250);
    Beep(C5, 250);
    Beep(B4, 250);
    Beep(C5, 250);
    Beep(B4, 250);
    Beep(C5, 250);
    Beep(A4, 500);
    Beep(A3, 250);
    Beep(E4, 250);
    Beep(D4, 500);
    Beep(C4, 500);
    Beep(B3, 500);
    Beep(B3, 250);
    Beep(B3, 250);
    Beep(D4, 500);
    Beep(C4, 250);
    Beep(B3, 250);
    Beep(A3, 500);
    Beep(A3, 250);
    Beep(C5, 250);
    Beep(B4, 250);
    Beep(C5, 250);
    Beep(B4, 250);
    Beep(C5, 250);
    Beep(A4, 500);
    Beep(A4, 250);
    Beep(C5, 250);
    Beep(B4, 250);
    Beep(C5, 250);
    Beep(B4, 250);
    Beep(C5, 250);
    Beep(A4, 250);
    Beep(C4, 250); 
    Beep(C4, 250);
    Beep(C4, 250);
    Beep(E4, 250);
    Beep(E4, 250); 
    Beep(E4, 250);
    Beep(E4, 250);
    Beep(D4, 250);
    Beep(D4, 250); 
    Beep(D4, 250);
    Beep(D4, 250); 
    Beep(G4, 250);
    Beep(G4, 250); 
    Beep(G4, 250);
    Beep(G4, 250); 
    Beep(A4, 250);
    Beep(A4, 250); 
    Beep(A4, 250);
    Beep(A4, 250); 
    Beep(A4, 250);
    Beep(A4, 250); 
    Beep(A4, 250);
    Beep(A4, 250); 
    Beep(A4, 500);
    return 0;
}

​

把这段程序敲到自己电脑里,听听是哪首歌吧!

<think>我们被要求详细解释一个简易电子琴的C语言代码,该代码使用了stdio.h, conio.h, windows.h头文件。 代码功能:通过按键a-g来演奏音阶,按q退出。使用Beep函数发出声音。 我们将逐步解释代码的每一部分。 </think>### 简易电子琴代码详细解析 以下是对包含`stdio.h`, `conio.h`, `windows.h`的简易电子琴代码的逐行详解: ```c #include <stdio.h> // 标准输入输出:用于printf() #include <conio.h> // 控制台输入:提供getch()函数 #include <windows.h> // 系统API:提供Beep()发声函数 ``` #### 核心组件解析 1. **音阶频率定义** ```c const int scale[] = {262, 294, 330, 349, 392, 440, 494}; // C4到B4的频率(Hz) ``` - 存储7个音阶的标准频率值,对应钢琴键C4(Do)到B4(Si) - 频率值单位赫兹($Hz$),例如262Hz即中央C音 2. **主程序逻辑** ```c int main() { printf("简易电子琴:按a - g键演奏,按q退出\n"); // 用户提示[^1] printf("a:Do b:Re c:Mi d:Fa e:Sol f:La g:Si\n"); while (1) { // 无限循环直到按下q char key = getch(); // 无回显读取按键(conio.h) if (key == 'q') break; // 退出条件 int index = key - 'a'; // 计算按键位置 if (index >= 0 && index < 7) { // 验证a-g范围 printf("演奏: %c\n", key); // 反馈按键 Beep(scale[index], 300); // 发声300ms(windows.h) } } return 0; } ``` #### 关键函数说明 | **函数** | **头文件** | **功能** | |------------------|--------------|--------------------------------------------------------------------------| | `getch()` | `conio.h` | 无回显即时读取键盘输入,无需按回车键[^2] | | `Beep(freq, ms)` | `windows.h` | 通过主板扬声器发声,参数:频率($freq \in \mathbb{Z}^+$)和时长毫秒($ms$) | | `printf()` | `stdio.h` | 格式化输出提示信息 | #### 工作原理流程图 ```mermaid graph TD A[开始] --> B[显示操作提示] B --> C{等待按键} C -- 按下q --> D[退出程序] C -- 按下a-g --> E[计算音阶索引] E --> F[播放对应频率声音] F --> C ``` #### 平台依赖性说明 此代码仅在 **Windows系统** 有效: 1. `conio.h` 提供即时键盘检测(Linux/macOS需用`ncurses`库替代) 2. `Beep()` 是Windows API特有函数(Linux需调用`ioctl`系统调用) > 注意:现代Windows系统可能禁用主板蜂鸣器,需在BIOS中启用"PC Speaker"支持。若使用USB扬声器,需改用`PlaySound()`函数[^2]。
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值