數字音頻規範與程式設計

MDCT10.5.4.1 t1區10.6.4.3 d錄音11.4.1

內容介紹

本書是作者根據多年的工作經驗而總結出來的有關Windows平台下數字音頻規範與程式設計的一手資料,由淺入深地介紹了當今多數主流音頻相關的技術規範與編程實現,適合於對數字音頻感興趣、準備或正在從事數字音頻相關工作和開發的用戶。
本書共分11章,涵蓋了Windows平台下數字音頻相關規範與編程的許多方面,詳細介紹了Windows系統下高層與底層的多媒體音頻接口(API);WAVE音頻的全面解析、播放與錄音;MIDI音樂的全面解析、播放與錄製;USB MIDI驅動設計;MP3的格式與編解碼;樂音的基頻檢測;音頻混音器原理與編程;低延遲ASIO音頻驅動開發;普通音頻外掛程式與VST(i)外掛程式的設計;遊戲開發中經常使用的DirectSound播放與錄製等。
本書最大的特色是不但針對多媒體音頻應用程式的開發做了較全面的介紹,可以滿足大部分常規音頻編程用戶的需求,而且對音頻驅動的開發也做了較多的切入。其中一部分是作者近幾年獨自研究的成果,對於有這方面需求的讀者來說都是很寶貴的參考資料。
本書結構清晰,邏輯嚴密,內容具體且涉及面廣泛,不但是從事多媒體(音頻)開發與套用的廣大開發人員的技術指導書,同時也可作為各高等院校相關專業、非相關專業師生重要的參考讀物。
本書中每章都提供了一個或多個經典的編程實例程式,附帶在光碟中贈送,光碟中提供了所有章節中實例程式的Visual C++原始碼。

本書目錄

