[C#]Core Audio APIs系列 (1) Core Audio APIs介紹

Core Audio APIs是在Windows Vista之後新增的API,主要是用來音效的處理,例如取得錄音與播放的裝置與資料與設定,聲音音量的控制與混音器,Stream的播放與錄制等等功能,在多媒體APIs中它是屬於比較低層的API,如果是要錄音或播放聲音,用這個API操作上會複雜些。

介紹

Core Audio APIs是在Windows Vista之後新增的API,主要是用來音效的處理,例如取得錄音與播放的裝置與資料與設定,聲音音量的控制與混音器,Stream的播放與錄制等等功能,在多媒體APIs中它是屬於比較低層的API,如果是要錄音或播放聲音,用這個API操作上會複雜些。

在控制台中Sound下的操作都幾乎都有相關的API,如用IMMDeviceEnumerator取得所有輸出入裝置(圖一),如用IAudioSessionManager管理一個裝置下應用程式的音效(圖二)。

 

image

圖一 可用IMMDeviceEnumerator取得裝置

 

image

圖二 可用IAudioSessionManager取得應用程式資訊

NOTE:

處理聲音播放錄制,使用高層的API,如Microsoft Media FoundationWindows Media Player會比較輕鬆,雖然說Core Audio APIs在Vista就有了,不過有不少Method是在Windows 7才增加的,而且小弟系列文章中,有用到幾個Windows 7版本才有的功能,在Vista執行可能會有問題,Windows XP那就更不用說了。

 

組成

Core Audio APIs是由下列四項所組成:

 

untitled

圖三: 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用途真的不大,基本上可以不用裝。

下載位址:

 

文件的路徑:

  • Root
    • Win32 and COM Development
      • Graphics and Multimedia
        • Audio and Video
          • Core Audio APIs

 

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 教學課程自訂執行階段可呼叫包裝函式