Open6

Windowsの音量ミキサーのクローンを作る

しごぶしごぶ

なんで作るのかというと、Windowsの音量ミキサーを外部デバイスで操作したいから。Raspberry Pi picoとかArduino使ってWindowsの音量ミキサーをいじりたいなと思った。そうするには、Windowsの音量ミキサーのいじり方を知る必要がある。

しごぶしごぶ

Windowsの音量ミキサーは、Core Audio APIを使用していいじれる。
C#にラップしたライブラリが、NAudioに含まれているので、NAudioを使用すると簡単。

しごぶしごぶ

前に、「改元ユニコーン」なるアプリを作ったことがあって、それでCore Audio APIを使って音量の変更をしたことがあったので、音量変更は問題ない。

問題は、アプリ名(表示名)とアイコンである。
多くのアプリで、アプリ名とアイコンが取得できない。これは、仕様らしくて、クライアントが明示的に指定しなかった場合は、空文字が返るらしい。
https://docs.microsoft.com/ja-jp/windows/win32/api/audiopolicy/nf-audiopolicy-iaudiosessioncontrol-geticonpath

空白だった場合のアプリ名やアイコンをどこからか取得しないといけない。

しごぶしごぶ

AudioSessionControlからProcessIDを取得できるから、これを元にアプリ名やアイコンを取得するのが良さそう。

しごぶしごぶ

WASAPIのページを見ても、MMDeviceを使った方法しか書いてない。
とりあえずMMDeviceを使っておけばいいか。