用 Beep 函数让主板“唱”《生日歌》
用 Beep 函数,让你的主板也会“唱歌”。
Beep 可以通过控制主板扬声器的发声频率和节拍来演奏美妙的旋律。
本文就通过C#演示,调用Beep函数,演奏生日快乐歌。
首先我们来看下 Beep 函数原型:
依赖库:LIB:kernel32.lib,DLL:kernel32.dll,
BOOL Beep([in] DWORD dwFreq, [in] DWORD dwDuration);
参数:
dwFreq 指定要发出的频率(从37Hz到32767Hz),
dwDuration 指定发音的时长,单位是毫秒。
返回值:调用成功返回true,失败返回false。
C#演示
using System;
using System.Runtime.InteropServices;
namespace App
{
public class Program
{
[DllImport("kernel32.dll", EntryPoint = "Beep")] extern public static bool Kernel32_Beep(int frequency_Hz, int duration_ms);
static int Main(string[] args)
{
string Spectrum = "523,300|523,300|578,500|523,500|698,500|659,900|523,300|523,300|578,500|523,500|784,500|698,900|523,300|523,300|1046,500|880,500|698,500|659,500|578,500|932,300|932,300|880,500|698,500|784,500|698,1000";
string[] nodes = Spectrum.Split('|');
foreach (var node in nodes)
{
string[] tmp = node.Split(',');
int frequency = int.Parse(tmp[0]);
int duration = int.Parse(tmp[1]);
Kernel32_Beep(frequency,duration);
}
Console.WriteLine("Happy birthday to you!");
Console.ReadLine();
return (0);
}
}
}
参考:
[1] Beep 函数: https://docs.microsoft.com/zh-cn/windows/win32/api/utilapiset/nf-utilapiset-beep#main
[2] 音符频率关系对应表: https://pages.mtu.edu/~suits/notefreqs.html
用 Beep 函数让主板“唱”《生日歌》的更多相关文章
- 千与千寻主题曲beep函数版
在出代码之前,我们向来了解一下Beep函数. 例: Beep(,); 这个表示575Hz响100ms. 下面给出代码: #include <bits/stdc++.h> #include ...
- Beep函数实现硬件蜂鸣声
#include <Windows.h> #include <tchar.h> int WINAPI _tWinMain(HINSTANCE hInstance, HINSTA ...
- 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0...m-1报数....这样下去....直到剩下
// test20.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iostream> #include< ...
- 吃着火锅唱着歌学会Docker
第一篇:Docker概述 第二篇:Docker之版本与安装 第三篇:Docker之镜像 第四篇:Docker之容器 第五篇:Dcoker之容器与镜像 第六篇:Docker之网络管理 第七篇:Docke ...
- Python练习—函数
1.编写函数f(n),实现输入n的值,求出n的阶乘.然后调用此函数计算1! +2!+3!+……10!的结果,输出到屏幕上. def f(n): count = 1; for i in range(1, ...
- 【5号课堂】scratch制作电子生日贺卡
贺卡在我国的使用由来已久,在古代,上层士大夫有用名帖互相问候的习俗 唐宋以后,贺卡的名称及功能有所进步,称为”门状“或“飞帖“,到了明清,又叫“红单“.“贺年帖“等等,听着名字就知功能越来越世俗化,文 ...
- 亚马逊CEO贝索斯致股东信:阐述公司未来计划
亚马逊CEO 杰夫·贝索斯(Jeff Bezos)今天发布年度股东信, 详细描述了亚马逊的产品.服务和未来计划,当然,信中并没有任何的硬数据,比如说亚马逊Kindle的销量等等.但这封信也包括一些颇令 ...
- Ajax数据爬取--爬取微博
Ajax Ajax,即异步的JaveScript和XML.它不是一门编程语言,而是利用JaveScript在保证页面不被刷新,页面链接不改变的情况下与服务器交换数据并更新部分网页的技术. 对于传统的网 ...
- C++中发声函数Beep详解
By zhcs 以前,我听过一个神犇用C++函数做的音乐,当时的心里就十分激动:哇,好厉害啊,好神啊. 这次,我终于通过自己无助的盲目的摸索.研究,写出了这篇文章(此时我的内心是鸡冻的233) 下面是 ...
随机推荐
- iview获取全选和半选数据(方法一:基于树型数据)
在用iview的时候发现iview的树中获取半选和全选的函数getCheckedAndIndeterminateNodes在我使用的iview版本里面是没有提供的, 于是自己写了一下获取全选和半选节点 ...
- 《手把手教你》系列技巧篇(五十六)-java+ selenium自动化测试-下载文件-上篇(详细教程)
1.简介 前边几篇文章讲解完如何上传文件,既然有上传,那么就可能会有下载文件.因此宏哥就接着讲解和分享一下:自动化测试下载文件.可能有的小伙伴或者童鞋们会觉得这不是很简单吗,还用你介绍和讲解啊,不说就 ...
- 白嫖党的福音!!!全新的Java300集视频(2022版)来了!
它来了它来了,经过一年时间的沉淀, [尚学堂]高淇Java300集完整版正式发布啦! 应广大网友和尚学堂忠实的孜孜学子以及听众朋友的要求,尚学堂在去年十月份就把预计在2022年发布的Java300集提 ...
- 【小问题】为啥乱搞就不行,golang没安装在系统目录下,导致go get出现"package bytes: directory "/home/ahfu/go/src/bytes" is not using a known version control system"
想在自己的账号下安装golang开发环境,于是这样配置: wget https://dl.google.com/go/go1.14.2.linux-amd64.tar.gz cd /home/ahfu ...
- 【记录一个问题】用毫无用处的方法解决了libtask的asm.S在ndk下编译的问题
昨天提到,libtask中的asm.S使用的是ARM 32位的语法,因此在ARM 64下无法编译通过. 于是查了一下资料,改写了一下汇编代码,使得可以在64位下编译通过.源码如下 #if define ...
- spark中job stage task关系
1.1 例子,美国 1880 - 2014 年新生婴儿数据统计 目标:用美国 1880 - 2014 年新生婴儿的数据来做做简单的统计 数据源:https://catalog.data.gov 数据格 ...
- 搭建服务器之www-向外提供视频服务by html5 video标签
搭建好www服务器,主要目的有两个一个是试验下,另一个是想给女朋友个惊喜,给她个带视频的网页,嘿嘿当前测试下相应功能. 1,采用html5的视频功能:bideo标签. 源码如下: <!docty ...
- pytest文档5-参数化parametrize
pytest.mark.parametrize装饰器可以实现测试用例参数化. parametrizing 1.这里是一个实现检查一定的输入和期望输出测试功能的典型例子 # content of tes ...
- golang中的接口值
package main import ( "bytes" "fmt" "io" ) // 此处的w参数默认是一个空接口,当传递进来buf参 ...
- gin中如何记录日志和错误日志
package main import ( "github.com/gin-gonic/gin" "io" "os" ) func main ...