🫥

Raycastのコマンドでサウンドの出力先を一発で切り替える

2023/08/02に公開

はじめに

https://www.raycast.com/

を Alfred の代わりに使い始めて、もうこっちに完全移行してしまっています。

なので、簡単なコマンド操作は、 Raycast に登録しておいていつでも起動できるようにしておくと楽になります。

今回は

  • MacBook Air から音を出す場合
  • HDMI 経由で繋いでいるモニターから音を出す場合

をすぐに切り替えたいというのがやりたいことになります。

switchaudio-osxでサウンド出力先を切り替える

https://github.com/deweller/switchaudio-osx

Homebrew でインストールします。

brew install switchaudio-osx

以下のコマンドでサウンドの出力先一覧を表示します。

SwitchAudioSource -f json -t output -a | jq
{
  "name": "WH-1000XM4",
  "type": "output",
  "id": "110",
  "uid": "14-3F-A6-B5:output"
},
{
  "name": "PHL 438P1",
  "type": "output",
  "id": "95",
  "uid": "410C5B09-0000-0000"
} 
{
  "name": "Yeti Stereo Microphone",
  "type": "output",
  "id": "89",
  "uid": "AppleUSBAudioEngine:Generic:Blue Microphones:2"
} 
{
  "name": "MacBook Airのスピーカー",
  "type": "output",
  "id": "67",
  "uid": "BuiltInSpeakerDevice"
}

逆に入力先一覧を表示するには以下のコマンドを実行します。

SwitchAudioSource -f json -t input -a | jq
{
  "name": "WH-1000XM4",
  "type": "input",
  "id": "116",
  "uid": "14-3F-A6-B5-91-F1:input"
}
{
  "name": "‎lemon-Sour’s iphone13proのマイク",
  "type": "input",
  "id": "79",
  "uid": "35454243-0000-0000-0000"
}
{
  "name": "Yeti Stereo Microphone",
  "type": "input",
  "id": "81",
  "uid": "AppleUSBAudioEngine:Generic:Blue Microphones:LT_1"
}
{
  "name": "MacBook Airのマイク",
  "type": "input",
  "id": "74",
  "uid": "BuiltInMicrophoneDevice"
}

以下のコマンドが出力先を切り替えるコマンドになります。

SwitchAudioSource -f json -t output -s 'PHL 438P1'
SwitchAudioSource -f json -t output -s 'MacBook Airのスピーカー'

今回はこの二つの出力先を割と頻繁に切り替えたいのです。

理由としては、映画を見る時は、モニターに繋がっているスピーカーから音を出して、迫力を出したい。

逆に、 YouTube の配信を見ながらコードを書いたりしたいときは、立派なスピーカーからだと音が重いので、 MacBook Air から音を出したい。

という感じです。

Raycastにコマンドを登録する

Create Script Command をクリックする。

title などを適当に入れて、 Command + Enter を実行すると、ファイルを選択するダイアログが出ます。

ここで、適当なディレクトリに sh ファイルを保存します。

これを2パターン登録します。

switchaudiosource-phl438p1.sh

#!/bin/bash

# Required parameters:
# @raycast.schemaVersion 1
# @raycast.title SwitchAudioSource-PHL438P1
# @raycast.mode silent

# Optional parameters:
# @raycast.icon 🤖

# Documentation:
# @raycast.author hisasann
# @raycast.authorURL https://raycast.com/hisasann

SwitchAudioSource -f json -t output -s "PHL 438P1"

switchaudiosource-macbookairのスピーカー.sh

#!/bin/bash

# Required parameters:
# @raycast.schemaVersion 1
# @raycast.title SwitchAudioSource-MacbookAirのスピーカー
# @raycast.mode silent

# Optional parameters:
# @raycast.icon 🤖

# Documentation:
# @raycast.author hisasann
# @raycast.authorURL https://raycast.com/hisasann

SwitchAudioSource -f json -t output -s "MacBook Airのスピーカー"

https://github.com/raycast/script-commands

# @raycast.mode silent

で mode を silent にしてるのは、このコマンドを実行後に Raycast を自動的に閉じてもらうためです。

mode の option については以下に全て書いてあります。

script-commands/documentation/OUTPUTMODES.md at master · raycast/script-commands

エイリアスも指定したので、 sapsam で一瞬で切り替えることができます。

良かったですね。👍

参考記事

Macのマイクとスピーカーをまとめてショートカットで変更する方法 | Tats Shibata | 柴田竜典 | シバタツ

Macでいつものサウンド入力/出力設定に切り替える - Qiita

Discussion