前回、サウンドファイル編集コマンド「sox」でiPhone用着信音を作成する手順を中心に紹介したが、この連載のターゲットはあくまでmacOS、弟分のiOS(最近は開発優先順位が逆転している印象はあるが)は脇役に過ぎない。今回は、macOSでは着信音より利用する機会が多い「通知音」のカスタマイズ術を紹介しよう。

「通知音」はカスタマイズ可能か?

macOSの「通知音」は、いくつかの種類がある。種類といっても音(サウンドファイル)の違いではなく、管理やカスタマイズの方法が異なるという意味だ。

まず、「システム警告音」と「通知音」の違いを理解しよう。システム環境設定「サウンド」パネルにある「サウンドエフェクト」では、「Basso」や「Sosumi」など全14種類の音を選択でき、下にあるスライダーで音量調整も可能だが、ここでいう通知音は「システム警告音」であり、通知センターに表示される通知とは基本的に扱いが異なる。この画面で設定を変えても、メールの到着やカレンダーのイベント到来で届く通知の音は変わらない。

デスクトップ右上にバナーや通知パネルの形で表示され、その後通知センターにまとめて表示されるタイプの通知は、基本的にアプリ単位での管理となる。システム環境設定「通知」パネルには、通知機能に対応したアプリがリストアップされ、それぞれに「通知音を鳴らす」というチェックボックスが用意されているが、そのチェックボックスを無効化しても通知音が止まるとはかぎらない。「メール」がその例で、メールの環境設定パネルにある「新着メッセージの通知サウンド」で「なし」を選択しないかぎり、新着メールを知らせる通知の音は鳴り続ける。

通知対応のアプリといえど、通知音をカスタマイズできるとはかぎらない。「カレンダー」を例にすると、個々のイベントで通知音の有無を指定できるが、通知音の種類は初期値として設定されている「Chord」のままだ。このようなアプリには打つ手がなく、通知音のカスタマイズは難しい。

  • 「通知音を鳴らす」チェックボックスを無効化しても通知音が止まるとはかぎらない

    「通知音を鳴らす」チェックボックスを無効化しても通知音が止まるとはかぎらない

  • 「カレンダー」では通知音を有効にできても、種類を指定できるわけではない

それでも通知音をカスタマイズしたい!

では、通知音のカスタマイズが可能なアプリは? かんたんに変更できるアプリの代表格は「メール」で、環境設定パネルの「一般」タブにある「新着メッセージの通知サウンド」をクリックし、14種類の通知音から選べばいい。

ここに表示されるのは、/System/Library/Soundsフォルダに保存されているAIFFファイルで、全14種類。ユーザ別のライブラリフォルダ以下にあるSoundsフォルダ(~/Library/Sounds)へAIFFファイルをコピーすれば、任意の通知音を使うこともできる。ただし、認識させるために一度「メール」を再起動しなければならない。

利用できる通知音の長さだが、試しに30秒(約16MB)という長さのAIFFファイルを作成したところ、とりあえず通知音として利用できた。立て続けにメールが到着すると通知音が鳴り続けてしまうため実用性に欠けるが、前回紹介したsoxコマンドで"曲のおいしいフレーズ"を切り取り通知音として使うことはできそうだ。なお、60秒のAIFFファイルは認識されたものの、音は鳴らなかった。

なお、前述したユーザ別のSoundsフォルダは、システム環境設定「サウンド」パネルにも参照される。/System/Library/SoundsフォルダのAIFFファイルと混在表示されるが、ユーザ別のほうには「カスタム」と表示されるので区別は可能だ。

  • 「メール」ではユーザ別のSoundsフォルダにコピーしたAIFFファイルを通知音に指定できる

  • サウンドパネルには「カスタム」と表示される

お好みの通知をお好みの音で

任意の通知音を設定できるアプリは意外に少ないが、Apple Scriptを利用した"自作通知ダイアログ"ならば比較的容易に通知音をカスタマイズできる。以下の要領でosascriptコマンドを実行すると、~/Library/SoundsにコピーしたAIFFファイルを通知音に指定できる。拡張子「.aiff」は不要、ファイル名だけを「sound name」の引数にすればいい。

このosascriptを利用した通知は、結構使える。オールドスタイルにcronを使ってもいいし、launchdで定期的にスクリプトを実行する手もある(Property Listに「StartCalendarInterval」を使えばosascriptコマンドを定期実行できる)。通知本来の趣旨から外れているような気もするが、デスクトップ右上に現れる短いメッセージに価値を認めるのならば活用しない手はないだろう。

$ osascript -e 'display notification "Terminalから発信された通知です" with title "通知で~す" sound name "GetLucky"'
  • このような"自作通知ダイアログ"で任意の通知音を出すことも