見出し画像

61. Windows OS で音を操作する

前回の記事                        次回の記事

はじめに

まずは、Windows OS で音源から音データを収集する仕組みを試していきます。

音を操る仕組み

Windows では音だけでなく動画も併せて操作する基本的な機構が用意されています。音を録音したり音源ファイルを再生するよりも、動画を収録したり再生する方が日常的にも多いでしょうし、動画は、画像の進みと連携した音が伴っているのが普通なので、音(オーディオ)と動画(ビデオ)を実現する仕組みが一体化している事もうなずけます。

で、ざっとネット上で検索してみると、何と言っても Windows 95がリリースされてから既に27年、その前の Microsoft Windows 3.x から数えれば33年になる長い歴史を持ち、一般の人たちが思っている(個人の感想ですw)以上に、Windows は API の互換性を大事にしているので、オーディオ・ビデオを扱う API が結構沢山あるのが、改めて判りました。
更には、Windows のアプリケーションを実行する為のプラットフォーム基盤も、

  • 昔ながらの Win32

  • .NET Framework

  • UWP

と、大きく分けると、使える API セットが 3種類あり、それぞれオーディオ・ビデオ用の API が異なっています。ただ、.NET Framework と UWP の API はその階層で Win 32 API を使って作られているので、ここでは Win 32 API によるオーディオ・ビデオ API を調べていく事にします。

Win32 API によるオーディオ・ビデオ

Win32 API で利用可能なオーディオ・ビデオの仕組みは、
オーディオとビデオ - Win32 apps | Microsoft Learn
で紹介されています。基本的に IoT シナリオでは、音源デバイスから音データを取り出すための機能と、音データ(基本的にはストリームデータ)をデコードしたり、エンコードしたり、マルチプレクス・でマルチプレクスして、ファイル化するとか、転送するとかする機能があればよいので、「このセクションの内容」でリスト化されている API の内、

の3つが一般的で、更に、Microsoft Media Foundation には、”DirectSowの後継”と付記があるので、結局のところ、

この二つの使い方をマスターしておけば十分だという事になります。
Core Audio API については、

オーディオ キャプチャとオーディオ レンダリング用の低レベル API。これは、最小待機時間を達成したり、上位レベルのメディア API で完全にサポートされていない可能性のある機能を実装したりするために使用できます。

https://learn.microsoft.com/ja-jp/windows/win32/audio-and-video?redirectedfrom=MSDN#in-this-section

と、Microsoft Media Foundation については、

再生、オーディオ/ビデオ キャプチャ、エンコード (DirectShow の後継) をサポートするエンド ツー エンド メディア パイプライン。

https://learn.microsoft.com/ja-jp/windows/win32/audio-and-video?redirectedfrom=MSDN#in-this-section

とのことなので、あれやこれや細かいプリミティブな処理をしたい場合は、低レベルの Core Audio API を選択、そうでない場合は、Microsoft Media Foundation を選択するという使い分けをすればよさそうです。

オーディオドライバー系 API

…と思いきや、他にも実装に関係しそうな項目がありました。
ユーザー モード WDM オーディオ コンポーネント - Windows drivers | Microsoft Learn
に記載されている、

です。多分、Core Audio API や、Microsoft Media Foundation の下位層で動くんだろうなとおもいつつ、必要に応じて取り上げることにします。

次回以降の記事

さて、そういう事で、次回はまず、Microsoft Media Foundation について実際に使って、IoT 機器における音データ収集処理機構を実現する方法を解説しすることにします。

ここから先は

0字

2022年3月にマイクロソフトの中の人から外の人になった Embedded D. George が、現時点で持っている知識に加えて、頻繁に…

この記事が気に入ったらサポートをしてみませんか?