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

Jamoma 0.4

最近新しいバージョンがリリースされたJamomaをご紹介。これはTim Places氏とTrond Lossius氏が中心になって開発していて、GUI付きオブジェクト集といった風合いのモジュラー・システムです。以下のように、オブジェクト自体がGUIを持っているので、コンパクト・エフェクターを繋いでいくような雰囲気でパッチを作ることができます。

jamoma.gif

内部的には結構凝ったことをしていて、汎用性と拡張性が考慮されているようです。この手のミドルウェア的アプローチはいくつかありますが、その中でもJamomaの志は高いような気がします。でも、本当に実用になるかどうかは未知数ですね。つまり、Maxにオブラートを被せて使い易くするのはイイんだけど、トランスペアレントな整合性が取れない限り、結局はMaxとミドルウェアと2つのシステムを使うことになってしまうからです。

一方で、初心者向けのMaxへの導入としては、面白いんじゃないでしょうか? 先に書いたように、コンパクト・エフェクターのようにオブジェクトを繋いでパッチを作る路線ですね。理解し易いし、それなりに凝ったこともできそう。ただし、この路線ではロジカルな処理には限界があるので、プログラミング能力を培うには役立たないでしょね。となると、ロジックに対するミドルウェアも必要という気がしますが、これまた二重システム問題に直面しそうです。

と言う訳で、賛否両論のコメントを書いちゃいました。じゃ、オマエは使うのか?と言われると、多分使わないんですけど(笑)、Jamomaを試すのは簡単なので、各自試してみてください。上記サイトからダウンロードしたインストーラでインストールすれば、後はMaxを起動してExtrasメニューからjamoma-overviewを選ぶだけです。私の環境では、一部の描画や動作が変でしたけど、バージョン0.4ですから、そんなものかもしれません。

OpenGLで非正方形ピクセル描画

ここ数日は映像制作にハマっています。OpenGLなのに(という言い方は変だけど)、リアルタイムには表示できないジオメトリー多過ぎ状態に突入し、1分間の映像をレンダリングするのに20〜30分かかるトホホな有様。今回の作品はインタラクティブではないので、描画が遅いのは構わないんですけど、リアルタイムにパラメータを調整できないのは、相当ストレスが溜まります。CG系の人って忍耐強いよな〜と感心しちゃいます。

んで、今回の作品はDVD(HDでもBDでもない)で再生されるので、OpenGLの描画をムービー・ファイルにしたあと、DVDとして焼かなければならないのです。しかも、DVD(NTSC SD)の解像度は720×480ピクセルなんですよね。DVもそうなので、なんかヤな予感がしていたら、DVDは正方形ピクセルじゃないことに今更ながら気がつきました(常識?)。これだから家電系ってヤなんだよね。素直じゃない。

となると、非正方形ピクセルとして描画しなければならないわけで、いろいろと面倒だな〜と思っていたのですが、OpenGLなら意外と簡単に対応できました。

解決策:ウィンドウ(トローイング・コンテクスト)を720×480ピクセルにし、レンダーのscaleアトリビュートを1.125 1. 1.とする。

1.125ってのは720/640のことですね。これで描画が横方向(X軸)に引き延ばされるので、DVDに適した画像になるハズです。DVDオーサリングは素人同然なので自信はないのですが、この設定でムービーを作成してDVDを焼いてみたところ、OKっぽかったです。

ちなみに、DVD Studio Proでは、720×534ピクセルで正方形ピクセルとして画像を作れば、縦方向に自動的に縮小してくれるそうです。なぜ、4:3ではないのかな? iDVDでは720×540ピクセルとなってますけど…いずれにしても、OpenGLではない描画なら、正方形ピクセルとして描画する方が楽でしょうね。

と言う訳で、もうすぐソウルのWホテルで、新作映像が流れると思いますよ。

atomxgalaxies-title.jpg

続OpenGLレコーディング

OpenGLレコーディング・パッチのrender_nodeが0.7にバージョン・アップ。作者のRandy Jones氏のWEBサイトからダウンロードできるようになっています。

