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

aka.wiirmote FAQ

Q Do I need the Wii Console ?
A: No. You need the Wii Remote (a.k.a. Wiimote) and the Macintosh computer with Bluetooth. You also need the Sensor Bar (power-supplied by yourself) if you use IR-sensor. You can use two IR-transmitters or two candles instead of the Sensor Bar .

Q: Can I use two Wiimotes ?
A: You can use multiple Wiimotes in 1.0B4 and later. I could connect five Wiimotes to one computer at a time. I have used eighteen Wiimotes with four computers.

Q: Does it support Nunchuk and Classic Controller ?
A: Nunchuk is supported in 1.0B5. Classic Controller is supported in 1.0B6.

Q: The object is not created (dimmed).
A: Please note that you have to run it under the latest Mac OS X (10.4.8 and later) and Max (4.6.2 and later). The Bluetooth framework version should be 1.6.3 and later.

Q: I cannot connect the object to my Wiimote.
A: You have to setup Wii Remote for use with your computer using [RVL Enabler] or [Bluetooth Setup Assistant] for the first time.

Q: Does it run on Intel-Mac and PowerPC-Mac ?
A: Yes. It is a universal binary Mach-O object. I checked it with my MacBook Pro and PowerBook G4, both with internal Bluetooth device. I also checked it with my PowerMac G5(2.5GHz/Quad) and D-Link DBT-120 Bluetooth-USB Adapter.

Q: Is it buggy on PowerBook G4 ?
A: Sure. It is unstable and some functions does not work fine on PowerBook G4. In my experience, I had a good result if I do the following steps every time I use it on PowerBook G4. (You would set up only once on Intel-Mac.)
1: Delete “Nintendo RVL-CNT-01” on “Device” tab in “Bluetooth” System Preference.
2: Do the setup for Wii Remote.
3: Open “aka.wiiremote.help” and connect it.

Q: Can I use the Wiimote that is sold outside Japan ?
A: Yes. I believe the Wiimotes are same in the world.

Q: What is the Sync button that is mentioned in the help patch ?
A: A small red button inside the Wiimote battery box. You can also push 1 and 2 buttons simultaneously to start the synchronization.

Q: The sound of vibration is a little unusual.
A: It was fixed in 1.0B3, I believe.

Q: Do you have the object for Windows and CFM ?
A: No. But I published my source code. So I hope someone would port it to them.

Q: Can I modify your source code and publish another version of the object ?
A: Yes. You can modify and publish it under the BSD license described in COPYRIGHT.txt in the distribution.

Q: What is the difference of DarwiinRemote and aka.wiiremote in source codes ?
A: I made it referring to the source code of WiiRemote Framework 0.4. But they are not same because of the difference of APIs and programming languages.

Q: What is the difference of DarwiinRemote and aka.wiiremote actually ?
A: DarwiinRemote is an application software and aka.wiiremote is a Max object apparently. aka.wiiremote provides raw informations from Wiimote and has no practical function. Thus you would make your own patch by yourself.

aka.wiiremote よくある質問

MaxMSP-MLにも流しているせいか、このサイト以外での問い合わせなどもいくつかあって、現時点でのFAQをちょこっと書いておきます。

Q: Wii本体(Wii Console)が必要か?
A: Wii本体は必要ありません。Wiiリモコンだけで動作します。コンピュータにはBluetooth機能が必要です。IRセンサーを利用するにはセンサーバーが必要ですが、センサーバーへ独自に電源を供給する必要がありそうです。センサーバーの代わりに、2個の赤外線投射器2本のロウソクを使うこともできます。

Q: 2本のWiiリモコンを利用できるか?
A: バージョン1.0B4で複数のWiiリモコンの接続に対応しました。1台のコンピュータには5台までのWiiリモコンを同時に接続できるようです。従って、18台のWiiリモコンを用いるためには、4台のコンピュータが必要でした。

Q: ヌンチャクやクラシック・コントローラに対応しているか?
A: バージョン1.0B5でヌンチャクをサポートしました。クラシック・コントローラはバージョン1.0B6でサポートされました。

Q: オブジェクトが生成されない(点線表示される)。
A: 最新のMac OS X(10.4.8以降)と最新のMax(4.6.2以降)を使用してください。それ以前のバージョンでは動作しない場合があります。ちなみに、システムプロファイラで確認して、Bluetoothソフトウェアのバージョンが1.6.3以降であれば動作するハズです。

