Beep()

您所在的位置:网站首页 蜂鸣器音色 Beep()

Beep()

2024-06-15 05:27| 来源: 网络整理| 查看: 265

        今天搞个好玩的东西,windows上自带的蜂鸣器,调用beep()函数即可实现,它位于windows.h中,话说目前我们听到的歌曲似乎都是来自机器,来自纯乐器的声音很奢侈,所以你对机器发出的音色一定不会陌生。当然,人的声带可以发出音乐,并且带有人类的情感,所以有为你歌唱的朋友一定要珍惜呀,那是“纯真”并且连续的,那是灵魂与灵魂的沟通,而机器发出的音乐是间断的,因为机器本身的运行逻辑就是离散的。可能有较真的会说:这个世界都未必是连续的,这取决你怎么想了,我坚信这个世界是有情感的、连续的、真实的,人与人是可以相互理解的。

        我其实一直有个很大胆的想法,使用AI来生成曲调,简单搜索了一下,相关论文不多,貌似它的路线是神经网络到LSTM到Transformer,今天先做个简单的开始,使用最原始的机器音色玩一玩音乐。

目录

一、Beep()介绍

1.1 Beep() api介绍

1.2 Beep()示例代码

二、Beep()播放生日歌片段代码

三、Beep()播放国歌片段代码

四、总结

一、Beep()介绍 1.1 Beep() api介绍

   Beep() 函数是 Windows 系统提供的一个 API,它可以使计算机发出蜂鸣声。它位于 头文件中,可以在 C 和 C++ 程序中使用。

        该函数的原型如下:

BOOL Beep( DWORD dwFreq, DWORD dwDuration );

        其中,dwFreq 参数表示蜂鸣声的频率,以赫兹为单位;dwDuration 参数表示蜂鸣声持续的时间,以毫秒为单位。

        不懂赫兹的看下面吧:

音乐所用的音大致在多少赫兹之间 - 知百科

        例如,你可以使用如下代码发出一个 1000 赫兹,持续 100 毫秒的蜂鸣声:

Beep(1000, 100);

        这个函数的原理是,它调用了系统的蜂鸣器驱动程序,并向其发送指定频率和持续时间的信号,从而使蜂鸣器发出蜂鸣声。

        需要注意的是,蜂鸣器驱动程序可能不支持所有的频率和持续时间,因此使用 Beep() 函数时应该先确保所提供的频率和持续时间是合法的。

1.2 Beep()示例代码

        Beep()音色单一,无法播放复杂的音乐,但是可以通过不同赫兹形成音调完成简单音调的播放。下面是一段实验代码:

#include int main() { // 播放低音 do Beep(262, 500); // 播放中音 mi Beep(330, 500); // 播放高音 so Beep(392, 500); return 0; }

        你也可以使用循环和延时函数来模拟简单的音乐。例如,你可以使用如下代码来播放 "小星星" 这首歌的前几个小节:

#include int main() { // 小星星的前几个小节 int notes[] = { 262, 262, 392, 392, 440, 440, 392, 349, 349, 330, 330, 294, 294, 261, 392, 392, 349, 349, 330, 330, 294, 392, 392, 349, 349, 330, 330, 294, 262, 262, 392, 392, 440, 440, 392, 349, 349, 330, 330, 294, 294, 261 }; // 每个音调的持续时间,以毫秒为单位 int duration[] = { 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125 }; // 播放每个音调 for (int i = 0; i < sizeof(notes) / sizeof(int); i++) { Beep(notes[i], duration[i]); Sleep(duration[i]); } return 0; } 二、Beep()播放生日歌片段代码 #include #include int main() { Beep(659, 125); // E Beep(659, 125); // E Beep(659, 125); // E Beep(523, 125); // C Beep(659, 125); // E Beep(784, 125); // G Beep(392, 125); // G Beep(523, 125); // C Beep(440, 125); // A Beep(523, 125); // C Beep(659, 125); // E Beep(784, 125); // G Beep(523, 125); // C Beep(880, 125); // A Beep(698, 125); // F Beep(784, 125); // G Beep(659, 125); // E Beep(523, 125); // C Beep(587, 125); // D Beep(494, 125); // B return 0; } 三、Beep()播放国歌片段代码 #include #include int main() { Beep(262, 250); // C Beep(262, 250); // C Beep(294, 250); // D Beep(262, 250); // C Beep(349, 250); // F Beep(330, 250); // E Beep(262, 250); // C Beep(392, 250); // G Beep(349, 250); // F Beep(262, 250); // C Beep(262, 250); // C Beep(294, 250); // D Beep(262, 250); // C Beep(466, 250); // B Beep(392, 250); // G Beep(349, 250); // F Beep(262, 250); // C Beep(262, 250); // C Beep(294, 250); // D Beep(262, 250); // C Beep(587, 250); // D Beep(523, 250); // C return 0; } 四、总结

        对于Beep(),使用恰当的频率和时间是关键。你可以使用音符的标准频率来播放音乐。标准频率是指一个音符的理论频率,它是基于一个十二平均律系统计算出来的。举个例子,对于 C 大调中的 C 音,它的标准频率是 262 赫兹。你可以使用 dwDuration 参数来控制每个音符的持续时间。你可以调整持续时间来控制音乐的节奏和节拍。为了节省码代码时间,你可以使用循环来重复播放音乐,例如,你可以使用 for 循环来重复播放音乐的某一部分,或者使用 while 循环来无限循环播放音乐。注意,Beep 函数是 Windows 系统特有的,因此这些代码只能在 Windows 系统中运行。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3