Max/MSP/Jitter」カテゴリーアーカイブ

キーストロークを発生させる

今日の他人クエストは、キーストロークを発生させる(コンピュータのキーボードを押すことを再現する)にはどうするか?でございました。しかも、MaxからAbleton Liveをコントロールしたいらしくって、セッションビューでのクリップの選択を左右上下キーで移動して、returnキーで再生・停止したいってわけです。外部コントロールが充実しているLiveですが、これはMIDIコントロールできないようです(Mackie Controlプロトコルならできるみたいだけど、面倒そう…)。

解決策:AppleScriptでSystem Eventsを使う。

LiveはAppleScript対応じゃないんですけど、これくらいならSystem Eventsでできちゃいます。例えば、Liveで右キーを押すのは次のようなスクリプトね。

tell application "Live"
activate
end tell

tell application "System Events"
key code 124
end tell

124ってのが右キーのキーコードで、keyオブジェクトなら2番目のアウトレットから出力される数値です。汎用的に使うには、アプリケーション名やキーコードを引数にして渡せるようにすればイイですね。

後は、このスクリプトをファイル保存しておいて、tap.applescriptオブジェクトかosascriptコマンド入りのaka.shellオブジェクトでMaxから呼び出せばオッケイでございます。

ちなみに、System Eventsを使うには、ユニバーサルアクセス環境設定の「補助装置を使用可能にする」をオンにしておく必要があります。また、key codeコマンドではcommandキーなどの併用も指定できるし、文字列を入力するにはkeystrokeコマンドも使えますね。このあたりは、他のアプリを操作するのに役立ちそう。

freesoundsearch

最近気がついたんだけど、徳井直生さんが興味深いオブジェクトfreesoundsearchを開発・公開中。これはCreative Commonsライセンスとしてアップロードされたオーディオ・ファイルのデータベースThe Freesound Projectにアクセスし、検索やダウンロードなどができるMaxオブジェクトです。詳しくは上記ブログを参照ね。

freesoundsearch.gif

このプロジェクトおよびオブジェクトの可能性は大きいと思うけど、ヘルプ・パッチだけでも随分と楽しめます。適当な単語を入力して、検索結果を自動再生すると、もうそれだけで広がる世界があります。

個人的には10年ほど前の作品「World Remix」を思い出しちゃいました。当時書いた文章は今となってはハテナ?な箇所もあります(苦笑)が、そこはご容赦願うとして、実際、音の感じも似ています。それぞれの母集団、The Freesound Project=有志が登録した音素材とWorld Remix=WEBで使われている音、の分布が似ているってことですかね。

ちなみに、World Remix Version 1は投稿型だったのでCCに近いですね。しかし、その頃は怒濤のごとく投稿されるハズもなく、Version 2の検索型に移行したのでした。何しろ、当時は自宅でも公共施設でもインターネット回線があるほうが珍しく、展覧会をするのに専用回線を仮設してもらってました。まぁ、そんなお爺さんの昔話みたないことはどうでもいいのですが、freesoundsearchで自動再生しながら、10年前と今とでは本質的に何が変わり、何が同じなんだろうと考えています。

forward max

Maxへメッセージを送るには、; max ナントカというメッセージ・ボックスを使いますけど、アーギュメントがmaxであるforwardオブジェクトにメッセージを送ってもいいのね。知らなかった、ってか、ヘルプにもリファレンスにも書いていないような…以下はどちらも、Overdriveモードのオン・オフです。

forward_max.gif

aka.beep登場

いや、記事にするのも恐縮なんですが、システム警告音を鳴らすだけ(!)のオブジェクト、aka.beepを公開しました。ちょっと必要があって作ったのですが、SysBeep()一発で10分もかからずに作れちゃうもので….ヘルプ・パッチがすがすがしい(笑)。

akabeep_m.gif

aka.appleremote登場

専用オブジェクトを作らなくても云々と言っていた矢先に作りました(苦笑)。今回は、Objective-C(Cocoa)のコードを翻案するんじゃなくって、ラッパーを作ってMaxのC(Carbon)から呼び出す&呼び返すことを試してみたかったので、という言い訳です。Objective-CがCのスーパーセットであることをAppleも配慮しているみたいで、ドキュメントもそこそこしっかりしていました。

てなわけで、今回のハイブリッド・オブジェクトはちゃんと動いているみたいです(願望)。Apple Remoteが使える人は試してみてください。ダウンロードはいつものaka.objectsからどうぞ。exclusiveを1にして(これがデフォルトなので何もしなくてOK)オープンすると、Front Rowが起動しない状態でApple Remoteが使えます。

akaappleremote_m.gif

