VS-c++播放声音

一. 系统提示音

最简单的声音就是这个了…

cout<<"\a";

二. Beep()函数

可以根据声音的频率发出声音,比较硬核。

1. 函数原型

BOOL Beep(
	DWORD dwFreq;  
	DWORD dwDuration;
);  

2. 参数说明

dwFreq 指定要发出的频率(HZ)。
dwDuration 指定发音的时长,以毫秒为单位。

3. 代码测试 (原作者地址不见了,链接没补上)

播放的是天空之城

#include <iostream>
#include <Windows.h>

using namespace std;

enum Fy
{
    d1 = 262, d1_ = 277, d2 = 294, d2_ = 311, d3 = 330, d4 = 349, d5 = 392, d5_ = 415,
    d6 = 440, d6_ = 466, d7 = 494, z1 = 523, z1_ = 554, z2 = 578, z2_ = 622, z3 = 659,
    z4 = 698, z4_ = 740, z5 = 784, z5_ = 831, z6 = 880, z6_ = 932, z7 = 988, g1 = 1046,
    g1_ = 1109, g2 = 1175, g2_ = 1245, g3 = 1318, g4 = 1397, g4_ = 1480,
    g5 = 1568, g5_ = 1661, g6 = 1760, g6_ = 1865, g7 = 1976, yaya = 0
};

struct Yf
{
    enum Fy s;
    int t;
};

struct Yf Music[1000] =
{
        {z6,50},{z7,50},{g1,150},{z7,50},{g1,100}, //5
        {g3,100},{z7,300},{z3,100},{z6,150},{z5,50}, //10
        {z6,100},{g1,100},{z5,300},{z2,50},    //14
        {z3,50},{z4,150},{z3,50},{z4,50},{g1,150}, //19
        {z3,150},{z2,50},{z3,50},{g1,150},{z7,150}, //24
        {z4_,50},{z4_,100},{z7,100},{z7,200},{z6,50}, //29
        {z7,50},{g1,150},{z7,50},{g1,100},{g3,100}, //34
        {z7,200},{z3,100},{z6,150},      //37
        {z5,50},{z6,100},{g1,100},{z5,300},{z3,100},{z4,100},{g1,50}, //44
        {z7,150},{g1,100},{g2,100},      //47
        {g3,50},{g1,150},{g1,50},{z7,50},{z6,100},{z7,100},{z5_,100}, //54
        {z6,300},{g1,50},{g2,50},   //57
        {g3,150},{g2,50},{g3,100},{g5,100},{g2,300},{z5,100}, //63
        {g1,150},{z7,50},{g1,100},{g3,100},{g3,300},{z6,50},{z7,50},{g1,150}, //71
        {z7,50},{g1,100},{g2,100},{g1,150},{z5,50}, //76
        {z5,200},{g4,100},{g3,100},{g2,100},{g1,100}, //81
        {g3,400},{yaya,50},{g3,50},{g6,200},{g5,100},{g5,100},{g3,50}, //88
        {g2,50},{g1,100},{yaya,50},{g1,50},{g2,100},{g1,50},{g2,100},{g5,100}, //96
        {g3,200},{yaya,50},{g3,50},{g6,200},{g5,200},{g3,50},{g2,50}, //103
        {g1,200},{yaya,50},{g1,50},{g2,100},{g1,50},{g2,100},{z7,100}, //110
        {z6,200},{yaya,100},{z6,50},{z7,50},{z6,500}
};

int main()
{
    for (int i = 0; i <194; ++i) {
        Beep(Music[i].s, Music[i].t * 5);
    }
    return 0;
}

三. PlaySound()函数

直接播放.wav音乐文件,似乎是不错的选择。

1. 函数原型

BOOL PlaySound(
   LPCTSTR pszSound,
   HMODULE hmod,
   DWORD   fdwSound
);

2. 参数说明

pszSound 指定要播放的声音。
hmod 指向包含要加载资源的可执行文件的句柄。
fdwSound 用于播放声音的标志。

  • SND_FILENAME:通过文件名播放音乐
  • SND_RESOURCE:通过资源标识符播放音乐
  • SND_ASYNC:异步播放
  • SND_LOOP:循环播放

3. 代码测试

#include <iostream>
#include <Windows.h>
#include <Mmsystem.h>
#pragma comment(lib,"winmm.lib")
using namespace std;
int main()
{
    PlaySound(TEXT("D:/BaiduNetdiskDownload/Love.wav"), nullptr, SND_FILENAME | SND_SYNC);
    return 0;
}

4. 可能的问题

  1. 音乐地址有误。包括地址符错误和可能的中文编码问题。
  2. 未引用相关头文件。
  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值