Q: connectメッセージを送っても接続できない。
A: コンピュータを使って初めてWiiリモコンを使用する場合、「RVL Enabler」または「Bluetooth設定アシスタント」を使ってWiiリモコンが使用できるように設定します。

Q: Intel MacでもPowerPC Macでも動作するのか?
A: aka.wiiremoteはMach-O形式のユニバーサル・バイナリー・オブジェクトなので、どちらでも動作します。MacBook ProとPowerBook G4で内蔵Bluetoohを使って動作確認しています。また、PowerMac G5(2.5GHz Quad)とD-Link社のDBT-120 Bluetooth-USBアダプタを使っても動作確認しています。それ以外のサード・パーティ製のBluetoothアダプタでの動作は確かめていません。動作確認された方がいらっしゃれば、教えてください。

Q: PowerBook G4での動作がおかしいのでは?
A: PowerBook G4では一部動作が不良です。私の経験では、PowerBook G4で使用する場合、毎回次の手順で設定を行なうことで、接続がうまくいくようでした。Intel-Macでは設定は1度だけ行なえば大丈夫です。
1:「Bluetooh」環境設定の「デバイス」タブに「Nintendo RVL-CNT-01」があれば、削除する。
2: Wiiリモコンが使用できるように設定する。
3:「aka.wiiremote.help」を開き、接続を行なう。

Q: 海外で販売されているWiiリモコンでも使えるのか?
A: 使えると思います。海外のユーザが現地で購入したWiiリモコンで使用できたとの報告を、いくつかもらっています。

Q: ヘルプ・パッチに書かれているWiiリモコンのSyncボタンとは何か?
A: Wiiリモコンの裏側の蓋を開けて、電池の横にある小さな赤いボタンのことです。リモコン表面の「1」と「2」のボタンを押すことでも良いようですが、赤いボタンのほうが確実であるような気がします。これら2つの違いって何ですかね? 本体や説明書を持っていないので分からない(笑)。

Q: バイブレーションの音が変です。
A: 1.0B1では正常ですが、1.0B2で動作不良がありました。1.0B3で解決されています。

Q: WindowsやCFM用のオブジェクトはあるか?
A: ありません。ただし、ソースコードを公開しているので、他の動作環境に移植していただいて構いません。ちなみに、ある人がPd用に移植を始めたそうです。現時点でコンパイルはできたが、動作不良とか。

Q: ソースコードを修正して、異なるバージョンを作っても良いか?
A: COPYRIGHT.txtに書いたように、このソフトウェアはBSDライセンスです。このライセンスに従って修正や配布をしてください。

Q: DarwiinRemoteとaka.wiiremoteとのソースコードの互換性は?
A: aka.wiiremote 1.0B5はWiiRemoteFramework 0.4のソースコードを参考にしていますが、APIや開発言語の違いもあって同一とは言えません。今後はフレームワークをそのまま取り込むことも考えられますが、未定です。

Q: DarwiinRemoteとaka.wiiremoteとの違いは?
A: アプリケーションとMaxオブジェクトです、と言えばそれまでですが、aka.wiiremoteはより多くの情報を出力するようになっています。一方で、aka.wiiremote自体は生データに近い情報を出力するので、その利用はユーザに任せられています。例えば、ヘルプ・パッチでのグラフ表示やボタン表示がそうです。

ってなとこですかね? 他にも何かあれば、このブログに書いてくださいませ。適時更新します。

マスク保持可能なコーデック

1月のダンス公演の制作が急ピッチで進んでいるのですが、その中でマスク(アルファ・チャンネル)を含んだムービーを作成できるコーデック(Codec)は何か?という疑問が生じました。例えば、jpeg(Photo-JPEG)とかSorensonとかを指定して、プレーン0にマスクを持たせたマトリックスをjit.qt.recordに送っても、作成されるムービーにはマスクが含まれていないのです。これは、jit.qt.recordの問題ではなくて、Fina Cut Proなどでも同様です。

それで、すべて(と思われる)コーデックをテストしてみたところ、以下のようになりました。この中でHAS_MASKがマスクを保持できたコーデックであることを示しています。つまり、raw, animation, planarrgb, targa, png, tiffはマスクを持つことができる、他はダメっぽい,という結果です。

