Core Audio APIs是在Windows Vista之後新增的API,主要是用來音效的處理,例如取得錄音與播放的裝置與資料與設定,聲音音量的控制與混音器,Stream的播放與錄制等等功能,在多媒體APIs中它是屬於比較低層的API,如果是要錄音或播放聲音,用這個API操作上會複雜些。
介紹
Core Audio APIs是在Windows Vista之後新增的API,主要是用來音效的處理,例如取得錄音與播放的裝置與資料與設定,聲音音量的控制與混音器,Stream的播放與錄制等等功能,在多媒體APIs中它是屬於比較低層的API,如果是要錄音或播放聲音,用這個API操作上會複雜些。
在控制台中Sound下的操作都幾乎都有相關的API,如用IMMDeviceEnumerator取得所有輸出入裝置(圖一),如用IAudioSessionManager管理一個裝置下應用程式的音效(圖二)。
圖一 可用IMMDeviceEnumerator取得裝置
圖二 可用IAudioSessionManager取得應用程式資訊
NOTE:
處理聲音播放錄制,使用高層的API,如Microsoft Media Foundation或Windows Media Player會比較輕鬆,雖然說Core Audio APIs在Vista就有了,不過有不少Method是在Windows 7才增加的,而且小弟系列文章中,有用到幾個Windows 7版本才有的功能,在Vista執行可能會有問題,Windows XP那就更不用說了。
組成
Core Audio APIs是由下列四項所組成:
- Multimedia Device (MMDevice) API : 可以存取電腦中多媒體的輸出與輸入裝置.
- Windows Audio Session API (WASAPI) : 可以存取裝置與應用程式的音頻會話
- DeviceTopology API : 最底層的API,可以操作硬體拓撲功能的如Automatic gain Control、Bass Control、multiplexer、Loudness Control、Volume Control
- EndpointVolume API : 可以對狀置做音頻的控制
圖三: Core Audio APIs所伴演的角色(來源:MSDN)
相關資料
Windows 7 SDK
Core Audio APIs也是屬於Windows 7 SDK中的一部份,安裝好有相關的Include的header檔與IDL、Microsoft Help 2.x的離線文件(英文)、與C++的範例檔,說真的不是寫C++所以header沒有用途、沒有要自己實作COM Interop所以IDL沒有用途、文件看線上版、C++的範例又不好看,所以整個SDK用途真的不大,基本上可以不用裝。
下載位址:
-
Microsoft Windows SDK for Windows 7 and .NET Framework 4(線上安裝)
-
Microsoft Windows SDK for Windows 7 and .NET Framework 4 (ISO)
-
Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1(線上安裝)
-
Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1 (ISO)
文件的路徑:
-
Root
-
Win32 and COM Development
-
Graphics and Multimedia
-
Audio and Video
- Core Audio APIs
-
Audio and Video
-
Graphics and Multimedia
-
Win32 and COM Development
MSDN
現有的COM Interop
因為Core Audio APIs是COM,而且沒有辦法使用Tlbimp.exe直接產生COM Interop,必需自行實作介面與類別,但是Core Audio APIs的超過50個介面,自行產生C#介面與類別有點麻煩,不過還好社群中的前輩們,已經分享了他們實作好了Library,讓我們可以便方便的使用Core Audio APIs。
那一套比較好??其實這二套都沒有實作所有的介面,所以有些必需要自己實作,不過我到事把二個合成一個這樣自己實作的部份就少一些。
NOTE:
COM Interop的文章可以參考:COM Interop 教學課程與自訂執行階段可呼叫包裝函式