render_node07.jpg

以前のrender_node0.55は、ちょっと凝ったこと(例えば、消去色の指定やレンダーへのテクスチャー転送)をしようとするとイマイチだったんですが、今回のバージョンではいろいろと配慮されて改善されているみたい。オーディオ同期では5.1チャンネルもサポートされていますね。

3月に予定されている(もうすぐじゃん!)映像作品はオーディオなしなので、自前のパッチで作業していますが、今回のバージョン・アップでrender_nodeも使えそうです。

左から右への順序(left-to-right order)

今日の学生クエスト(と言うかバグ、と言うか初級Maxネタ)は、左から右への順序(left-to-right order)でございました。いえ、誤記ではありませんよ。

Maxは右から左への順序(right-to-left order)で処理が行われるという大原則があって(2061:Maxオデッセイではp.224から)、これを意識してプログラムするのはジョーシキですね。でも、例外もあって、カンマで区切ったメッセージは左から右への順序で、個別のメッセージとして出力されます。例えば、次のパッチでは最初にbang、次にto_texture、最後にeraseという順序でメッセージが出力されます。これは左から右へ処理が進むわけです。

message_order.gif

このことは2061:Maxオデッセイではp.169に書いていますけど、すべてが右から左への順序(right-to-left order)だと思っていると怪我をしちゃいますね。ご用心ご用心。

luaODEが面白い

jit.gl.luaの続きで、同じくWesley Smith氏が制作しているluaODEも面白いです。これも同氏のWEBページからダウンロード可能。これは、jit.gl.luaがC言語の関数を呼び出せるのを利用してODEをモジュールとしてインプリメントしました、ってことのようです。

ODE (Open Dynamics Engine) はRussell Smith氏による連結剛体(articulated rigid body)の物理シミュレーション・ライブラリだそうで、ジョイントで連結された構成物(骸骨とか数珠とか)の運動力学を計算してくれて、衝突検出や重力加速などもできるらしいです。

ode-joints.jpg

WEBをサーチしたところ、簡単な説明日本語ドキュメントなどが見つかりました。研究的にも産業的にも結構使われているみたい。

で、luaODEですけど、現時点ではアルファ版ということもあって、動作が安定していなかったり、サンプルが貧弱(2つの球が落下して跳ね返るだけ)だったりしますけど、今後への期待が膨らみますね〜。皆でボヨンボヨンいたしましょう(笑)。

luaode-test.jpg

jit.gl.luaが面白い

まだベータ版ですが、jit.gl.luaというオブジェクトが面白いです。作者のWesley Smith氏のWEBページからダウンロードできます。このオブジェクトは、Roberto Ierusalimschy氏らによって開発中のLuaというスクリプティング言語をJitterで使えるようにするもので、OpenGLやJitterのAPIを始めとするコンパイル済みのC言語の関数を直接呼び出せるようになっています。

例えば、ListenerVecmathというデモ・パッチでは、複数の3D物体の上にマウス・カーソルを合わせると色が変わり、そのままドラッグすれば移動や回転ができます(jit.gl.handleと同じ)。

jitgllua-listenervecmath.gif

jit.gl.lua_gltrailsは、いわゆるビデオキューブ(映像の3次元表現)ですが、かなり軽快に動きます。

jitgllua-gltrails.jpg

また別の言語かぁ〜という点はイヤですけど、よくあるスクリプト風の言語仕様なので、それほど大きな障害にはならないはず(でも、微妙な相違がかえって混乱することも多々ありますね)。さらにスピードが要求される時はC言語で関数だけを書けば良い(=メッセージ処理等が不要)のもメリットかと思います。

謳い文句によれば、Luaはポータブルでフレキシブルでスピーディなんだそうです。日本語訳でのLua言語の紹介リファレンス・マニュアルも公開されていますね。興味がある人は研究してみてください(んで、教えてください)。

pastの逆オブジェクト