注意すべきことは、ボタンによっては普通のキーボードみたいに動作してくれないことです。これはHIDの段階でボタンの長押しの判定をしてるためで、余計なお世話なんですけどね。これも回避したいところなんですが、今のところ分かりません。

toggleは0/1じゃない!?

やられました! toggleの出力って0か1とは限らないんですね。

toggle-input.gif

なんとなく、数値を受け取ると0か1に変換して出力するような気がしていましたが、受け取った数値をそのまま出力するんですね。超基本オブジェクトなのに何年も勝手な思い違いをしてたようです(汗)。何を今更と言われそうですが、こういう情けない記事もたまにはよろしいかと(苦笑)。

Apple RemoteをMaxで使う

今日の私クエストは、Apple RemoteをMaxで使うにはどうする?でございました。Apple RemoteはMacBook(Pro)/iMac/Mac miniに標準で備わっているリモコンで、hiオブジェクトで簡単に情報が得られるんだけど、Menuボタンを押すとFront Rowが起動したり、+/-ボタンで音量調整になったりで、システム標準の機能がMaxでは邪魔なわけです。

解決策:AppleRemoteを起動して、hiオブジェクト

WEBサーチしてみると、Apple RemoteをHIDとしてオープンする時に排他モード(kIOHIDOptionsTypeSeizeDevice)を指定すれば、Front Rowなどのシステム機能が働かないことが判明。とは言え、hiオブジェクトにはそんなモード指定はないですよね。

そこであれこれ試した結果、Martin Kahr氏のAppleRemote(というアプリケーション)を起動すれば、こいつがFront Rowなどを抑制してくれて、hiオブジェクトでMenuボタンや+/-ボタンを含めてすべてのボタン情報が得られました。

AppleRemoteアプリは押されたボタンを画面表示するだけのテスト・プログラムで、Open device in exclusive modeにチェックを入れて、Listen to RemoteボタンをクリックすればOKです。このアプリは同氏のSource Codeページからダウンロードできます。後半にあるApple Remote Test Program (Binary only)というリンクね。ソースコードや他のApple Remote関係ユーティリティへのリンクもあります。

appleremote.jpg

というわけで、専用オブジェクトを書かずに済みました。Apple Remoe(リモコン)は赤外線方式なので、ステージなどの広い場所では指向性が問題になりそうですけど、小さくて手軽に使えるのが良いですね。数個のボタン操作で済む用途にどうぞ。

aka.wiiremote 1.0B5

aka.wiiremoteの1.0B5を公開しました。ダウンロードはいつものaka.objectsから。

追加・変更点は、
・ヌンチャクをサポート
・デバイス・アドレスをサポート
・アウトレットと出力メッセージを変更
・入力メッセージの一部を簡略化
・ヘルプ・パッチを拡張
ってなとこです。

長ったらしいパッチがイヤなんですけど、仕方がないかな。デバイス・アドレスは2台以上のWiiリモコンを区別したい時に指定ね。

akawiiremote-b5_s.gif

ところで、WiiのOperaでYouTubeもOKなのね。なかなかよろしげ。

ペアリングはRVL Enableで

Wiiリモコンを初めて使う時には「Bluetooth設定アシスタント」を使った設定(ペアリング)が必要ですが、Cliff氏が作ったRVL Enablerを使えば簡単に済むことが分かりました。RVL EnablerのSearchボタンをクリックして、WiiリモコンのSyncボタンを押すだけ。

rvl-enabler_m.gif

何台ものペアリングをしなければならない人はマストハブね(笑)。もうすぐ十数台のWiiリモコンで遊ぶ(?)ことになっています。ギネスブックに申請できるかな?

aka.bookmotion登場

またまた新しいオブジェクト、緊急モーション・センサー(SMS)の情報を取得するaka.bookmotionです。ダウンロードは、サイドバーのaka.objectsからどうぞ。

akabookmotion.jpg

SMSは2005年初頭以降に登場したPowerBook G4/iBook G4/MacBook Pro/MacBookに備わっている加速度センサーで、SMSから得られる情報はXとYについては重力加速度に対する傾き情報になりますね(ブンブン振り回せないし)。Zも重力加速度に対する値なんだけどね。これまたソース・コードがあったのでMaxへのポーティング自体は簡単でしたけど、かなり時間がかかったのは、ヘルプ・パッチにある矢印の画像でございました(涙)。

それから、キャリブレーションや落下検知機能(警報が鳴っても既に遅いかも〜笑)もパッチで組んでみたんだけど、こんな感じでいいのかな。

てなわけで、オブジェクトを作ることが多い今日この頃ですが、そろそろ止めます。さすがに飽きてきました(笑)。