SoundDesk

Windows タスクトレイ用ユーティリティ

アプリごとに違う音量を、
ワンクリックで。

Chrome は 30%、Teams は 70%、Spotify は 20%。毎回ボリュームミキサーを開いて合わせる代わりに、プロファイル 1 つで戻します。トレイメニューから 2 クリック、管理画面ならスライダー 1 つで。

Windows 10 · 11インストール不要、単一の実行ファイル外向きの通信は既定でオフ

トレイアイコンを押すと開く管理画面。同じ値はメニューからも直接変えられます。

できること

ボリュームミキサーでしていたことを、トレイから 2 クリックで。

01

アプリ別の音量とミュート

いま音を出しているセッションをアプリ単位でまとめて表示します。Chrome のようにプロセスを複数持つアプリも 1 行です。

02

アプリごとに違う出力デバイス

ゲームはスピーカー、Discord はヘッドセットへ。既定の出力デバイスの切り替えもメニューから行え、プロファイルにはデバイスまで一緒に保存されます。

03

アプリを閉じて開き直してもそのまま

アプリ別の音量を覚えておき、そのアプリが もう一度再生を始めたら 自動で戻します。デバイスを抜き差ししても、スリープから復帰してもプロファイルを適用し直します。

04

マイクも同じ手で

会議中にいちばん急ぐボタン。 CtrlAltK 一度でマイクをオフ・オンします。

05

管理画面

プロファイルの編集、ショートカットの変更、自動化ルールまですべて画面から。設定ファイルを手で直す必要はありません。

06

外に出るのはオンにしたものだけ

匿名の利用報告・更新確認・開発者からのお知らせの 3 つがすべてで、 どれも既定でオフです。管理画面は 127.0.0.1 からのみ開き、実行のたびに作り直すトークンがなければ開きません。

プロファイル

状況が変われば、アプリの音量もすべて変わるべきです。

既定で 3 つ入っていて、いまの状態をそのまま新しいプロファイルとして保存できます。自動切り替え(アプリの起動・デバイスの接続・時間帯)は既定でオフです。

既定のプロファイル
プロファイルマスターアプリ設定
Work72%Chrome 30% · Teams 70% · Spotify 20%
Gaming80%Discord 65% · Spotify 15% · ブラウザ ミュート
Meeting60%Teams 80% · Zoom 80% · Chrome 20% · Spotify ミュート

ショートカット

手がキーボードにあるときに。

すべて変更でき、ほかのプログラムが既に使っている場合は黙って失敗する代わりに知らせます。

  • CtrlAlt マスターを上げる
  • CtrlAlt マスターを下げる
  • CtrlAltM ミュート
  • CtrlAltK マイクをミュート
  • CtrlAltS ポップアップ
  • CtrlAlt13 プロファイル切り替え

アプリ別ルーティング

Windows が文書化していない道を、 確かめて から使います。

実測

「このアプリだけヘッドセットへ」に公開 API はありません。Windows の設定アプリが使う内部インターフェース Windows.Media.Internal.AudioPolicyConfig を呼ぶ必要があり、インターフェース ID と vtable の配置がビルドごとに違います。SoundDesk はこれを推測で使いません。

危険な最初の呼び出しは 別プロセスで走らせてクラッシュしてもトレイが生き残るようにし、実際にアプリを移したあと Get で読み戻して同じデバイスが返ってきたときだけ「検証済み」に上げます。読み戻しが食い違えば機能を自分で止めて Windows の設定ページを開きます。

判定の段階
状態根拠
verified実際にプロセスを移し、読み戻した endpoint id が一致。何も再生していなければ自己診断が無音ストリームで自分にセッションを作り、自分自身で確認します
probable読み戻す対象を作れなかった — ファクトリの有効化と vtable 呼び出しがクラッシュしなかったことまで
unsupported自己診断が失敗、または呼び出しは通ったのに Windows が反映しない → 設定ページへ案内

Windows 10 22H2 ビルド 19045 で verified 確認 判定はビルド番号と一緒に保存し、更新されたら再検査

セキュリティ

ダウンロードフォルダーから実行しても安全なように。

ポータブルな実行ファイルが実際にぶつかる問題です。抽象的なチェックリストではなく、それぞれに対応するコードとテストがあります。

