windows 音频编程
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 音频编程相关推荐
- Windows音频编程:Win32 Wave API 的使用
//Windows音频编程:Win32 Wave API 的使用 //下面是一个Win32控制台程序的源码,环境VS2008,新建一个空的Win32控制台项目,加入此文件编译即可,功能为录制5秒并回放 ...
- 整理下OSS方面的资料,免得到处找,linux音频编程,open sound system
浅析ASoC-audio驱动oss框架下/dev/dsp与alsa框架下设备节点打开和创建简易流程 http://blog.chinaunix.net/u2/70445/showart_2070710 ...
- windows下编程控制摄像头的详细介绍
这段时间闲来无事,看了看MSDN的文档,自己翻译了一下.一是为了学习,二是对空闲时间的打发.所以也希望大家在拍砖的同时,尊重我的劳动,如要转贴请注明转至blog.csdn.net/suntaoznz. ...
- 《windows核心编程系列》二谈谈ANSI和Unicode字符集
第二章:字符和字符串处理 使用vc编程时项目-->属性-->常规栏下我们可以设置项目字符集合,它可以是ANSI(多字节)字符集,也可以是unicode字符集.一般情况下说Unicode都是 ...
- Windows Socket编程笔记之最简单的小Demo
Windows Socket编程的大致过程: 服务器端: ----过程-------------对应的API------- 0.初始化 | WSAStartup() 1.创建So ...
- 《windows核心编程系列》十八谈谈windows钩子
windows应用程序是基于消息驱动的.各种应用程序对各种消息作出响应从而实现各种功能. windows钩子是windows消息处理机制的一个监视点,通过安装钩子能够达到监视指定窗体某种类型的消息的功 ...
- 《Windows核心编程(第5版•英文版)》暨《深入理解.NET(第2版•英文版)》有奖书评/读书笔记征集活动
<Windows核心编程(第5版•英文版)>暨<深入理解.NET(第2版•英文版)>有奖书评/读书笔记征集活动 图灵公司自成立以来,得到了CSDN的很多专家和朋友的帮助.为了感 ...
- chHANDLE_DLGMSG(windows核心编程)讲解
看完<Windows程序设计>后开始看<windows核心编程>, 结果看第一个案例的时候就很惊人的发现,Jeffery大牛的代码很深奥.乍一看好像没有包含<window ...
- 2、从汇编语言到Windows内核编程笔记(2)
内核线程 在驱动中生成的线程一般是系统线程.系统线程所在的进程名为"System". NTSTATUS PsCreateSystemThread( OUT PHANDLE Thre ...
最新文章
- python提示keyerror 13372,Python 学习笔记之—— Pandas 库
- Android的几种常用工具简称
- python操作Excel的5种方式
- php 文件加载方式
- oracle技术之检查点及SCN号(一)
- 16.IDA-列出函数中存在的全部call(函数调用窗口,查看函数内调用了哪些call)
- 我是学Java的,为什么要我装JDK
- 理解Unix/Linux系统中的文件描述符
- 手机图形计算器matlab,科学图形计算器 Mathlab
- linux ftp下载geo,GEO数据下载及处理详细过程
- android 界面 edittext详解,Android 开发之EditText属性详解
- OpenWrt-19.07.2 For HC5861(极路由3) /HiWiFi/Gee最新固件,极路由3刷openwrt
- AVPlayer AVPlayerItem cannot service a seek request with a completion handler until its status is AV
- matlab在故障诊断中的应用,Matlab在发动机故障诊断中的应用研究
- 【DIY】手把手教你爆改一台手机制作掌上游戏机
- windows2003 升级sp1,sp2 产品密匙无效 (转)
- krita源码提供了Tarball 和KDE Repository两套源码的区别
- **遇到“Cannot create file “不要慌**
- 淘宝拍立淘iOS相册架构设计小结
- 通信-SCADA系统