Open6
Windowsの音量ミキサーのクローンを作る
なんで作るのかというと、Windowsの音量ミキサーを外部デバイスで操作したいから。Raspberry Pi picoとかArduino使ってWindowsの音量ミキサーをいじりたいなと思った。そうするには、Windowsの音量ミキサーのいじり方を知る必要がある。
Windowsの音量ミキサーは、Core Audio APIを使用していいじれる。
C#にラップしたライブラリが、NAudioに含まれているので、NAudioを使用すると簡単。
前に、「改元ユニコーン」なるアプリを作ったことがあって、それでCore Audio APIを使って音量の変更をしたことがあったので、音量変更は問題ない。
問題は、アプリ名(表示名)とアイコンである。
多くのアプリで、アプリ名とアイコンが取得できない。これは、仕様らしくて、クライアントが明示的に指定しなかった場合は、空文字が返るらしい。
空白だった場合のアプリ名やアイコンをどこからか取得しないといけない。
AudioSessionControlからProcessIDを取得できるから、これを元にアプリ名やアイコンを取得するのが良さそう。
MMDeviceは非推奨らしい。
Windows.Devices.Enumerationに置き換えられたとか。
MMDeviceはデバイス列挙の方法で、実際に音量操作をしていたところは、WASAPIらしい。
多分、MMDeviceを使おうがWindows.Devices.Enumerationを使おうが、音量操作部分は変わらないと思う。
WASAPIのページを見ても、MMDeviceを使った方法しか書いてない。
とりあえずMMDeviceを使っておけばいいか。