今日(正確には昨日)のワークショップから、初級Maxネタです。入力される数値が、特定の値より大きくなったことを判断するにはpastオブジェクト一発です(下図の左)が、逆に、ある値より小さくなったことを判断するオブジェクトはありませんよね? そこで、私は0から入力値を引いて、ある値のマイナス値を指定したpastを使っていました(下図の左から2番目)。

pastanti-past.gif

一方、佐近田さんは数値比較オブジェクトとchangeとsel 1とを使っているそうです(上図の3番目と4番目)。こっちのほうがスマートで汎用的なので、なるほど〜と思いましたです。

ちなみに、スライダーまでの部分は数値をランダムに増減していて、67や69といった数値はMIDI音源を鳴らすためのMIDIノートナンバーで、いずれもオマケ機能です。

Music for 18 Wiimotes

今日から佐近田さんのNUASで、Wiiリモコンを十数台用意してもらってワークショップを始めました。ずらっと並べるとなかなか壮観です。

18wiiremotes.jpg

この準備の過程で分かったのは、1台のコンピュータに接続できるWiiリモコンは5台が限度(らしい)ってことです。5台まではスムースに接続できるんだけど、6台目からはいろいろ試しても接続できないそうです。これがBluetoothあるいはMac OS Xの限界なのか、Wiiリモコン特有の限界なのかは分かっていませんし、何らかの方法で6台以上接続できるかもしれませんけどね。

jit.qt.movieでのFlashムービー

今日は何故かクエストが多かったのですが、最後はインド人留学生から、jit.qt.movieでFlashムービーが再生できません〜とのヘルプを求められました。Flashなんて使わないから分からないよ〜と言うと、悲しそうな顔をされたので、調べました(苦笑)。

解決策その1:QuickTime環境設定で「Flashを使用」にチェックを入れる。

デフォルトはオフみたいなので、要チェックです。ついでに、MIME設定の「その他」にある「Flashメディア」にもチェックを入れると何かと良いかも。なんだかFlashって嫌われているみたいですね。

quicktime-flash-setting.gif

解決策その2:Flashのパブリッシュ設定でバージョンを下げてswfファイルを作る。

現時点のjit.qt.movieではFlash 8形式のswfファイルは読み込めないみたいです。バージョンを下げると読み込めますが、どこまで下げるべきかは使っている機能によって違うみたいです。簡単なアニメーションならFlash 7でもOKでしたけどね。

flash-settings.gif

ちなみに、彼女はもともとFlasherで、最近Maxを使い始めたそうです。インドでMax使っている人いるの?って聞くと、ほとんどいない、という返事でした。日本では誰でもMaxを使っているのでスゴイ!みたいなことを言うのですが、それはIAMASというかDSPコースの特殊事情ですってば(笑)。

マウス・クリックを発生させる

先の記事を読んだ学生(早いな〜)から、System Eventsでマウス・クリックもできるんですか?という質問あり。それくらい自分で調べろよって気もしますが(笑)、エレベータでの立ち話だったので、まぁ、いいでしょう。

回答:System Eventsでは、できるかもしれないし、できないかもしれない。

System Eventにはclickコマンドがありますけど、例えば、以下のようなスクリプトはSafariなら動作しますが、同じようなスクリプトがLiveでは動作しないようです。クリックの対象がUIエレメント云々ってなっているので、そのあたりがアプリケーションの作り方によって違うのかも。

tell application "Safari"
activate
end tell

tell application "System Events"
tell process "Safari"
click at {360, 105}
end tell
end tell

それで、以前にも同じような問題があって、仕方がないのでオブジェクトを作っています。

解決策:aka.mouseを使う。

akamouse_m.gif

ダウンロードは、サイドバーにあるいつものaka.objectsからどうぞ。

ちなみに、ドラッグはどうするんだい?っていう人のために、mouseDownとmouseUpというメッセージがあるんですが、たまに動作不良を起こすので隠しています(option-control-クリックで見つけた人はエライ)。これに限らず、私のオブジェクトの使用は自己責任でお願いね。