热门关键字:  听力密码  听力密码  新概念美语  单词密码  巧用听写练听力
图书信息

数字音频规范与程序设计:基于Visual C++开发

中国水利水电出版社
    【作 者】曹强 编著 【I S B N 】978-7-5084-9819-5 【责任编辑】李炎 【适用读者群】本专通用 【出版时间】2012-06-01 【开 本】16开 【装帧信息】平装(光膜) 【版 次】第1版第1次印刷 【页 数】472 【千字数】715 【印 张】29.5 【定 价】58 【丛 书】暂无分类 【备注信息】赠1CD
图书详情

    本书是作者根据多年的工作经验而总结出来的有关Windows平台下数字音频规范与程序设计的一手资料,由浅入深地介绍了当今多数主流音频相关的技术规范与编程实现,适合于对数字音频感兴趣、准备或正在从事数字音频相关工作和开发的用户。

    本书共分11章,涵盖了Windows平台下数字音频相关规范与编程的许多方面,详细介绍了Windows系统下高层与底层的多媒体音频接口(API);WAVE音频的全面解析、播放与录音;MIDI音乐的全面解析、播放与录制;USB MIDI驱动设计;MP3的格式与编解码;乐音的基频检测;音频混音器原理与编程;低延迟ASIO音频驱动开发;普通音频插件与VST(i)插件的设计;游戏开发中经常使用的DirectSound播放与录制等。

    本书最大的特色是不但针对多媒体音频应用程序的开发做了较全面的介绍,可以满足大部分常规音频编程用户的需求,而且对音频驱动的开发也做了较多的切入。其中一部分是作者近几年独自研究的成果,对于有这方面需求的读者来说都是很宝贵的参考资料。

    本书结构清晰,逻辑严密,内容具体且涉及面广泛,不但是从事多媒体(音频)开发与应用的广大开发人员的技术指导书,同时也可作为各高等院校相关专业、非相关专业师生重要的参考读物。

    本书中每章都提供了一个或多个经典的编程实例程序,附带在光盘中赠送,光盘中提供了所有章节中实例程序的Visual C++源代码。

    本书为作者多年工作经验总结出来的有关Windows平台下数字音频规范与程序设计的一手资料,由浅入深地介绍 了当今多数主流音频相关的技术规范与编程实现。

    本书不但针对多媒体音频应用程序的开发做了较全面的介绍,可以满足大部分常规音频编程用户的需求,而且对音频驱动的开发也做了较多的切入,可以说本书是目前为止市场上最为全面的音频应用学习和开发资料。

    书中作者把自己的技术和经验通过文字、图形相结合的方式进行知识点的描述,通俗易懂,同时通过大量的精选实例程序进行过程和效果展示,具体实用,所见即所得。

    音频是多媒体技术中非常重要的一部分,它往往与视频结合在一起广泛应用于影视娱乐、多媒体系统、电子乐器、游戏设计、广告设计等诸多行业。近几年来,随着多媒体技术的迅速发展,音频所涉及的领域也越来越广泛,越来越深入人们日常生活的方方面面,多媒体开发也是近年来开发人员所关注的重点。

    本书包含了Windows平台下音频开发的许多方面,主要由如下几部分组成:Windows多媒体音频API;多种主流音频格式及其播放与录制,包括WAVE、MIDI、MP3等;数字音乐合成;音频插件;基频检测;MP3编解码等。为了使读者能够抓住重点,把握解决问题的方法,书中每章都安排了由Visual C++实现的一个或多个实例程序,力求做到理论联系实践,所见即所得。

    因本书涉及的概念和专业术语比较多,并且在实际应用中所需要的原理也比较广泛,建议读者在阅读本书时可以先略过不懂的概念或词汇,因为篇幅的限制也许对它们没在书中做出详细的解释,不过有关乐理的常识大部分在本人的博客上可以找到详细的解释和说明,有此方面需求的读者请关注我的博客空间:http://blog.sina.com.cn/consonance。

    虽然本书的所有实例程序均基于Visual C++,但为了能够使不同开发平台下的开发人员也能很好地理解其实现原理与过程,一些核心代码在书中都有详细的解释,并且大部分关键代码都已通过类的形式封装好,因此要移植到其他的开发平台也不是很困难的事。当然,本书的第1章对Visual C++的入门做了最基本的介绍,目的就是希望每位读者都能够熟悉Visual C++的一些基本使用方法,会使用并看懂书中的所有实例程序。

    本书的所有内容都是作者在实际工作中总结出来的宝贵而实用的经验,有些还是个人多年来专心研究的成果,比如VST(i)插件、ASIO音频驱动等。书中所有程序实例也是本人精心挑选设计而成,我想对不少读者来说应该都是很有参考价值的,某些代码甚至可以直接应用在你的项目开发中。CD中的所有源代码都通过了Visual C++ 6.0和Visual Studio 2005的编译。

    本书既可以作为广大音频行业工作者的参考书,也可以供从事多媒体相关研究和设计的院校师生使用。

    应该说本书的创作过程是艰难的,能够以这样全面和完整的方式与读者见面,我想离不开我的家人、朋友和同事以及中国水利水电出版社的全力支持。

    感谢顾冰峰先生和郭润博先生为本书写的序,使我的作品蓬荜生辉,特别是顾总在本书的构架和篇章的安排上给了我很多非常好的建议,从而加速了此书的出版。

    感谢公司董事长Fanny,因为得理公司给了我很好的学习环境和生活环境,使我有更多的学习机会,在这样的环境中我才能静下心来完成此书。

    感谢中国乐器协会电鸣乐器分会会长盛子斐先生对本书的特别指导和宣传。

    感谢中国水利水电出版社杨庆川老师的耐心指导和帮助,她请业内专业的老师看了本书的内容简介和目录后提出了几点非常中肯的意见,比如第1章的内容就是我后来添加进来的。

    感谢中国水利水电出版社编辑李炎老师的信任和支持,将书中的错误降至最低,使本书更加完整。

    感谢我的父母和岳父岳母,谢谢他们这几年的所有辛勤付出和源源不断的精神鼓励。

    最后,特别感谢我的妻子,因为写作占用了我很多休息时间,确切地说是三年的业余时间,很多时候都忽略了她的感受,还要承担家里的家务活,在此我要对她说一声辛苦。

    希望本书对读者有所帮助,也希望能够为音频行业的发展做出一点点贡献。尽管在编写本书时尽了最大的努力,但由于工作繁忙和限于作者的水平,书中难免会出现一些不足甚至错误之处,还望广大读者给予批评和指正。

    推荐序一
    推荐序二
    前言

    第1章 Windows音频体系与Visual C++
    开发基础 1
    导读 1
    1.1 认识声音与音频 1
    1.2 Windows音频体系层次结构 2
    1.2.1 用户模式与内核模式 2
    1.2.2 关于声音的延迟问题及解决方法 3
    1.3 Visual C++开发基础 5
    1.3.1 区分C、C++和Visual C++三者
    的关系 5
    1.3.2 事件驱动与消息处理 8
    1.3.3 开发环境概述 11
    1.3.4 MFC概述 12
    1.3.5 利用向导创建一个简单的
    对话框程序 13
    第2章 MCI与MMAPI多媒体编程接口 20
    导读 20
    2.1 MCI简介 20
    2.1.1 MCI逻辑结构 21
    2.1.2 MCI接口、函数与命令 21
    2.1.3 MCI消息与宏定义 24
    2.2 MCI编程步骤 24
    2.3 MCI编程实例 27
    2.3.1 播放CD 27
    2.3.2 WAVE播放与录音 27
    2.3.3 基于MCIWnd的多媒体播放器 28
    2.4 MMAPI简介 28
    2.4.1 四种多媒体文件I/O 29
    2.4.2 波形音频处理 40
    2.4.3 MIDI的流缓冲区与非流
    缓冲区处理 41
    2.4.4 多媒体定时器 47
    第3章 WAVE格式及播放与录制 49
    导读 49
    3.1 认识WAVE 49
    3.2 WAV文件结构 50
    3.3 采样点与采样帧的区别 51
    3.4 WAVE中常用的一些块 53
    3.4.1 格式块 53
    3.4.2 数据块 54
    3.4.3 提示块 55
    3.4.4 播放列表块 55
    3.4.5 关联数据块 56
    3.4.6 采样块 57
    3.5 多媒体波形音频函数 59
    3.6 波形音频处理的回调机制 60
    3.7 WAVE播放 61
    3.7.1 WAVE播放基本流程 61
    3.7.2 双缓冲播放机制 65
    3.7.3 关于死锁的问题 66
    3.8 WAVE录音 66
    3.9 编程实例 70
    3.9.1 WAV文件解析及分离与合并 70
    3.9.2 WAVE播放器 71
    3.9.3 WAVE录音机 71
    第4章 MIDI相关标准与程序设计 73
    导读 73
    4.1 MIDI规范 73
    4.1.1 什么是MIDI 73
    4.1.2 MIDI信息 75
    4.1.3 其他MIDI规范 94
    4.1.4 GM、GS与XG 96
    4.1.5 GM2 99
    4.2 MIDI文件解析 100
    4.2.1 MIDI文件格式 100
    4.2.2 MIDI文件示例 107
    4.2.3 与MIDI相关的时间计算 108
    4.2.4 程序实例 111
    4.3 USB MIDI 123
    4.3.1 USB MIDI概述 123
    4.3.2 USB MIDI的实现机制 124
    4.3.3 USB-MIDI功能器件 125
    4.3.4 USB MIDI数据格式 129
    4.3.5 USB MIDI操作模型 130
    4.3.6 描述符 132
    4.3.7 USB MIDI驱动设计 137
    4.3.8 USB驱动程序 145
    4.3.9 用户模式音频驱动几个上层
    接口的实现 154
    第5章 数字音乐合成 159
    导读 159
    5.1 合成器概述 159
    5.2 MIDI的发音原理 160
    5.3 FM合成原理 161
    5.4 波表合成 163
    5.4.1 波表合成器工作原理 165
    5.4.2 波表合成的关键技术 166
    5.4.3 频率变换 167
    5.4.4 循环(Loop) 168
    5.4.5 波表合成器的衡量指标 168
    5.5 软波表与硬波表 169
    5.6 音色制作 170
    5.6.1 样本准备与分配 170
    5.6.2 样本参数调整 171
    5.6.3 音色参数调整 171
    5.6.4 设置效果参数 172
    5.6.5 保存音色文件 172
    第6章 音频混音器编程 173
    导读 173
    6.1 混音器原理 173
    6.1.1 声卡硬件模型 174
    6.1.2 音频线路 175
    6.1.3 控件 177
    6.2 混音器编程 179
    6.2.1 Mixer API函数介绍 180
    6.2.2 枚举系统中的混音器设备 180
    6.2.3 打开混音器设备 181
    6.2.4 枚举音频线路 182
    6.2.5 获取线路信息 185
    6.2.6 枚举线路的相关控件 185
    6.2.7 获取与线路相关的所有控件信息 187
    6.2.8 通过控件ID获取控件信息 188
    6.2.9 通过控件类型获取控件信息 188
    6.2.10 获取或设置控件的值 189
    6.2.11 多声道控件 190
    6.2.12 多条目控件 191
    6.2.13 混音器专用消息 193
    6.3 程序实例——混音器调节软件 193
    第7章 音频插件设计 195
    导读 195
    7.1 普通音频插件 195
    7.1.1 插件的实现原理 195
    7.1.2 基于动态链接库的方法实现
    音频插件 196
    7.1.3 实现支持三种插件类型的MiNi
    播放器 200
    7.1.4 给Winamp编写一个MIDI
    键盘插件 209
    7.1.5 基于ATL的方法实现COM插件 212
    7.2 VST音频插件 212
    7.2.1 VST插件概述 212
    7.2.2 VST SDK与音频数据处理 214
    7.2.3 创建一个最简单的VST插件 214
    7.2.4 设计一个Stereo Delay效果的
    VST插件 218
    7.2.5 VST XML文件 226
    7.2.6 设计一个简单的FM合成器插件 226
    7.2.7 VST GUI编程 242
    7.2.8 实现一个自行设计界面的
    Ring Modulator插件 247
    7.2.9 VST宿主程序设计 249
    第8章 基音的时频域检测 253
    导读 253
    8.1 概述 253
    8.2 音乐信号的前期处理 254
    8.2.1 信号数字化 254
    8.2.2 音框 255
    8.2.3 静音与杂音处理 256
    8.3 时域基频检测方法 259
    8.3.1 自相关函数法 259
    8.3.2 自相关函数法的程序实例 261
    8.3.3 平均振幅差函数法 261
    8.3.4 平均振幅差函数法的程序实例 262
    8.4 频域检测方法 263
    8.4.1 傅里叶变换的原理及其物理意义 263
    8.4.2 快速傅里叶变换法 270
    8.4.3 快速傅里叶变换法的程序实例 271
    8.4.4 谐波积频谱法 272
    8.4.5 谐波积频谱法的程序实例 273
    8.4.6 倒谱法 274
    8.4.7 极大似然法 275
    8.5 时频域检测方法 276
    8.5.1 小波变换法 276
    8.5.2 ACF与AMDF结合法 276
    8.5.3 ACF与AMDF结合法的程序实例 277
    8.6 基频检测的后期处理 277
    8.7 软件调音器的设计 278
    第9章 ASIO音频驱动设计 280
    导读 280
    9.1 何为ASIO 280
    9.2 用户层ASIO驱动设计 281
    9.2.1 ASIO的有限状态机 282
    9.2.2 音频数据流的传输 283
    9.2.3 ASIO驱动接口 286
    9.2.4 数据同步 289
    9.2.5 四个重要的回调函数 289
    9.2.6 几个重要的数据结构 290
    9.2.7 输入输出延迟问题 293
    9.3 用户层ASIO驱动的实现 295
    9.3.1 准备工作 297
    9.3.2 添加自注册功能 298
    9.3.3 实现IASIO的所有接口 299
    9.4 在音频软件中使用ASIO驱动 306
    9.4.1 ASIO播放 307
    9.4.2 ASIO录音 312
    第10章 MP3格式与编解码 316
    导读 316
    10.1 MP3文件格式 316
    10.1.1 MP3简介 316
    10.1.2 MP3文件格式 320
    10.1.3 程序实例——MP3文件分析 335
    10.2 MP3编解码 336
    10.2.1 MP3编码的相关概念 336
    10.2.2 MP3编码过程 359
    10.2.3 MP3解码过程 377
    10.2.4 程序实例 390
    第11章 DirectSound开发与应用 410
    导读 410
    11.1 DirectX概述 410
    11.2 DirectSound简介 413
    11.2.1 DirectSound的功能组成与
    组件对象 414
    11.2.2 DirectSound的缓冲区 414
    11.2.3 DirectSound的数据结构 415
    11.3 DirectSound播放 415
    11.3.1 Visual C++编译环境配置 415
    11.3.2 DirectSound回放的基本流程 416
    11.3.3 枚举系统输出声音设备 417
    11.3.4 创建DirectSound对象 418
    11.3.5 设置声音设备的协作等级 418
    11.3.6 创建声音缓冲区对象 420
    11.3.7 加载WAVE声音数据 422
    11.3.8 声音缓冲区回放 422
    11.3.9 声音缓冲区控制 428
    11.3.10 混音 429
    11.3.11 3D音效和声音效果 430
    11.3.12 DirectSound 3D收听者 434
    11.3.13 设置声音特效 434
    11.4 DirectSound录音 435
    11.4.1 枚举系统录音设备 436
    11.4.2 创建设备对象 436
    11.4.3 获取录音设备的性能 436
    11.4.4 创建录音缓冲区 436
    11.4.5 获取录音缓冲区信息 437
    11.4.6 为录音缓冲区对象设置通知机制 438
    11.4.7 开始录音 439
    11.5 使用DirectSound中的效果 441
    11.5.1 在缓冲区中设置效果 441
    11.5.2 混响(Reverb) 442
    11.5.3 合唱(Chorus) 443
    11.5.4 回响(Echo) 444
    11.5.5 镶边(Flanger) 445
    11.5.6 参量均衡(Parametric EQ) 446
    11.5.7 咕噜(Gargle) 447
    11.5.8 失真(Distortion) 448
    11.5.9 压缩(Compression) 449
    11.6 扬声器配置 451
    11.6.1 设置扬声器配置 451
    11.6.2 获取扬声器配置 451
    11.7 程序实例 452
    11.7.1 DirectSound播放 452
    11.7.2 DirectSound录音 452
    11.7.3 DirectSound效果器 453
    附录 MP3附表 454
    参考文献 459
最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册