raw, HAS_MASK;
cinepak, no_mask;
graphics, no_mask;
animation, HAS_MASK;
video, no_mask;
componentvideo, no_mask;
jpeg, no_mask;
mjpega, no_mask;
mjpegb, no_mask;
planarrgb, HAS_MASK;
sgi, not_supported;
macpaint, not_supported;
gif, not_supported;
photocd, not_supported;
qdgx, not_supported;
avrjpeg, not_supported;
opendmljpeg, not_supported;
bmp, no_mask;
winraw, not_supported;
vector, not_supported;
qd, not_supported;
h261, no_mask;
h263, no_mask;
dvntsc, no_mask;
dvpal, no_mask;
dvprontsc, not_supported;
dvpropal, no_mask;
flc, not_supported;
targa, HAS_MASK;
png, HAS_MASK;
tiff, HAS_MASK;
componentvideosigned, not_supported;
componentvideounsigned, not_supported;
cmyk, not_supported;
microsoft, not_supported;
sorenson, no_mask;
indeo4, not_supported;
argb64, not_supported;
rgb48, not_supported;
alphagrey32, not_supported;
grey16, not_supported;
mpegyuv420, not_supported;
yuv420, not_supported;
sorensonyuv9, not_supported;
mpeg4, no_mask;

not_supportedとなっているのは、ムービー保存時にerror: jit.qt.record: bad codec specifiedというエラーが発生したコーデックで、これが妙に多いのが気にかかります。テスト・パッチの組み方が悪かったかもなので、参考程度に見てください。MacBook Pro/Mac OS X 10.4.8/QuickTime Pro 7.1.3/MaxMSP 4.6.2/Jitter 1.6.2での結果でございました。

UBオブジェクト開発講座(5) オブジェクトのデバッグ方法

第5回UBオブジェクト開発講座は、これがなくては話にならない!と言っても過言ではないオブジェクトのデバッグ方法についてです。実際のところ、誰でも誤りのないソースコードを書けるわけはないし、考えるだけで間違いを発見できるわけでもないですからね。そこで登場するのが、デバッガ。Xcodeのデバッガは優秀ですから、スイスイと作業が進みますよ。例によって、以下は「Debugging Your Object in Xcode」の抄訳というか、簡略&補足版です。

Step 1: プロジェクト・メニューの「アクティブなビルド構成を設定」から「Development」を選ぶ。

Step 2: プロジェクト・ウィンドウの「ビルド」ボタンをクリックして、ビルドを行う。プロジェクト・フォルダのbuildフォルダに作られるDevelopmentフォルダにオブジェクト・ファイルが生成される。

Step 3: デバッグを行うためのパッチ・ファイルをMaxMSPアプリケーションで作成する。パッチができれば、それをDevelopmentフォルダに保存して、MaxMSPアプリケーションを終了する。
補足:MaxMSPアプリケーションではコピー・プロテクションのためにデバッグできない。デバッグにはランタイム版であるMaxMSP Runtimeアプリケーションを用いる。

Step 4: Xocdeでプロジェクト・ファイルを開き、プロジェクト・メニューから「新規カスタム実行可能ファイル…」を選ぶ。

Step 5: アシスタンス・ウィンドウが現れるので、「実行可能ファイル名」の覧に「MaxMSP Runtime」と入力する(任意の名前で構わない)。

Step 6: 「実行可能ファイルのパス」の「選択…」ボタンをクリックし、ファイル選択ダイアログでMaxMSP Runtimeアプリケーションを選択する。

Step 7: 「プロジェクトに追加」のポップアップ・メニューに自分のプロジェクト(デバッグするプロジェクト)の名前が表示されていることを確認して、「完了」ボタンをクリックする。

Step 8: ソースコードにブレークポイントを設定する。ソースコードの左側に表示される行番号をクリックすれば、その行にブレークポイントが設定され、黒いマークが表示される。
補足:ブレークポイント・マークをドラッグして、任意の行にブレークポイントを移動することができる。黒いマークをクリックすると、灰色に代わり、ブレークポイントが無効になる。もう一度クリックすると黒色に変わり、ブレークポイントが有効になる。ブレークポイントを削除するには、マークを行番号のエリア外にドラッグして、マウスボタンを離せば良い。

Step 9: デバッグ・メニューから「デバッガ」を選び、デバッガ・ウィンドウを開く。

Step 10: デバッガ・ウィンドウの「デバッグ」ボタンをクリックする。デバッガが起動し、デバッガがMaxMSP Runtimeアプリケーションを自動的に起動する。

Step 11: MaxMSP Runtimeアプリケーションから、デバッグ用のパッチ・ファイルを開く。
補足:MaxMSP Runtimeアプリケーションのサーチ・パスにデバッグしたいオブジェクト・ファイルが存在しなければならない。先に述べたようにDevelopmentフォルダにオブジェクト・ファイルとデバッグ用のパッチ・ファイルを作成し、そのパッチ・ファイルを開けば良い。

