macのマイクをボリュームで擬似的にON/OFF

![online_kaigi.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64294/f70b40ad-70bb-bb3b-7478-0121fc9ebd0f.png)

#はじめに

テレワークでは、ZoomやMicrosoft Teamsといったビデオチャットサービスを使っていることが多いと思います。
それらのサービスによって擬似的に会社の社員と仕事をしているような状況を作れるわけですが、会社と違って家族の生活音や、自動車の走行音など外からの音など、相手を不快にしないようにマイクのON/OFFを頻繁に切り替えている方も多いのではないのでしょうか。

ビデオチャットサービスはアプリが提供されているのでそれを使っている方が多いと思います。アプリが提供するマイクのON/OFFには大抵ショートカットが用意されているので、それを使えばいいといえばいいのですが、アプリがアクティブでなければショートカットが機能しません。

ビデオチャット中は、プログラムを書きながら話をしていたり、メモアプリで議事録を採っていたりとビデオチャットサービスのアプリは必ずしもアプリがアクティブで有るとは限りません。

そこで、システムのマイクのボリュームを調整することで、マイクのON/OFFを擬似的に行えるようにしてみたいと思います。

#ご注意

- 本記事ではマイクのOFF = マイクのボリュームが``0``という意味で説明しているので、厳密にはOFFではありません。
- mac OSはマイクの入力音量を自動調整するので、放っておくといつの間にかボリュームが0でなくなっています。ご注意ください。
- 本記事で使用しているmac OSはMojaveです。Catalinaでは試しておりません。
- 以上を踏まえた上でお試しください。

#大まかな手順

次の手順で説明します。

- Automatorでボリュームを0にするためのクイックアクションをセット
- Automatorでボリュームを大きくするためのクイックアクションをセット
- キーボードショートカットを設定

#Automatorでボリュームを0にするためのクイックアクションをセット

1. Automatorアプリケーションを起動します。<br><img width="166" alt="スクリーンショット 2020-05-07 21.40.42.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64294/026356e7-4589-459a-f7a4-69025fc0f0ea.png">
2. クイックアクションを選択して「選択」ボタンを押します。<br><img width="775" alt="スクリーンショット 2020-05-07 21.42.00.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64294/2b8a6c0c-4601-6544-395d-628cf265f186.png">
3. ワークフローが受け取る項目で「入力なし」を選択し、「AppleScriptを実行」をダブルクリックしましょう。<br>![スクリーンショット 2020-05-07 21.45.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64294/02843285-9122-4760-9bc1-c620f5dad586.png)
4. スクリプトを以下の様にして、わかりやすい名前(例えば「マイクをミュート」)をつけて保存しましょう。

```applescript
on run {input, parameters}
	
	tell application "System Events" to set volume input volume 0
	display notification "マイクのボリュームを一時的に0にしました。"
	delay 1
	
	return input
end run
```

#Automatorでボリュームを大きくするためのクイックアクションをセット

[Automatorでボリュームを0にするためのクイックアクションをセット](#Automatorでボリュームを0にするためのクイックアクションをセット)と同様に以下のようなAppleScriptを入力して、わかりやすい名前(例えば「マイクのミュートオフ」)をつけて保存しましょう。
マイクのボリュームを最大にすると大きすぎる可能性があるので、控えめに70%程度にしてありますが、お好みで調整してください。

```applescript
on run {input, parameters}
	
	tell application "System Events" to set volume input volume 70
	display notification "マイクのボリュームを大きくしました。"
	delay 1

	return input
end run
```

#キーボードショートカットを設定

Automatorでセットしたクイックアクションをキーボードのショートカットに割り当てます。
※設定にはミュート、ミュートオフと記載していますが、先述の通り、ミュートではないのでご注意ください。それとややこしい表現をして申し訳ないです。

1. システム環境設定から「キーボード」を選択します。<br><img width="780" alt="スクリーンショット 2020-05-07 21.56.28.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64294/979534a8-31df-63be-a4df-59766b2be66b.png">
2. ``ショートカット``タブから``サービス``を選択肢、ショートカットの一覧を一番下にスクロールすると、Automatorでセットしたクイックアクションが表示されるので、![スクリーンショット 2020-05-07 21.59.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64294/a712abd6-711c-feff-975c-b13520c3704c.png)ボタンを押してショートカットキーを割り当ててください。ここではマイクのミュートに``⌘F12``キー、解除に``⇧⌘F12``を割り当てています。![スクリーンショット 2020-05-07 22.23.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64294/e512409e-0053-e238-d588-fd91b210c3a3.png)


# おまけ

## Joystick Mapperを使いたい方

Joystick Mapperは有料のmac OS用アプリなので簡単に試せるようなものではないですが、Bluetoothゲームパッドのボタンに割り当てる事でワンボタンでマイク音量の上げ下げができるようになるので便利です。

Joystick Mapperは1行ごとに1つのキーしか設定できませんが、複数行に同一のゲームパッドボタンを割り当てれば複数のキーを同一選択することが可能です。ここで注意しなければならないのは、``Shift``キーや``Command``は``F12``キーよりも上に設定しなければならないことです。<br><img width="752" alt="スクリーンショット 2020-05-07 22.34.25.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64294/b338baf9-381d-b7bb-ea09-a604a49420f7.png">