2011年5月11日水曜日

OSC で iTunes をコントロールする


これまでに、Arduino や iPhone を使った OSC の送信を紹介してきました。
OSC 対応のソフトはPuredata やQuartz Composer などがありますが、他のソフトもコントロールできると便利です。
iTunes など Mac のソフトの多くは、AppleScript という、コマンドによる操作手段が用意されています。

そこで、OSC を受信して、AppleScript を飛ばすソフトを探してみました。
OSCulator というソフトでできるらしいのですが、 $39-... ちょっと高い。

AppleScript はTerminal コマンドの osascript でも実行可能です。
そこで、Puredata のshell パッチを使い、osascript コマンドによってAppleScript を実行してみます。
(以前に、Quartz Composer から同じようなことをやった気もしますが、、、)

本来なら、shell に osascript -e 'tell application "iTunes" to play' というメッセージを投げれば良いと思うのですが、これではエラーに。いろいろ試した結果、



1. AppleScript Editor でAppleScript を作成、保存する
2. 1で作成したスクリプトをフルパスで起動するコマンド文(Message Object)を作成
3. Shell Object に2 のMessage を送る

例えば、「~/Documents/itunes-play.scpt」に保存したAppleScript 起動する場合

osascript /Users/YOUR_USER_NAME/Documents/itunes-play.scpt

このようなメッセージをshell に送れば良いことが分かりました。


事前にPuredata とこのPatch を起動して準備する必要がありますが、反応は良好です。
スライダーなどで大量のOSC を送ると、処理が終わる前に次のOSC メッセージが来てしまうので、
ignor という、メッセージを制限するパッチを使ってみました。



iTunes のボタンに対応するAppleScript コマンドはそれぞれ
再生(停止):playpause
次の曲:next track
前の曲:previous track
ボリューム:set sound volume to 100 -- (0 ... 100)
です。


再生(停止)の場合は

tell application "iTunes"
playpause
end tell

だけでOK です。
ボリューム調整は引数が必要なので、

on run argv
tell application "iTunes"
set sound volume to argv
end tell
end run

このようなスクリプトにします。
このページをMac OS X で見ている場合、次のリンクから AppleScript Editor を起動できます。




0 件のコメント:

コメントを投稿