PC 起動時に SteelSeries GG オーディオデバイスを自動で切り替えるPowerShell スクリプト
課題
SteelSeries GG Sonar を利用すると 複数のオーディオデバイス(AUX, Gaming, Media, Chat)が追加されますが、通常、起動時には「Gaming」がデフォルトの再生デバイスとして設定されます。
私の場合、「Gaming」ではイヤホン再生、「Media」では外部スピーカー再生を行う設定としています。
普段は「Media」を使用し、ゲームを行う際に「Gaming」に切り替えるという運用をしています。
ですが、前述の通り起動時には「Gaming」がデフォルトとして選択されるため、毎回手動で「Media」に切り替える必要があります。
残念ながら、ソフトウェアの設定ではこの挙動を変更できません。そこで今回は、PowerShell スクリプトを用いて自動で切り替える方法を紹介します。
前提
- 検証環境:Windows 10
- 他の対策:
- ゲームを行う時に SteelSeries GG を立ち上げるようにする
→ マイクのイコライザやノイズキャンセリング機能を常用するため却下 - Gaming と Media で用途を入れ替える
→ 特定のゲームのイコライザを使用しているため却下
- ゲームを行う時に SteelSeries GG を立ち上げるようにする
解決策
以下のアプローチで自動切り替えを実現します。
- PowerShell からオーディオデバイスを切り替えるプログラムを作成する
- PC にログイン時、上記プログラムが実行されるようタスクスケジューラにて起動設定を行う
切り替えプログラム
以下は、オーディオデバイスを切り替えるためのPowerShellスクリプトの例です。
# 新しい再生デバイスの名前
$desiredPlaybackDeviceName = "SteelSeries Sonar - Media (SteelSeries Sonar Virtual Audio Device)"
# 全ての再生デバイスを取得
$playbackDevices = Get-AudioDevice -List
# 指定した再生デバイスを検索
$desiredDevice = $playbackDevices | Where-Object { $_.Name -eq $desiredPlaybackDeviceName }
if ($desiredDevice) {
# 既定の再生デバイスを変更
Set-AudioDevice -Index $desiredDevice.Index
Write-Host "既定の再生デバイスが変更されました。"
} else {
Write-Host "指定した再生デバイスが見つかりませんでした。"
}
このプログラムでは、AudioDeviceCmdlets という Windows 上のオーディオデバイスを制御するためのコマンドプログラムを利用しています。
まず、下記手順にてこのコマンドプログラムをインストールします。
- 管理者権限で PowerShell を立ち上げる
- インストールコマンドを実行
Install-Module -Name AudioDeviceCmdlets
オーディオデバイス名
プログラム冒頭の以下の箇所で切り替えたいオーディオデバイス名を指定します。環境によって異なる可能性があるため、環境に合わせて変更します。
$desiredPlaybackDeviceName = "SteelSeries Sonar - Media (SteelSeries Sonar Virtual Audio Device)"
正確なデバイス名はデバイスマネージャーから確認することができます。
タスクスケジューラ登録
上記のプログラムを任意のディレクトリに配置後、タスクスケジューラの登録を行います。
- タスクスケジューラを立ち上げ、「タスクスケジューラライブラリ」を右クリックし「タスクの作成」を選択
- 「全般」タブ
- 名前:任意
- 「トリガー」タブにて新規作成
- タスクの開始:「ログオン時」
- 遅延時間を指定する:任意の時間(※注)に指定
- 「操作」タブにて新規作成
- 操作:「プログラムの開始」に設定
- プログラム/スクリプト:以下に設定
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
- 引数の追加:以下に設定
-ExecutionPolicy Bypass C:\app\AudioDeviceSwitching.ps1
C:\app\AudioDeviceSwitching.ps1
の部分はプログラムファイルのフルパスです。環境に合わせて変更して下さい。
以上です。タスクスケジューラのリストに追加できていれば OK です。
※注: SteelSeries GG は、起動後しばらくしてから Gaming デバイスを設定するというような挙動になっているため、SteelSeries GG が起動しさらに Gaming デバイスが選択された後にこのプログラムを実行する必要があります。
そのタイミングは環境によって異なるため、様子を見ながら調整して下さい。
(頑張ってプログラム上で対応しようとしましたが無理そうでした…)
おわりに
ゲームやストリーマー向けのツールなので、Gaming がデフォルトであるということは正しいのかもしれませんが、今後ツール上でデフォルトのデバイスを選択できるようになるとよいですね。
Discussion