windows 音频编程主要有三种方式:
1.MCI,这种方式很简单,但是不够灵活 
2.waveXXXX等低阶的声音API 
3.DirectSound

编写一个功能较强大的音频处理程序,那就必须使用低级音频函数和多媒体文件I/O来控制音频设备的输入和输出。因为低级音频函数可直接与音频驱动程序交互,通过窗口消息或回调(CALL BACK)函数来管理音频数据块的记录和播放,控制非常灵活。重要的一点是,低级音频函数为我们提供了一个设备无关的接口。

示波器

源码爱好者网站

http://www.codefans.net/

利用DirectSound实现声卡录音

http://www.hur.cn/Article/2013/120856.html

音频数据文件WAVE结构分析--Windows XP 启动.wav 文件头分析

http://blog.csdn.net/c_huabo/article/details/5984402

快速傅里叶变换 fft

http://www.codeproject.com/Articles/6855/FFT-of-waveIn-audio-signals

http://www.codeproject.com/Articles/29366/Play-Wave-file-with-DirectSound-and-display-its-sp

我遇到的死锁是由于当执行WaveInReset函数时,回调函数仍然在调用WaveInAddBuffer才产生的,所以只要设置标示符,使将要执行WaveInReset函数之时及以后回调函数不调用WaveInAddBuffer即可避免死循环,另外不要忘了在调用WaveInReset之前调用WaveInStop函数。

参考

http://www.docin.com/p-159437153.html
http://www.docin.com/p-327123929.html
http://blog.csdn.net/joyzml/article/details/5381143

http://ee.sjtu.edu.cn:8080/PDF/Paper/junheng.htm

请教关于实时录音/放音的问题

http://bbs.csdn.net/topics/99939

API 层实现语音录制

http://www.lihuasoft.net/article/show.php?id=124

基于WaveX低级音频函数的实时语音通信

http://www.wavecn.com/content.php?id=95

http://wmnmtm.blog.163.com/blog/static/3824571420111030125597/?suggestedreading&wumii

http://www.elautoctrl.info/wordpress/archives/1730

http://www.programfan.com/article/729.html

http://old.uplook.cn/blog/0/1939/

http://www.vckbase.com/index.php/wv/664

http://www.cnblogs.com/linbc/archive/2009/03/18/1415936.html

http://blog.sina.com.cn/s/blog_49cb42490100l4u1.html

http://blog.sina.com.cn/s/blog_49cb42490100l51f.html

http://blog.sina.com.cn/s/blog_49cb42490100l99d.html

声音以图形显示的计算机实现

http://wenku.baidu.com/view/9bdac51c59eef8c75fbfb3bf.html

一个简单的录音播放程序:即边录边播,用MFC开发

http://www.pudn.com/downloads165/sourcecode/windows/multimedia/detail756713.html

波形示意软件

http://www.m5home.com/bak_blog/article/282.html

android录音与示波器

http://jim443.iteye.com/blog/1666087

vc画波形图

http://tw.knowledge.yahoo.com/question/question?qid=1611033103794

http://www.pudn.com/downloads171/sourcecode/windows/bitmap/detail790648.html

http://help.apple.com/mainstage/mac/2.2/cn/mainstage/usermanual/index.html#chapter=A%26section=0

http://bbs.csdn.net/topics/100137205

Fundamentals of Sound: How to Make Music out of Nothing at All

http://www.codeproject.com/Articles/15786/Fundamentals-of-Sound-How-to-Make-Music-out-of-Not

WAV文件的格式:
  WAV文件,由WAV文件头和音频采样数据组成。
  由文件头可以得知该文件的音频采样数据的相关信息(声道数,采样率,采样数据的位数等)  声道数最多2个声道,2个声道也就是立体声。
  得到文件头信息后,把采样数对应坐标画上去即可。

format.wFormatTag       =WAVE_FORMAT_PCM;   //格式为PCM

format.nChannels        =1;                 //单声道,2是立体声

format.nSamplesPerSec   =11025;             //采样率

format.nAvgBytesPerSec  =11025;         //数据率

format.nBlockAlign      =1;                 //每样点的字节数

format.wBitsPerSample   =8;             //采样精度

format.cbSize           =0;

WAV档案格式
偏移量 
位元组 
资料
0000
4
「RIFF」
0004
4
波形块的大小(档案大小减8)
0008
4
「WAVE」
000C
4
「fmt 」
0010
4
格式块的大小(16位元组)
0014
2
wf.wFormatTag = WAVE_FORMAT_PCM = 1
0016
2
wf.nChannels
0018
4
wf.nSamplesPerSec
001C
4
wf.nAvgBytesPerSec
0020
2
wf.nBlockAlign
0022
2
wf.wBitsPerSample
0024
4
「data」
0028
4
波形资料的大小
002C
波形资料
这是一种扩充自RIFF(Resource Interchange File Format:资源交换档案格式)的格式。RIFF是用於多媒体资料档案的万用格式,它是一种标记档案格式。在这种格式下,档案由资料「块」组成,而这些 资料块则由前面4个字元的ASCII名称和4位元组(32位元)的资料块大小来确认。资料块大小值不包括名称和大小所需要的8位元组。
波形声音档案以文字字串「RIFF」开始,用来标识这是一个RIFF档案。字串後面是一个32位元的资料块大小,表示档案其余部分的大小,或者是小於8位元组的档案大小。
资料块以文字字串「WAVE」开始,用来标识这是一个波形声音块,後面是文字字串「fmt」-注意用空白使之成为4字元的字串-用来标识包含 波形声音资料格式的子资料块。「fmt」字串的後面是格式资讯大小,这里是16位元组。格式资讯是WAVEFORMATEX结构的前16个位元组,或者, 像最初定义时一样,是包含WAVEFORMAT结构的PCMWAVEFORMAT结构。
格式资讯的後面是文字字串「data」,然後是32位元的资料大小,最後是波形资料本身。这些资料是按相同格式进行简单连结的样本,这与低阶 波形声音设备上所使用的格式相同。如果样本大小是8位元,或者更少,那么每个样本有1位元组用於单声道,或者有2位元组用於立体声。如果样本大小在9到 16位元之间,则每个样本就有2位元组用於单声道,或者4位元组用於立体声。对於立体声波形资料,每个样本都由左值及其後面的右值组成。