前言
第一章 Windows音頻體系與VC++開發基礎
1.1 認識聲音與音頻
1.2 Windows音頻體系層次結構
1.2.1 用戶模式與核心模式
1.2.2 關於聲音的延遲問題及解決方法
1.3 VC++開發基礎
1.3.1 區分C、C++和VC++三者的關係
1.3.2 事件驅動與訊息處理
1.3.3 開發環境概述
1.3.4 MFC概述
1.3.5 利用嚮導創建一個簡單的對話框程式
第二章 MCI與MMAPI多媒體編程接口
2.1 MCI簡介
2.1.1 MCI邏輯結構
2.1.2 MCI接口、函式與命令
2.1.3 MCI訊息與宏定義
2.2 MCI編程步驟
2.3 MCI編程實例
2.3.1 播放CD
2.3.2 WAV播放與錄音
2.3.3 基於MCIWnd的多媒體播放器
2.4 MMAPI簡介
2.4.1 四種多媒體檔案IO
2.4.2 波形音頻處理
2.4.3 MIDI的流緩衝區與非流緩衝區處理
2.4.4 多媒體定時器
第三章 WAVE格式及播放與錄製
3.1 認識WAVE
3.2 WAVE檔案結構
3.3 採樣點與採樣幀的區別
3.4 WAVE中常用的一些塊
3.4.1 格式塊
3.4.2 數據塊
3.4.3 提示塊
3.4.4 播放列表塊
3.4.5 關聯數據塊
3.4.6 採樣塊
3.5 多媒體波形音頻函式
3.6 波形音頻處理的回調機制
3.7 WAVE播放
3.7.1 WAVE播放基本流程
3.7.2 雙緩衝播放機制
3.7.3 關於死鎖的問題
3.8 WAVE錄音
3.9 程式實例
3.9.1 WAVE檔案解析及分離與合併
3.9.2 WAVE播放器
3.9.3 WAVE錄音機
第四章 MIDI標準與程式設計
4.1 什麼是MIDI
4.1.1 MIDI硬體接口
4.1.2 MIDI設備連線
4.1.3 MIDI通訊方式
4.2 MIDI信息
4.2.1 MIDI音樂製作
4.2.2 通道信息
4.2.3 控制器
4.2.4 系統信息
4.2.5 運行狀態
4.3 其他MIDI規範
4.4 GM、GS與XG
4.5 GM2
4.6 MIDI檔案格式
3.6.1 頭部信息
3.6.2 軌道信息
3.6.3 Meta信息
4.7 MIDI檔案示例
4.8 與MIDI相關的時間計算
4.8.1 BPM
4.8.2 PPNQClock
4.8.3 MIDIClock
4.8.4 SMPTE
4.9 程式實例
4.9.1 MIDI設備枚舉、播放與錄製
4.9.2 MIDI信息傳送器
4.9.3 鼓速測試工具
4.9.4 MIDI播放器
4.9.5 截獲MIDI信息
4.10 USBMIDI概述
4.11 USBMIDI的實現機制
4.12 USB-MIDI功能器件
4.12.1 MIDI流接口
4.12.2 拓撲結構
4.12.3 USB-MIDI轉換器
4.12.4 元件
4.13 USB-MIDI數據格式
4.14 USB-MIDI操作模型
4.14.1 主機到USB-MIDI功能器件的通訊
4.14.2 USB-MIDI功能器件到主機的通訊
4.14.3 高頻寬數據傳輸機制
4.15 USB-MIDI描述符
4.15.1 MIDI流接口描述符
4.15.2 MIDI流端點描述符
4.16 USBMIDI驅動設計
4.16.1 用戶模式音頻驅動程式
4.16.2 用戶模式音頻驅動的入口點
4.16.3 用戶模式音頻驅動入口點訊息
4.16.4 用戶模式音頻驅動通知客戶端
4.16.5 用戶模式音頻驅動的安裝
4.17 USB驅動程式
4.17.1 IRP的分層處理
4.17.2 IRP的基本結構與內容
4.17.3 驅動對象與設備對象
4.17.4 核心模式驅動的入口點
4.17.5 USB驅動程式的設計步驟
4.18 戶模式音頻驅動幾個上層接口的實現
第五章 數字音樂合成
5.1 合成器概述
5.2 MIDI的發音原理
5.3 FM合成原理
5.4 波表合成
5.4.1 波表合成器工作原理
5.4.2 波表合成的關鍵技術
5.4.3 頻率變換
5.4.4 循環(LOOP)
5.4.5 波表合成器的衡量指標
5.5 軟波表與硬波表
5.6 音色製作
5.6.1 樣本準備與分配
5.6.2 樣本參數調整
5.6.3 音色參數調整
5.6.4 設定效果參數
5.6.5 保存音色檔案
第六章 音頻混音器
6.1 混音器原理
6.1.1 音效卡硬體模型
6.1.2 音頻線路
6.1.3 控制項
6.2 混音器編程
6.2.1 MixerAPI函式介紹
6.2.2 枚舉系統中的混音器設備
6.2.3 打開混音器設備
6.2.4 枚舉音頻線路
6.2.5 獲取音頻線路信息
6.2.6 枚舉音頻線路的相關控制項
6.2.7 獲取與線路相關的所有控制項信息
6.2.8 通過控制項ID獲取控制項信息
6.2.9 通過控制項類型獲取控制項信息
6.2.10 獲取或設定控制項之值
6.2.11 多聲道控制項
6.2.12 多條目控制項
6.2.13 混音器專用信息
6.3 程式實例-混音器調節軟體
第七章 音頻外掛程式設計
7.1 外掛程式的實現原理
7.2 基於動態程式庫的方法實現DLL外掛程式
7.2.1 定義外掛程式接口結構
7.2.2 實現外掛程式的功能
7.2.3 外掛程式管理
7.3 實現一個支持三種外掛程式類型的MINI播放器
7.3.1 主程式設計
7.3.2 輸入型外掛程式設計
7.3.3 常規型外掛程式設計
7.3.4 輸出型外掛程式設計
7.4 給Winamp寫一個MIDI鍵盤外掛程式
7.4.1 確定外掛程式的類型
7.4.2 截獲系統API
7.4.3 實現外掛程式功能
7.5 基於ATL的方法實現COM外掛程式
7.6 VST外掛程式概述
7.7 VSTSDK與VST的音頻數據處理
7.8 創建一個最簡單的VST外掛程式
7.9 設計一個StereoDelay效果的VST外掛程式
7.10 VSTXML檔案
7.11 設計一個簡單的FM合成器外掛程式
7.11.1 什麼是FM合成
7.11.2 用到哪些VST(i)函式
7.11.3 波形產生器
7.11.4 包絡發生器
7.11.5 頻率比
7.11.6 低頻振盪器
7.11.7 合成信號路徑
7.11.8 合成實現
7.11.9 音高測試
7.11.10 諧振頻率測試
7.12 VSTGUI編程
7.12.1 創建一個最簡單GUI的VST外掛程式
7.12.2 幾種常用GUI控制項的使用方法
7.12.3 監聽器與控制項標識符
7.13 實現一個自行設計界面的RingModulator外掛程式
7.14 VST宿主程式設計
第八章 基音的時頻域檢測
8.1 概述
8.2 音樂信號的前期處理
8.2.1 信號數位化
8.2.2 取音框
8.2.3 靜音與雜音處理
8.3 時域基頻檢測方法
8.3.1 自相關函式法
8.3.2 自相關函式法的程式實例
8.3.3 平均振幅差函式法
8.3.4 平均振幅差函式法的程式實例
8.4 頻域基頻檢測方法
8.4.1 傅立葉變換的原理及其物理意義
8.4.2 快速傅立葉變換法
8.4.3 快速傅立葉變換法的程式實例
8.4.4 諧波積頻譜法
8.4.5 諧波積頻譜法的程式實例
8.4.6 倒譜法
8.4.7 極大似然法
8.5 時頻域檢測方法
8.5.1 小波變換法
8.5.2 ACF與AMDF結合法
8.5.3 ACF與AMDF相結合的程式實例
8.6 基頻檢測的後期處理
8.7 軟體調音器的設計
第九章 ASIO音頻驅動設計
9.1 何為ASIO
9.2 用戶層ASIO驅動設計
9.2.1 ASIO的有限狀態機
9.2.2 音頻數據流的傳輸
9.2.3 ASIO驅動接口
9.2.4 數據同步
9.2.5 四個重要的回調函式
9.2.6 幾個重要的數據結構
9.2.7 輸入輸出延遲問題
9.3 用戶層ASIO驅動的實現
9.3.1 準備工作
9.3.2 添加自註冊功能
9.3.3 實現IASIO的所有接口
9.4 在音頻軟體中使用ASIO驅動
9.4.1 ASIO播放
9.4.2 ASIO錄音
第十章 MP3編解碼
10.1 MP3簡介
10.2 MP3檔案格式
10.2.1 TAG_V2(ID3V2)
10.2.1.1 標籤頭
10.2.1.2 擴展標籤頭
10.2.1.3 標籤幀
10.2.2 幀(Frame)
10.2.2.1 幀頭(FRAME_HEADER)
10.2.2.2 音頻數據(AUDIO_DATA)
10.2.3 TAG_V1(ID3V1)
10.3 程式實例-MP3檔案分析
10.4 MP3編碼的基本概念
10.4.1 奈奎斯特定理
10.4.2 非均勻量化
10.4.3 霍夫曼編碼
10.4.4 離散餘弦變換
10.4.5 心理聲學模型
10.4.5.1 靜音門檻曲線
10.4.5.2 臨界頻帶
10.4.5.3 禁止效應
10.4.5.4 感知熵
10.4.5.5 第二心理聲學模型
10.4.5.6 濾波器組
10.4.5.7 比特分配與非均勻量化
10.4.5.8 霍夫曼編碼
10.4.5.9 封裝成幀
10.5 MP3編碼過程
10.5.1 編碼框架
10.5.2 心理聲學模型
10.5.2.1 漢寧窗快速傅立葉變換FFT
10.5.2.2 非預測值計算
10.5.2.3 計算長塊閾值(第一部分)
10.5.2.4 計算感知熵PE
10.5.2.5 長塊閾值計算(第二部分)
10.5.2.6 短塊閾值計算
10.5.3 分析濾波器組
10.5.4 MDCT
10.5.4.1 窗框選擇
10.5.4.2 改進的離散餘弦變換
10.5.5 長窗混疊處理
10.5.6 非均勻量化與編碼
10.5.6.1 幀循環的準備工作
10.5.6.2 外層循環(失真控制)
10.5.6.3 內層循環(速率控制)
10.5.7 格式化
10.6 MP3解碼過程
10.6.1 幀頭信息處理
10.6.2 幀邊信息處理
10.6.3 解碼比例因子信息
10.6.3.1 長塊(LongBlock)
10.6.3.2 短塊(ShortBlock)
10.6.3.3 混合塊(MixBlock)
10.6.4 解碼霍夫曼編碼
10.6.4.1 解碼Zeros區
10.6.4.2 解碼Count1區
10.6.4.3 解碼BigValues區
10.6.5 非均勻反量化
10.6.6 重新排序
10.6.7 立體聲處理
10.6.8 混疊消除
10.6.9 IMDCT反餘弦變換
10.6.10 頻率反轉
10.6.11 多相合成濾波器
10.7 程式實例
10.7.1 MP3檔案解析
10.7.2 MP3的實時錄製
10.7.2.1 編譯LAME
10.7.2.2 Lame-EncDLL接口函式使用與說明
10.7.2.3 錄製原始波形音頻數據
10.7.2.4 WAVE轉MP3
10.7.3 MP3播放器
10.7.4 Libmad源碼分析
第十一章 DirectSound開與套用
11.1 DirectX概述
11.2 DirectSound簡介
11.2.1 DirectSound的功能組成與組件對象
11.2.2 DirectSound的緩衝區
11.2.3 DirectSound的數據結構
11.3 DirectSound播放
11.3.1 VC++編譯環境配置
11.3.2 DirectSound回放的基本過程
11.3.3 枚舉系統輸出聲音設備
11.3.4 創建DirectSound對象
11.3.5 設定聲音設備的協作等級
11.3.6 創建聲音緩衝區對象
11.3.7 載入WAVE聲音數據
11.3.8 聲音緩衝區回放
11.3.9 聲音緩衝區控制
11.3.10 混音
11.3.11 3D音效和聲音效果
11.3.12 DirectSound3D收聽者
11.3.13 設定聲音特效
11.4 DirectSound錄音
11.4.1 枚舉系統錄音設備
11.4.2 創建設備對象
11.4.3 獲取錄音設備的性能
11.4.4 創建錄音緩衝區
11.4.5 獲取錄音緩衝區信息
11.4.6 為錄音緩衝區對象設定通知機制
11.4.7 開始錄音
11.5 使用DirecSound中的效果
11.5.1 在緩衝區中設定效果
11.5.2 混響(Reverb)
11.5.3 合唱(Chorus)
11.5.4 迴響(Echo)
11.5.5 鑲邊(Flanger)
11.5.6 參量均衡(ParametricEQ)
11.5.7 咕嚕(Gargle)
11.5.8 失真(Distortion)
11.5.9 壓縮(Compression)
11.6 揚聲器配置
11.6.1 設定揚聲器配置
11.6.2 獲取揚聲器配置
11.7 程式實例
11.7.1 DirectSound播放
11.7.2 DirectSound錄音
11.7.3 DirectSound效果器

相關詞條

熱門詞條

聯絡我們