当前位置: 首页 > news >正文

Windows编程 DirectSound DirectMusic 音效和音乐

版本:VS2015 语言:C++

 

最近项目遭遇变故,公司随意开人,导致原本要出包的项目现在乱七八糟。现在不知道未来会怎么样……

 

我们Windows上2D的编程今天是最后一课了,没有听错,2D完结,接下来就是3D了,书已经准备好了,就等我回去去取,有没有点小兴奋呢?嘛,我现在是还没有接触过3D引擎啦,不过等学完再去看看Unreal岂不也是美哉。

 

今天要讲的是在dx中演奏音乐和音效,没看这个章节前,我一直认为音乐和音效的区别主要是播发时间长短的问题,实际一看,这里面十分的玄妙。

 

有一点先说一下,相比于图形技术的更新换代,音乐技术没有发生过多大的变化,dx3开始一直到dx7的时候,都是使用dx3的接口。直到dx8才把Sound和Music整合成了Audio。

 

那么音乐(Music)和音效(Sound)究竟有什么区别呢?

 

所谓Sound,专业点来说就是数字化的数码声音。比如你买了个麦克风,你干吼几下,然后录音软件把你的声音记录成了一个文件,那个文件就是音效了(很渗人啊)。

 

Music是合成音,直接取缔了录音的阶段,用户直接编入数据,让音频发生库发出数据所代表的音乐。

 

文件格式上来说,Sound代表格式是WAV,而Music是MIDI。

 

了解了这一些就知道为什么要分成DSound和DMusic了。好了下面是一个实际的程序,先我们使用老接口的Sound来播放一个音效。

 

申明一下,这里工程中的基础代码是上一节使用过代码,有需要的玩家可以看一下dxinput的内容。

 

首先需要引入dsound.lib和winmm.lib,但后者是windows部分用于读取媒体文件,所以只需要使用vs自带的lib就OK了。

 

然后引入头文件#include <mmsystem.h> #include "dsound.h"这两个。

 

环境搞定之后,下面是编写一些全局代码,做一些准备工作:

LPDIRECTSOUND lpds;	//dx音效对象
DSBUFFERDESC dsbd;	//音效缓存描述// WAV文件读入后存放的类
typedef struct pcm_sound_typ
{LPDIRECTSOUNDBUFFER dsbuffer;int state;int rate;int size;int id;
}pcm_sound, *pcm_sound_ptr;#define SOUND_NULL 0
#define SOUND_LOADED 1const int MAX_SOUNDS = 10;	//最多存放音效的数量
pcm_sound sound_fx[MAX_SOUNDS];		//所有的音效

然后我们要实现的效果就是在游戏初始化的时候读取一个文件,并播放,我看了一下就选wind.wav这个风的音效(不知道从哪录的,怪渗人的)。

 

下面是初始化并播放的代码:

// 开始创建音效对象
if (DirectSoundCreate(NULL, &lpds, NULL)!=DS_OK)
{popMessage(TEXT("创建音效对象失败"));return 0;
}if (FAILED(lpds->SetCooperativeLevel(main_window_handle, DSSCL_NORMAL)))	//设置普通的协作等级
{popMessage(TE
http://www.lryc.cn/news/571002.html

相关文章:

  • 基础RAG实现,最佳入门选择(一)
  • 学计算机高中应选什么科目,新高考选哪些科目可以报计算机?高中生如何进步?...
  • 搭建游戏用什么类型的服务器更好
  • 分享一键群发各大博客社区平台的工具
  • 存储器的分类(RAM,ROM等)及其性能指标
  • HTC Incredible S G11如何刷recovery,如何获得root权限,如何删除预装的系统应用
  • 李开复给中国学生的第四封信
  • 深圳学区房地图
  • DAY 54 Inception网络及其思考
  • 人物点评: 马云的野心(zz)
  • 狱搜导航-个性化导航自定义导航网站,搜索导航,简洁清晰大气,支持各种自定义
  • 中国第二大传感器企业宝座易主!14家公司新上市!国产传感器风起云涌!(附最新市值排名榜单)
  • Codeigniter 4基础教程(1)-- Wamp+CodeIgniter 4以及helloworld
  • 计算机主机漏电,电脑主机箱漏电六大原因和解决方法
  • Windows安装与配置Git cz (commitizen)
  • 包含15个APP客户端UI界面的psd适用于餐厅咖啡店面包店快餐店
  • d3dx9_42.dll丢失的解决方法-d3dx9_42.dll缺失下载方法
  • InstallShield 2010打包安装程序,安装完成后执行某个程序
  • 送两本《ECharts数据可视化:入门、实战与进阶》
  • 蓝屏错误代码0x0000007E的解决方法及编程示例
  • linux内核(二)内核移植(DM365-DM368开发攻略——linux-2.6.32的移植)
  • Internet Explorer 已不再尝试还原此网站。该网站看上去仍有问题。
  • 关于部分网页打不开的解决方法详解
  • 学生学籍管理系统页面源代码html_110.188.251:8088四川大学锦江学院教务管理系统...
  • 盗版xp成功验证成正版,享受正版增值服务!—— 完美解决XP被黑和盗版提示
  • 英语学习漫谈
  • 导航条——flash导航条
  • 音频毒品
  • 002微信小程序模板与配置
  • 国开电大 管理心理学 形考任务1-4