Step 12: パッチ・ファイルが開き、ブレークポイントを設定した箇所までオブジェクトが実行されると、実行が一時停止される。デバッガ・ウィンドウが前面に現れ、ソースコードのブレークポイントが表示される。

Step 13: デバッグ作業が終われば、MaxMSP Runtimeアプリケーションを終了する。これでデバッガも自動的に終了する。
補足:クラッシュなどでMaxMSP Runtimeアプリケーションを終了できない場合は、デバッガ・ウィンドウの「終了」ボタンをクリックすれば、強制的にMaxMSP Runtimeアプリケーションを終了させ、デバッガを終了させることができる。

実際のデバッグ作業としては、デバッガ・ウィンドウで変数の値を確認したり、「ステップオーバー」などのボタンをクリックして、プログラムの実行を一行ずつ進めたりすることになります。このあたりは、一般的なデバッグ方法ですので、ここでは省略します。Xcode関係の適当なプログラミング入門書を参考にしてください。

なお、グローバル変数はデフォルトでは表示されませんが、変数欄の「Globals」をクリックすると、グローバル・ブラウザが開き、ライブラリのリストから自分のユーザ名を選ぶと、オブジェクトで使用しているグローバル変数が表示されます。このグローバル変数の表示にチェックを入れると、その変数が表示されます。

それから、デバッガってなんとなく怖いって人は、ソースコードにpost()文を入れまくるという古典的な方法もありますね。でも、そっちのほうが面倒に思えるくらい、Xcodeのデバッガはスマートですから、是非使ってみてください。

UBオブジェクト開発講座(4) オブジェクトのビルド構成

UBオブジェクト開発講座の4回目は、オブジェクトのビルド構成についてです。同じオブジェクトでも、コンパイルやリンクの仕方によって異なるコードを生成することができます。このような設定をXocdeではビルド構成と呼んでおり、UBオブジェクトのビルド構成については、「Details About Xcode Projects for Max Externals」に説明されています。以下は、この文章の要点だけを抜き出したものです。

C74がUBオブジェクト用に用意しているビルド構成には、DevelopmentとDeploymentの2種類があります。これらの特徴的な設定は、以下の通りです。

buildsettings.gif

要するに(というか文字通りなのですが)、開発中はDevelopmentを選びます。この設定はコンパイルが速く、デバッガを利用することができ、クラッシュ・ログにも記録が残るからです。

そして、開発が完了して一般に公開する時に、Deploymentに設定してビルドを行い、Deploymentフォルダに作成されたオブジェクトを配布します。このオブジェクトはUniversal Binaryなので、PowerPC MacでもIntel Macでも動作することになります。

ただし、これらとは別にDefalutという構成も用意されていて、これがデフォルトの設定になっています。Defaultは、C74の文章では説明されていませんが、実際にはDevelopmentと同じ設定内容になっているようです。想像するに、Defaultはユーザの好みに合わせて設定を変えるために用意されていて、DevelopmentとDeploymentは設定を変えずにそのまま使ってね、ってことじゃないかな。

なお、C74の文章では、ビルド構成の主要な項目についても説明されていますが、ここでは省略します。特殊なオブジェクトの開発や我がままな開発スタイルを貫きたい場合を除けば、一般的にはDevelopmentまたはDeploymentのいずれかを選ぶだけで事足りますからね。というわけで、今回はとっても短い説明になりました。めでたしめでたし。

aka.wiiremoteオブジェクトをアップデート

aka.wiiremoteをアップデート、あわせてソースコードも公開しました
前回と同じく、サイドバーのソフトウェアにあるaka.objectsからどうぞ。

akawiiremote-b2.jpg

このバージョンでは、
– 接続・解除の改善
– IRセンサーのサポート
– 状態取得のサポート
– ヘルプ・パッチの改善
をしましたでございます。

センサーバーはロウソクで

Wiiネタが続きます。センサーバー(実際は赤外線投射器)はロウソク2本で代用可能とのことで、やってみたところ、ちゃんと認識しているみたいです。これでIRセンサーのインプリメントができます。

candle-sensorbar.jpg

が、何故かうまくいかない。そうこうしているうちに、ロウソクが短くなってきたので(笑)、今夜は打ち止めかも。こんな感じで無理矢理に時間制限をつけるのも、結構良いかも。

Wiiリモコンが熱い(らしい)

