説明
- 最近は何かとオンラインミーティングが多いので、音声出力/音声入力の設定変更も多いです。
- そこでサウンド入力出力デバイスを切り替えるアプリケーションをつくり、その起動にショートカットキーを設定します。
- 完成イメージ: わかりにくいですが、ショートカットキー(ここでは
shift + control + s
)により実行したあとに、デバイスが切り替わっています
Install switchaudio-osx
- サウンドデバイスの設定に使います
brew install switchaudio-osx
出力可能なデバイス一覧を表示する
- 使用したい出力デバイスの
name
を使います
SwitchAudioSource -f json -t output -a | jq
{
"name": "HyperX QuadCast S",
"type": "output",
"id": "46",
"uid": "AppleUSBAudioEngine:Kingston:HyperX QuadCast S:4100:1"
}
{
"name": "外部ヘッドフォン",
"type": "output",
"id": "76",
"uid": "BuiltInHeadphoneOutputDevice"
}
{
"name": "MacBook Proのスピーカー",
"type": "output",
"id": "69",
"uid": "BuiltInSpeakerDevice"
}
入力可能なデバイス一覧を表示する
- 使用したい入力デバイスの
name
を使います
SwitchAudioSource -f json -t input -a | jq
{
"name": "HyperX QuadCast S",
"type": "input",
"id": "51",
"uid": "AppleUSBAudioEngine:Kingston:HyperX QuadCast S:4100:2"
}
{
"name": "外部マイク",
"type": "input",
"id": "87",
"uid": "BuiltInHeadphoneInputDevice"
}
{
"name": "MacBook Proのマイク",
"type": "input",
"id": "82",
"uid": "BuiltInMicrophoneDevice"
}
Macのスクリプトエディタ
でコードを書いてアプリケーションとして保存する
- (Krisp関連のコードは不要なら削除してください)
- ソースコード
# https://apple.stackexchange.com/questions/190319/display-notification-works-from-applescript-editor-but-not-when-exported-as-ap
tell application "Finder" to activate
# Krispを終了する
do shell script "killall krisp || true"
# Krispの終了を待つ
repeat
delay 1
try
set krispRunning to do shell script "/usr/bin/pgrep -x krisp"
on error
set krispRunning to ""
end try
if krispRunning is "" then exit repeat
end repeat
# Krispを起動する
do shell script "open ~/Applications/krisp.app"
# Krispの起動を待つ
repeat
delay 1
try
set krispRunning to do shell script "/usr/bin/pgrep -x krisp"
on error
set krispRunning to ""
end try
if krispRunning is not "" then exit repeat
end repeat
# System Settingsアプリを起動し、Soundの設定を開く
tell application "System Settings"
activate
set current pane to pane id "com.apple.Sound-Settings.extension"
end tell
# 入力デバイスを指定する
do shell script "
/opt/homebrew/bin/SwitchAudioSource -f json -t input -s 'Yeti Nano' ||
/opt/homebrew/bin/SwitchAudioSource -f json -t input -s 'External Headphones' ||
/opt/homebrew/bin/SwitchAudioSource -f json -t input -s 'YukiAirPodsPro' ||
/opt/homebrew/bin/SwitchAudioSource -f json -t input -s 'MacBook Pro Microphone'
"
# 入力音量を80%に設定する
set volume input volume 80
# 出力デバイスを指定する
do shell script "
/opt/homebrew/bin/SwitchAudioSource -f json -t output -s 'External Headphones' ||
/opt/homebrew/bin/SwitchAudioSource -f json -t output -s 'YukiAirPodsPro' ||
/opt/homebrew/bin/SwitchAudioSource -f json -t output -s 'Soundcore Life P2' ||
/opt/homebrew/bin/SwitchAudioSource -f json -t output -s 'MacBook Pro Speakers'
"
# 現在の出力デバイスを取得する
set currentOutputDevice to do shell script "/opt/homebrew/bin/SwitchAudioSource -c -t output"
# 出力音量を設定する
if currentOutputDevice = "External Headphones" then
set volume output volume 70
else if currentOutputDevice = "YukiAirPodsPro" then
set volume output volume 70
else if currentOutputDevice = "Soundcore Life P2" then
set volume output volume 60
else if currentOutputDevice = "MacBook Pro Speakers" then
set volume output volume 70
else
set volume output volume 75
end if
# 現在の入力デバイスを取得する
set currentInputDevice to do shell script "/opt/homebrew/bin/SwitchAudioSource -c -t input"
# 入出力デバイスを表示する
display notification "🎤 " & currentInputDevice & "
🔈 " & currentOutputDevice with title "reset-sound.app" sound name "Glass"
# フィードバックサウンドを再生する
do shell script "/usr/bin/afplay /System/Library/Sounds/Glass.aiff"
- ついでに音量を設定しています
- 名前は適当に、、ファイルフォーマットはアプリケーションを選択します。
実行
- MacのSpotlight検索から実行したり、
- AlfredやRaycastを使っているならショートカットキーを設定すると便利です