脅威対応
DLL ハイジャック
exe の隣に置かれた偽の DLL
システム DLL は System32 絶対パスでのみ読み込み。起動時に検索パスから exe のフォルダーと作業ディレクトリを外します
ミューテックス squatting
別のセッションが名前を先取りして起動を妨げる
単一インスタンスのオブジェクトを Local\ 名前空間に
設定ファイル経由の注入 endpoint id は正規表現の検証を通ったものだけ COM 呼び出しへ渡します
ログの偽造
プロセス名に改行を入れて偽のログを差し込む
アプリ名・デバイス名は制御文字を取り除いたうえで長さを制限
引用符のない自動起動パス Run キーの値は常に引用符で囲んだ絶対パス、 HKCU のみ使用
管理画面への不正操作
同じ PC の別のプログラム、または Web ページ
127.0.0.1 専用 + 実行ごとに新しい 256 ビットトークン + Host・Origin 検査。トークンは最初の読み込みで HttpOnly クッキーに変わり、アドレスバーから消えます

696 個のテスト · カバレッジ 84% 偽の DLL を置いて実際に防げるか確かめる実動作テストを含みます PROJECTTEAMFORYOU としてコード署名 · 実行前に発行元名をご確認ください

プライバシー

外に出るのは、オンにしたものだけです。

アプリ名とセッション情報はこの PC の中だけで扱い、設定は JSON ファイル 1 つとして残ります。外に出る機能は 3 つ — 匿名の利用報告、更新確認、開発者からのお知らせ — だけで、すべて既定でオフです。管理画面でオンにするまで、リクエストは 1 件も出ません。

設定ファイル%APPDATA%\SoundDesk\config.json
ログ%APPDATA%\SoundDesk\sounddesk.log
匿名の利用報告既定でオフ — オンにすると 1 日 1 回、ランダムなインストール id・バージョン・Windows ビルド・言語・3 種類の個数
更新確認 · 開発者からのお知らせ既定でオフ — オンにしても実行中のバージョンと言語だけ。インストール id は送りません
決して出ないものアプリ名 · デバイス名 · ファイルパス · Windows のアカウント名
使用する APIIMMDeviceEnumerator · IAudioSessionManager2 · ISimpleAudioVolume · IPolicyConfig · AudioPolicyConfig
自動起動HKCU\Software\Microsoft\Windows\CurrentVersion\Run(任意)

自己診断

自分の PC で動くかどうか、アプリに直接聞いてください。

本来の機能を実際のオーディオスタックで 1 つずつ動かし、 触れたものは元に戻します。音が出る変更はそもそも行いません — マスター音量はいまの値をそのまま書き直す形で、呼び出し経路だけを証明します。

コマンド確認する内容
--selftest-audio デバイス · マスター · マイク · アプリ別の音量/ミュート/ルーティング · プロファイル · グローバルショートカット。再生中のアプリがなければルーティングは自分自身の無音セッションで確認します
--selftest-panel パッケージ化した実行ファイルが実際に管理画面を配信するか
--report デバイス・セッション・プロファイルの状況を JSON で

この PC での結果

OK  アプリ別音量(firefox.exe 100% → 42% → 復元)
OK  アプリ別ミュート
OK  アプリ別の出力ルーティング(firefox.exe → ASUS VZ279 → 復元)
OK  既定デバイスの切り替え · プロファイル · グローバルショートカット
—   マイク(この PC に入力デバイスなし)

11 passed, 0 failed, 2 skipped — Windows 10 22H2 ビルド 19045

どこでも

使う人の言葉で、使う人の PC で。

同じ設定を家と職場で使い、使う言語で読み、必要ならマクロから呼びます。

01

12 言語

Windows の表示言語に従います。自分で選ぶこともでき、変えると管理画面とトレイメニューが再起動せずにその場で切り替わります。

한국어 · English · 日本語 · 简体中文 · 繁體中文 · Español · Português · Français · Deutsch · Русский · Italiano · Tiếng Việt

02

家と職場で、同じ設定

プロファイル・ショートカット・ルールをファイル 1 つに書き出し、別の PC で読み込みます。デバイスは 名前で 合わせます — 同じヘッドセットでも PC ごとに id が違うため、ファイルをそのままコピーするとルーティングだけが静かに消えてしまうからです。この PC にないデバイスは名前で知らせます。

03

マクロから呼ぶ

Stream Deck のボタンや AutoHotkey の 1 行からそのまま使えます。トレイが出ていてもいなくても動作し、アイコンを新たに出しません。変わったら終了コード 0、何も一致しなければ 1。

SoundDesk.exe --set-app chrome.exe=25
SoundDesk.exe --profile Gaming
SoundDesk.exe --list apps

インストール

ファイル 1 つ。インストーラーなし。

SoundDesk.exe を好きな場所に置いて実行すると、トレイにアイコンが出ます。消したいときはファイルと設定フォルダーを削除するだけです。Python は必要ありません。

SoundDesk.exe をダウンロード

21.9 MB · コード署名済みSHA-256

もう一度見る

Windows 10 1803 以降単一の実行ファイル管理者権限は不要SHA-256 同梱