0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Macのオーディオ出力装置の切替をChatGTPに質問して自動化する

Posted at

目的

Macで無線でのデュアルディスプレイ時に毎回オーディオ出力設定の変更が必要になり、その手間を省きたい。

デュアルディスプレイ環境

Macのデュアルディスプレイ環境をFire TV StickとAirReceiverで実現している。
Macからディスプレイに接続した際にオーディオ出力もディスプレイに変わってしまうのが難点。

実装方法をChatGTPに聞いてみる

MacのAutomatorの存在は知っていたので、Automatorで実装する方法を聞いてみた。

質問内容と回答

質問内容

  • macでAutomatorを使用してAudio MIDI設定でサウンド出力装置を変更する方法を教えてください

ChatGPTからの回答

MacでAutomatorを使用してAudio MIDI設定でサウンド出力装置を変更するには、次の手順に従ってください。

  1. Automatorを開く:

    • 「アプリケーション」フォルダからAutomatorを探し、クリックして開きます。
  2. 新しいワークフローを作成する:

    • 「ファイル」メニューから「新規」を選択します。
    • ワークフロータイプとして、「クイックアクション」を選択し、「選択」ボタンをクリックします。
  3. ワークフローを設定する:

    • 上部の「ワークフローが受け取る現在の入力」メニューで、「なし」を選択します。
  4. 「シェルスクリプトの実行」アクションを追加する:

    • 左側のライブラリパネルで、「ユーティリティ」カテゴリをクリックします。
    • 「シェルスクリプトの実行」アクションを見つけて、ワークフローエリアにドラッグアンドドロップします。
  5. シェルスクリプトを記述する:

    • 「シェル」ドロップダウンメニューで、「/bin/bash」を選択します。
    • 「スクリプト」テキストエリアに次のスクリプトを貼り付けます(デバイス名を適切なものに置き換えてください):
DEVICE_NAME="Your Device Name"
AUDIO_DEVICE_ID=$(system_profiler SPAudioDataType | grep -B 5 -A 1 "$DEVICE_NAME" | awk '/^ *Output Device ID:/{print $NF}')
switchaudiodevice -s $AUDIO_DEVICE_ID

注意: 上記のスクリプトでは、switchaudiodevice コマンドを使用しています。これは、SwitchAudioSource ツールの一部であり、事前にインストールする必要があります。ターミナルで次のコマンドを実行してインストールしてください:

brew install switchaudio-osx

もしHomebrewがインストールされていない場合は、まず Homebrew をインストールしてください。

  1. ワークフローを保存:

    • 「ファイル」メニューから「保存」を選択し、名前を付けて保存します。
  2. クイックアクションを利用:

    • 作成したクイックアクションは、Finderやタッチバーなどで利用できます。

これで、Automatorを使ってAudio MIDI設定でサウンド出力装置を変更する方法が完成しました


す、すごい!これ通りにやればできそう。
ということで、実際に回答通りに試したところ...できませんでした(笑

回答内容の間違っていたところ

回答内容はほとんど問題なく、SwitchAudioSourceコマンドの使用方法が間違っていました。
以下のコマンドで切替ができました。

/opt/homebrew/bin/SwitchAudioSource -s 出力装置名

出力装置名は

/opt/homebrew/bin/SwitchAudioSource -a

で確認できます。

ドキュメントを見ると、-sオプションで出力装置名を指定するだけでよかったみたいです。
回答では、名前でなくIDを指定していたためエラーになりました。
また、Automatorで使用されるシェル環境では、SwitchAudioSourceコマンドはフルパス指定でしか実行できませんでした。
これについては、エラー時にChatGPTに質問して解決できました。

実装方法

以上より、自動化する手順は以下の通りとなります。

  1. Automatorを開く:

    • 「アプリケーション」フォルダからAutomatorを探し、クリックして開きます。
  2. 新しいワークフローを作成する:

    • 「ファイル」メニューから「新規」を選択します。
    • ワークフロータイプとして、「クイックアクション」を選択し、「選択」ボタンをクリックします。
  3. ワークフローを設定する:

    • 上部の「ワークフローが受け取る現在の入力」メニューで、「なし」を選択します。
  4. 「シェルスクリプトの実行」アクションを追加する:

    • 左側のライブラリパネルで、「ユーティリティ」カテゴリをクリックします。
    • 「シェルスクリプトの実行」アクションを見つけて、ワークフローエリアにドラッグアンドドロップします。
  5. シェルスクリプトを記述する:

    • 「シェル」ドロップダウンメニューで、「/bin/bash」を選択します。
    • 「スクリプト」テキストエリアに次のスクリプトを貼り付けます(デバイス名、コマンドのpathを適切なものに置き換えてください):
コマンドのpath/SwitchAudioSource -s 出力装置名

注意: 上記のスクリプトでは、SwitchAudioSource コマンドを使用しています。これは、SwitchAudioSource ツールの一部であり、事前にインストールする必要があります。ターミナルで次のコマンドを実行してインストールしてください:

brew install switchaudio-osx

もしHomebrewがインストールされていない場合は、まず Homebrew をインストールしてください。

  1. ワークフローを保存:

    • 「ファイル」メニューから「保存」を選択し、名前を付けて保存します。
  2. クイックアクションを利用:

    • 作成したクイックアクションは、Finderやタッチバーなどで利用できます。

終わりに

作成したクイックアクションに適当な名前をつけてDockに表示させることで、ワンクリックでオーディオ出力装置を切り替えれるようになりました。
Automatorの使用経験がなくてもChatGTPに質問してここまで短時間でできるとは思っていなかったので驚きました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?