これまでに、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 件のコメント:
コメントを投稿