メインに使っているパソコンのシステム、今はOSX Mavericksなのだけど、Mac OS X 10.4.x の頃から再起動する度に「サウンドの設定:左右のバランスがズレる(右寄りになる)」なるという現象が起こるようになっていて、セオリー通りのトラブル・シューティングをひと通り・・・~/ユーザ/Mome 以下の初期設定ファイルを削除、更新、、、etc・・・試していってセーフ・ブート下での新規アカウントでも同じ状態になったので、これしかないと思ったOSの再インストールでも問題は解消せず。 OSの再インストールでも解消しないということは、OSをメジャー・アップグレードしても解消しないとご推察の通りで。。。御存知の通り、Mac OS X 10.7 から基本的に上書きインストールでしか再インストールはできない、やろうと思えば新規インストールする方法もあるにはあるが正直あとの設定、アプリケーションのインストールし直し等面倒くさいのと、長らく使って他の動作に影響を及ぼしている様子も全然ないので「ま、いいか」と今に至るまで放置していた[1]
そうこまめに電源を落とす方ではないのだけど、起動し直すたんびに システム環境設定:サウンド を開いてバランサーをセンターにドラッグ操作をするのは、やはり煩わしい。

と、先日ふと、「今まで問題を根本的に解決することばかり考えていたけど、手動でセンターに調節し直す操作をApple Script(またはAutomator)で自動化してログイン項目に入れておけばいいんじゃね?」と、、、何でもっと早くに気付かなかったのか?! 気が付いてみれば何ということもないコロンブスの卵である。

OSインストール時にデフォルトでインストールされるAppleが用意してくれているサンプル(Apple Script、Automator のいずれも)には、音量を調節するものはあってもバランスにアクセスするものはない。
仕方ないのでググってみると参考になりそうなページが日本語では案外とない。もっと複雑で高度な操作を処理するスクリプトの解説ページは結構あるのだが、単純すぎて案外と盲点なのかも知れない。こういう時は、日本語を含まず英語のキーワードだけでググると英語のページが上位に出てくるというTipsを実行。具体的には「Apple Script Sound L/R Balance Fix」というキーワードで検索。
すると二番目にヒットした

L/R Audio Balance Menulet? - MacNN Forums
というページ。Mac Users の情報交換の場のひとつのようだ。内容的にそのまんま、私と同じ問題に遭遇している人が居るみたいで、その回答の中に
tell application "System Preferences"
	activate
	set current pane to pane "com.apple.preference.sound"
	reveal (first anchor of current pane whose name is "output")
end tell

tell application "System Events"
	launch
	tell process "System Preferences" to tell slider 1 of group 1 of tab group 1 of window 1 to set value to 0
end tell

quit application "System Preferences"
という Apple Script の例文がある。これを元に(その他調べて得られた情報を加味して)以下のコードでアプリケーション形式で保存した(アプレットにする)。保存場所はアプリケーション・フォルダ。
tell application "System Preferences"
	activate
	set current pane to pane "com.apple.preference.sound"
	reveal (first anchor of current pane whose name is "output")
end tell

tell application "System Events"
	launch
	tell process "System Preferences" to tell slider 1 of group 1 of tab group 1 of window 1 to set value to 0.5
end tell

quit application "System Preferences"
変更点:
  • Mac OS X 10.7 Lion からL/Rバランスのパラメータが「0 = only left output」「0.5 = centered output」「1 = only right output」と変わっているらしいので「value to 0.5」とした。
  • Mac OS X 10.6.x までは「-1 = only left output」「0 = centered output」「1 = only right output」参照:http://macscripter.net/viewtopic.php?id=25553
  • Mac OS X 10.7.x Lion までは、システム環境設定:アクセシビリティ:「補助装置にアクセスできるようにする」をオンにし、システム環境設定:アカウント:ログイン項目 に登録するだけで良かったのだが、Mac OS X 10.8.x Moutain Lion からセキュリティ強化の一環で App Stpre で配布されている以外のアプリケーションの実行はシステムから基本的に拒否される、これに加えて OSX Mavericks からはGUIにアクセスしに来るアプリケーションの場合、アプリケーション毎に システム環境設定:セキュリティ:アクセシビリティ から許可を与えないと実行できない。更にプロパティを保存しながらGUIスクリプティングを実行するアプリケーション(アプレット)の場合、CodeSigin(識別子:Bundle Identifier)がシステムに登録されていない場合、実行する度に異なるアプリケーションからのメソッドだと認知され「許可を与えている筈なのに実行を拒否される」という目に遭遇する。
    この問題の解決策は以下。
    OSX10.9におけるGUIスクリプティングとセキュリティとの戦い - ザリガニが見ていた...。
    要点だけを知りたい方は、zariganitoshさんが参照している以下を参照。
    Stardust from cometheart: AppleScript や Automator の CodeSign

    AudioBalance-center.app.tar
  • システム環境設定を起動して、サウンド項目は開いて、バランスをセンターにする、だけのアプレットです。
  • ご自由にダウンロードしてお使いください。改変、再配布、転載はご自由に。
  • ダウンロード後(このまま使う場合)起動前にターミナルで $ codesign -s - -i com.apple.ScriptEditor.id.AudioBalance-center -f /[current_directory]/gui_scripting.app を実行して下さい。([current_directory]はアプレットの置き場所の絶対パス。改行されて表示されているかもしれませんが実行時は改行なしで)
  • ----[ 脚注 ]---------------------------------------------------------------------------
    1. 実際一度新規インストールはしてみたのだが、クローン・バックアップから差分を書き戻したら症状再発した。このことからシステムの基幹部(/Private/etc/ とか /usr/bin/ とか)に入っているファイルが鍵を握っているのだろうとは推測できても、半可な知識で触るとシステムの挙動自体を怪しくしてしまう危険性のある領域だけに迂闊に触れないので放置状態

    最終更新日:2014年6月18日