MaxMSP-MLでも話題になっていますけど、Wiiのリモコンをコンピュータで使おうという動きが活発(?)になっていますね。多分、Max MathewsのRadio-Batonを連想させるから、ムラムラっときちゃった人が多いんじゃないかな(PS3のアレじゃダメなわけで…)。かく言う私も4000円ほどでWiiリモコンだけ買ってきました。本体はイラナイ〜ってことで。

それで、WiiリモコンはBluetoothデバイスなので、すぐにも使えそうなんだけど、Mac OS Xではデバイスとして検出されるものの、デバイスに必要なサービスがありません、と言われてしまいます。WindowsではHID (Human Interface Deivce) として認識されるんだけど、Maxのhiオブジェクトがエラーってる感じでうまく動きませんね。

一方、アプリケーション・レベルではかなり進展していて、Mac用のDarwiinRemoteやWindows用のWiinRemoteなどがあります。これらのアプリではマウスのエミュレーションができるので、mousestateオブジェクトを使えば、取りあえずWiiリモコンでMaxをコントロールできますね。

darwiinremote.jpg

しかし、マウス・モードではフルにWiiリモコンの機能を使えないので、ドライバやオブジェクトを誰か開発して欲しいな〜って他力本願モードで書いておきます。ところで、Wii関係の開発情報を精力的に集結していたWiiLi.orgが空っぽなんですけど、どうなったんでしょうか?

send/receive/valueを探せ

パッチ・コードを使わずにメッセージをやりとりできるsendとreciveは便利なのですが、使い過ぎるとどこからどこへメッセージが送られているか、訳が分からなくなります。特に大規模なパッチを書いた時や他の人が書いたパッチを読み解く時に困りますね

そんな時は、sendまたはreceiveのオブジェクト・ボックスをダブル・クリック。これで同じ名前を使っているsend/receiveオブジェクトがポップアップ・メニューに表示されます。このメニュー項目のいずれかを選ぶと、そのパッチ(またはサブ・パッチ)が一番手前に開くようになっています。次の図は、actionという名前を指定したreceiveオブジェクトをダブル・クリックしたところ。

sendreceive-popup-menu.gif

メニュー項目の後半の括弧内は、そのオブジェクトが属しているパッチの名前で、鍵括弧付きならサブ・パッチの名前です。このメニューには同じ名前を持つvalueオブジェクトも表示され、valueをダブル・クリックしても同じメニューが表示されます。ただし、send/receiveとvalueは別物なので、sendに送ったメッセージがvalueに格納されるわけでも、valueに送ったメッセージがreceiveから出てくるわけでもありません。

ちなみに、ここで言う名前はオブジェクトのアーギュメントとして指定する名前のことで、ObjectメニューのName…で付けるオブジェクト名ではありません。それから、パッチが開くのはいいんだけど、そのオブジェクトが選択されるわけではないので、パッチ内のどこにあるかは、EditメニューFind…を使わなければなりません。それくらい自動選択してくれればいいのにね。

Find…に関して言えば、Multiオプションをオンにしておくと、サブ・パッチを含めて現在開いているパッチをすべて次々と検索してくれるので、この方法も便利に使えますね。

なお、valueに似たpvにはポップアップ・メニュー機能はありません。pvは同一パッチ内でしか有効でないので、Findで探してくれ、ってことでしょうか。同じように、同一パッチ内で動作するpvarやpattrなども、この機能はありません。しかし、パッチを超えてシグナルをやりとりできるsend~やreceive~も、この機能を持っていないので、ちょっと片手落ちですね。

BootCampとParallels Desktop

Intel-MacでWindowsを起動するBootCampやParallels Desktopで、Windows用Max/MSP/Jitterを利用するには、現状ではBootCampを使うしかないようです。BootCampでの動作は細かな所までチェックしていないんだけど、特に大きな問題なくMaxが動いています。私はiLokキーを利用していますが、Challenge &Response方式でも大丈夫かな。

一方のParallelsでは、コピー・プロテクションのPACEが仮想技術に対応していないので、Maxが起動しないそうです。ということは、近く登場するVMWareでもダメということになります。こーゆー本質的でない部分で動作しないのは悲しいですね。ちなみに、コピー・プロテクションがないRuntimeは起動します。

もちろん、Intel-MacならMac OS XでMaxを動かせば良いのですが、たまにWindowsでパッチの動作を確認したい場合やWindows版しかないオブジェクトを試したい場合がありますからね。そんなちょっとした用途なら、コンピュータを再起動するBootCampは面倒で、アプリ起動だけのParallelesで済ませたいわけで、PACEには早急に対応して欲しいところです。