用完设备之后,必须调用waveOutClose函数关闭波形输出设备,以便其他程序可以使用设备。

示波器中的波形图就是每个采样点对应的坐标点连起来的,这个坐标点可以是声音大小。就是每个采样的值,幅度。

在线音频格式转换

http://media.io/

windows 音频编程相关推荐

  1. Windows音频编程:Win32 Wave API 的使用

    //Windows音频编程:Win32 Wave API 的使用 //下面是一个Win32控制台程序的源码,环境VS2008,新建一个空的Win32控制台项目,加入此文件编译即可,功能为录制5秒并回放 ...

  2. 整理下OSS方面的资料,免得到处找,linux音频编程,open sound system

    浅析ASoC-audio驱动oss框架下/dev/dsp与alsa框架下设备节点打开和创建简易流程 http://blog.chinaunix.net/u2/70445/showart_2070710 ...

  3. windows下编程控制摄像头的详细介绍

    这段时间闲来无事,看了看MSDN的文档,自己翻译了一下.一是为了学习,二是对空闲时间的打发.所以也希望大家在拍砖的同时,尊重我的劳动,如要转贴请注明转至blog.csdn.net/suntaoznz. ...

  4. 《windows核心编程系列》二谈谈ANSI和Unicode字符集

    第二章:字符和字符串处理 使用vc编程时项目-->属性-->常规栏下我们可以设置项目字符集合,它可以是ANSI(多字节)字符集,也可以是unicode字符集.一般情况下说Unicode都是 ...

  5. Windows Socket编程笔记之最简单的小Demo

    Windows Socket编程的大致过程: 服务器端: ----过程-------------对应的API-------  0.初始化         |  WSAStartup()  1.创建So ...

  6. 《windows核心编程系列》十八谈谈windows钩子

    windows应用程序是基于消息驱动的.各种应用程序对各种消息作出响应从而实现各种功能. windows钩子是windows消息处理机制的一个监视点,通过安装钩子能够达到监视指定窗体某种类型的消息的功 ...

  7. 《Windows核心编程(第5版•英文版)》暨《深入理解.NET(第2版•英文版)》有奖书评/读书笔记征集活动

    <Windows核心编程(第5版•英文版)>暨<深入理解.NET(第2版•英文版)>有奖书评/读书笔记征集活动 图灵公司自成立以来,得到了CSDN的很多专家和朋友的帮助.为了感 ...

  8. chHANDLE_DLGMSG(windows核心编程)讲解

    看完<Windows程序设计>后开始看<windows核心编程>, 结果看第一个案例的时候就很惊人的发现,Jeffery大牛的代码很深奥.乍一看好像没有包含<window ...

  9. 2、从汇编语言到Windows内核编程笔记(2)

    内核线程 在驱动中生成的线程一般是系统线程.系统线程所在的进程名为"System". NTSTATUS PsCreateSystemThread( OUT PHANDLE Thre ...

最新文章

  1. python提示keyerror 13372,Python 学习笔记之—— Pandas 库
  2. Android的几种常用工具简称
  3. python操作Excel的5种方式
  4. php 文件加载方式
  5. oracle技术之检查点及SCN号(一)
  6. 16.IDA-列出函数中存在的全部call(函数调用窗口,查看函数内调用了哪些call)
  7. 我是学Java的,为什么要我装JDK
  8. 理解Unix/Linux系统中的文件描述符
  9. 手机图形计算器matlab,科学图形计算器 Mathlab
  10. linux ftp下载geo,GEO数据下载及处理详细过程
  11. android 界面 edittext详解,Android 开发之EditText属性详解
  12. OpenWrt-19.07.2 For HC5861(极路由3) /HiWiFi/Gee最新固件,极路由3刷openwrt
  13. AVPlayer AVPlayerItem cannot service a seek request with a completion handler until its status is AV
  14. matlab在故障诊断中的应用,Matlab在发动机故障诊断中的应用研究
  15. 【DIY】手把手教你爆改一台手机制作掌上游戏机
  16. windows2003 升级sp1,sp2 产品密匙无效 (转)
  17. krita源码提供了Tarball 和KDE Repository两套源码的区别
  18. **遇到“Cannot create file “不要慌**
  19. 淘宝拍立淘iOS相册架构设计小结
  20. 通信-SCADA系统

热门文章

  1. 一款超牛逼的神仙级接私活软件!吊到不行
  2. Android OpenGL ES 渲染文本
  3. 又又又被段永平加仓,是时候抄底腾讯了吗?
  4. String,StringBuffer与StringBuilder的区别以及String为什么是不可变的?
  5. 初级黑客必需撑握的8个DOS命令
  6. CUMT学习日记——计算机组成原理之面向考题复习
  7. 用R获取芯片探针与基因的对应关系三部曲-bioconductor
  8. 利用搜索关键字爬取今日头条新闻评论信息案例
  9. Access-Control-Max-Age是什么
  10. 为什么虚拟机上不了网