你提到你了解PlaySound.其中一个标志(SND_MEMORY)将允许您播放已加载到内存中的WAVE,即您自己创建的缓冲区.只要缓冲区具有适当的WAVE标题,无论你放在哪里都应该通过扬声器播放.

标头是一个44字节的块,非常简单

struct WaveHeader

{

DWORD chunkID; // 0x46464952 "RIFF" in little endian

DWORD chunkSize; // 4 + (8 + subChunk1Size) + (8 + subChunk2Size)

DWORD format; // 0x45564157 "WAVE" in little endian

DWORD subChunk1ID; // 0x20746d66 "fmt " in little endian

DWORD subChunk1Size; // 16 for PCM

WORD audioFormat; // 1 for PCM, 3 fot EEE floating point , 7 for μ-law

WORD numChannels; // 1 for mono, 2 for stereo

DWORD sampleRate; // 8000, 22050, 44100, etc...

DWORD byteRate; // sampleRate * numChannels * bitsPerSample/8

WORD blockAlign; // numChannels * bitsPerSample/8

WORD bitsPerSample; // number of bits (8 for 8 bits, etc...)

DWORD subChunk2ID; // 0x61746164 "data" in little endian

DWORD subChunk2Size; // numSamples * numChannels * bitsPerSample/8 (this is the actual data size in bytes)

};

您可以使用类似于以下内容的方式设置缓冲区:

char *myBuffer = new char[sizeof(WaveHeader) + myDataSize];

WaveHeader *header = (WaveHeader*)myBuffer;

// fill out the header...

char *data = myBuffer + sizeof(WaveHeader); //jumps to beginning of data

// fill out waveform data...

所以你使用它像:

PlaySound(myBuffer, NULL, SND_MEMORY | SND_ASYNC);

我假设你将在你的应用程序的生命周期中使用你生成的声音.如果不是,请注意SND_ASYNC标志.也就是说,在调用PlaySound(当它仍在使用中)时,不要直接释放缓冲区.

DirectX还支持从内存缓冲区播放音频,并且是一个功能更强大的API,但它可能会超出你需要做的事情:)

c语言扬声器程序,通过扬声器C编程并播放声音相关推荐

  1. 猴子选王c语言链表程序代码,c/c++编程题 之 猴子选大王(数组、链表两种方法)...

    题目描述 一群猴子要选新猴王.新猴王的选择方法是:让N只候选猴子围成一圈,从某位置起顺序编号为1-N号.从第1号开始报数,每轮从1报到3,凡报到3的猴子即退出圈子,接着又从紧邻的下一只猴子开始同样的报 ...

  2. 求矩形中心点坐标编程c语言,c语言编程序求矩形面积 我是新手,很多不懂,初学...

    C语言问题,编写一个程序计算矩形的面积和周长 我是新手,很多不懂,初学 代码为: #include void main(){float x,y; printf("请输入长和宽:\n" ...

  3. c语言超长编程程序,全国青少年软件编程等级考试C语言经典程序题10道五

    全国青少年软件编程等级考试C语言经典程序题10道五 [程序41] 题目:学习static定义静态变量的用法 1.程序分析: 2.程序源代码: #include "stdio.h" ...

  4. c++经典编程题_全国青少年软件编程等级考试C语言经典程序题10道十

    全国青少年软件编程等级考试C语言经典程序题10道十 [程序91] 题目:时间函数举例1 1.程序分析: 2.程序源代码: #include "stdio.h" #include & ...

  5. 2n 用c语言编程程序,用C语言编写程序.ppt

    <用C语言编写程序.ppt>由会员分享,可在线阅读,更多相关<用C语言编写程序.ppt(64页珍藏版)>请在人人文库网上搜索. 1.第2章 用C语言编写程序,2.1 在屏幕上显 ...

  6. c 语言程序编辑,C语言程序编辑学习篇—编程者说之C语言

    谈及C语言,我想凡是学过它的朋友都有这样一种感觉,那就是"让我欢喜让我忧."欢喜的是,C语言功能非常强大.应用广泛,一旦掌握了后,你就可以理直气壮地对他人说"我是电脑高手 ...

  7. c语言程序设计武汉大学出版社编程题答案,C语言及程序设计基础

    商品描述: [图书描述]: 本书系统地介绍C语言的实验指导和习题解答.全书共分三个部分,下面简单介绍这些章节的内容: 第一部分:C语言上机指导 这个部分包括从第l章到第6章的内容.第l章到第4章分别介 ...

  8. c语言和线性代数哪个难,学编程数学到底有多重要?线性代数能否视为一门程序语言呢?...

    点击上方蓝色字体,关注我们 相信这么努力的你 已经星标了我 老九学堂 你身边的IT导师 学编程数学到底有多重要?在大学数学学科中线性代数是最为抽象的一门课从初等数学到线性代数思维跨度比微积分和概率统计 ...

  9. 学会c语言能开发软件吗,学编程什么时候能够编写像酷狗音乐一样的程序?

    这个问题是很多新手都想知道的.因为刚开始学习编程的时候,都是从C语言开始的.C语言是所有编程语言的基础,只要你学会了C语言,其它语言学起来就会特别轻松.有疑问的读者可以参考这篇文章:浅谈编程:初学者如 ...

最新文章

  1. APP测试和传统软件测试有什么区别?
  2. php免费iphp免费idede,闲鹤草邻
  3. VTK:PolyData之PointLocatorVisualization
  4. QT通过JavaScript动态创建QML对象
  5. tf.gather( )的详细解析
  6. 【HTTP】get 和 post 两种基本请求方法
  7. linux闹钟软件下载,电量充满警示闹铃
  8. 华中科技大学计算机系统基础实验3报告,华中科技大学计算机系统基础实验报告.doc...
  9. 可以在一个函数中定义另一个函数_第5周 定义一个函数
  10. 计算机网络 chapter 6 应用层
  11. linux 文件读写 加速,MMAP文件加速读写小技俩
  12. OBS无延迟视频直播完整教程(组图)
  13. 顺序图、实线虚线、实心三角箭头、枝状箭头
  14. python PIL获取图片像素点
  15. 5 爬虫 异步协程 梨视频
  16. UML类图关系(C++)
  17. can和could的用法_情态动词can与could用法归纳
  18. 有线耳机真成了“时代的弃儿”?
  19. OpenSSL 拒绝服务、证书绕过漏洞通告
  20. css中创建主轴方向,flex-direction

热门文章

  1. 检查单 2014-12-31-01
  2. 全文索引——CONTAINS 语法代码
  3. 怎么样喝酒才会不那么容易喝醉?
  4. 自动化测试面试题及答案大全(2)
  5. 如何取消Apple ID授权,怎么取消Apple ID授权
  6. 乐鑫esp8266学习rtos3.0笔记:esp产品 如何从外部读取 csv 文件的数据,比如从代码读取外部文件阿里云三元组。(附带demo)
  7. oracle怎么值自增长,oracle怎么实现自增长
  8. 蓝鲸智云安装踩坑笔记
  9. list的remove方法
  10. 让业务容器化更安全便捷,阿里云容器镜像服务 ACR 推出免费制品中心