Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ishotihadus/coreaudioapi
艦これ用に http://whenimbored.xfx.net/2011/01/core-audio-for-net/ を改良したもの
https://github.com/ishotihadus/coreaudioapi
Last synced: about 2 months ago
JSON representation
艦これ用に http://whenimbored.xfx.net/2011/01/core-audio-for-net/ を改良したもの
- Host: GitHub
- URL: https://github.com/ishotihadus/coreaudioapi
- Owner: Ishotihadus
- Created: 2015-02-17T03:07:55.000Z (almost 10 years ago)
- Default Branch: master
- Last Pushed: 2015-02-17T03:38:21.000Z (almost 10 years ago)
- Last Synced: 2024-03-28T12:14:06.821Z (10 months ago)
- Language: C#
- Size: 168 KB
- Stars: 0
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# CoreAudioAPI
艦これクライアント「みおつくし」用に http://whenimbored.xfx.net/2011/01/core-audio-for-net/ を独自に改良しました。
といっても、guidがかかわる関数をすべてrefになおしただけです。
## 使い方
`MMDeviceEnumerator`がデバイスのenmueratorになっているので、このインスタンスを作ってあげます。
var device_enumerator = new MMDeviceEnumerator();
ここから`GetDefaultAudioEndpoint`でデフォルトのデバイスを得るか、`EnumerateAudioEndPoints`でデバイスの一覧を持ってきた後に好きなものを選びます。
var device = GetDefaultAudioEndpoint(EDataFlow.eRender, ERole.eMultimedia);
デバイスがいくつかのセッションを持っており、その中にプロセスのセッションがあるので、そのセッションの一覧を取得した後にその中から目的のセッションを選び出します。
var sessions = device.AudioSessionManager2;
var session = sessions[hoge];セッションは`GetSessionInstanceIdentifier`とか`GetProcessID`とかあるので、その辺を使ってほしいものを見つけ出します。
もしセッションが作成されていなくて、セッションの作成を監視したい場合は`sessions`の`OnSessionCreated`イベントを監視してあげるとよいです。セッションが新たに作られた際は、`sessions.RefreshSessions()`で一覧を更新してあげる必要があります。
みおつくしでは、プロセスのボリュームをいじいじしたいので、選び出した`session`の`SimpleAudioVolume`にある`MasterVolume`とか`Mute`とかをいじっています。こいつらは、外部からいじられたことを`session`の`OnSimpleVolumeChanged`で監視できます。
ちなみに、もとのライブラリをそのまま使うとAccess Violationで落ちます。
## バグとか
プロセスのボリュームをいじる目的でしか使ってないので、ほかの目的で使用した際には死ぬかもしれないです。Bug ReportおよびPull Requestお待ちしてます。
MixerProNETとかでも動くんですかね。知らないです。
## 適用ライセンス
もとのライブラリのライセンスに依存します。