Mirrorscope.app登場

iPhoneのカメラを用いたミラー的なリアルタイム映像エフェクタ、Mirrorscope.appを公開しました。機能的には単純なので説明を付けていませんが、起動すれば自動的に映像が表示され、スクリーンをタップすれば一時停止、iPhoneを振ればエフェクトが変わります。

iphone-mirrorscope-icon.png iphone-mirrorscope.jpg

エフェクト自体はどこにでもあるようなものだけど、これがiPhoneで動作すると、世界が一変します。散々言っているコンピュータ終焉論が、私の本業(?)である表現の世界でも確実になったと実感しちゃいました。コンピュータはもちろん、PAやプロジェクタを使っている場合ではないです(と言いながら、まだまだ使うんですけどね〜笑)。

だから、Time Machine!ATOMxGALAXIESのような表現が、もうすぐiPhoneで動きます…と言いたいものの、映像処理の詳細がまるで分かっていません。カメラのプレビュー映像を表示することは簡単だけど、その画像にアクセスできない(涙)。それは通常のビットマップではないようで、ハードウェアがスクリーンに直接描画しているのかもしれないです。これまた2月待ちですね。公式SDKがサンドボックスだったら、本当に泣いちゃいますよ。

力学シミュレーション・ライブラリ

久々の学生クエストで、Maxで利用できる物理シミューレション(特に力学シミュレーション)用のMaxオブジェクトを調べてみました。と言っても、Web検索しただけですけどね。

物理シミューレションって何?って人は、下記のMathieu Chamagne氏が公開しているデモ・ムービーを見れば、その動作の概要が分かります(これだけじゃないけど)。ここにはLemurを使ったムービーもありますね。Lemur自体も力学シミュレーションを内包しているので、Lemurでボヨンボヨンした情報を使う豪快な手法も考えられます(笑)。

lemur-pmpd.jpg

PMPD Cyrille Henry氏が開発した物理シミュレーション・ライブラリ(Pd用)
PMPD for Max Ali Momeni氏によるMPDのMaxへの移植(Max 4.5用)
PMPD library Mathieu Chamagne氏によるPMPDのMaxへの移植(Max 4.6用)
mc.pmpd Mathieu Chamagne氏が作成したPMPDのアブストラクション(簡易利用パッチ)

MSD Nicolas Montgermont氏が開発した物理シミュレーション・ライブラリ(Pd/Max用)

jit.gl.lua + luaODE 以前に紹介したWesley Smith氏が作成したLua言語およびODE(力学エンジン)のMaxへの移植

他にもあれば教えてください。

ちなみに、質問をした学生クンはmotionExpress(IAMASの古堅真彦氏開発)の力学エンジン部分をMaxに移植するそうなので、こちらも楽しみに待ちましょう。

Maxはプログラミング言語か?

最近はMax関係の記事が少なくって、iPhoneばかりとお嘆きかもしれませんが、当分この傾向は続くかも。もっとも、このサイトは個人サイトじゃないので、他の人も面白い話題があればお願いしますね(趣旨&景観に配慮して、公序良俗に反しない、ってことで)。

ただ、iPhoneを持っていないから関係ないって思うのは早計ね。あと何年もしないうちに、誰もがiPhone(あるいは同種のデバイス)用の作品を作ってますから。それは、数年前に多くの人がMax(あるいはプログラミング言語で)で音楽や映像を作るとは思っていなかったことと同じ。

Maxに関しては、キブンはMax 5待ちで、特に基本環境的なことは今やる気になれません~。それに、少なくともランタイムがiPhoneに載らない限り、プロトタイピング以外にはMaxはiPhoneに縁がないです。もちろん、これまでもMaxは極めて優秀なプロトタイピング・ツールだったので、それはそれで正解ですけどね。私もMaxでアルゴリズムを作ってから、iPhoneのコードを書いてます。

それで、MaxのオブジェクトをC/C++で書いていた時も感じていたんだけど、テキスト記述型言語でプログラミングしている時は、頭が非常に活性化してハイな状態になる。それに対して、Maxでプログラミングをしている時は、頭は落ち着いていてロー(と言うかクワイエット)な状態になる。

これって、右脳/左脳、芸術野/計算野、鳥瞰的/虫瞰的って話なんだろうけど、なかなか面白いですね。Maxがアーティストに人気があるのは、メディア機能が強力なだけでなくって、そんなところに理由があるような気がするな。だから、ProcessingとかFlash(ActionScript)ってダメなんじゃない?

もっとも、右脳(芸術野)だけではアルゴリズムは作れない。これがアーティスト志望の人がプログラミングから脱落する最大の原因だと思う。なので、一般教養科目がほとんどないIAMASでも、数学(+英語)だけはあるし、DSPコースのワークショップでも半分はテキスト記述型言語(今年度はProcessingとPython)を使っている訳です。

誤解のないよう補足しておくと、左脳(計算野)だけでもアルゴリズムは作れませんよ。右脳と左脳の両方が必要です。そこで、Maxは両脳を明確に刺激するようになっていて、バランスが取れた状態(やや右脳寄り?)で物事を進める仕組みになっているような気がするな。それは後付けの見方かもしれないけど、Maxという存在自体がそのようになっているんだと思う。

iphone-code-sample.png

ちなみに、iPhone(と言うかOS X/Cocoa)の開発言語であるObjective-Cは、雰囲気的にMaxに近いです。Objective-CはCのスーパーセットなので、そんなことは本来ナイのですが、実際にプログラミングをしている時の頭の働きはMaxっぽい印象が強いですね。どちらもオブジェクト指向だからってこともあるし、いい加減にコードを書いても、それなりに動いてしまうところも似ています。

だから、次世代MaxはCocoaベースになって、Objective-Cでガンガンとオブジェクトを書けるようになって欲しいな。iPhoneでのランタイムあるいはフルセットも、Cocoaベースなら簡単に移植できるだろうしね。これ、強く希望!(と日本語で書いても、C74には伝わらない〜笑)。

で、タイトルの問いかけに戻って、Maxはプログラミング言語か?に対する答えは、Maxはプログラミング言語である!なのです。それも、芸術と計算が混じり合う極めて希有な存在(だから両方が必要)ですね。この特異性と有用性は、他の言語を使ってみると、よく分かります。そして、Objective-Cはこれに近くって、iPhone(と言うかOS X)という未来があるのだから、そろそろObjective-Cを始めてもいいんじゃない?という提案でもある訳です(やっぱり、ソコかぁ?と言われそうですが〜笑)。

Compass.app登場

iPhoneを使って方角を知るためのツール、Compass.appを公開しました。日時計とは逆の仕組みで、時刻が分かっていれば太陽の光によって方角が分かるので、それをアプリケーション化した訳です。Yes|No.app並みに単純&お馬鹿っぽいものの、それなりに有用なツールでございます。

iphone-compass-icon.png iphone-compass-howtouse.png

原理もプログラミングも簡単だけど、これってコンピュータ用には作らないよね。ディスプレイを水平に置くのは、タブレット型以外は大変だからね。その意味では、iPhoneなどの掌デバイスらしいアプリだと思います。

ちなみに、Firmware 1.1.3でMapsにロケーション機能が付くので、ちょいと有用性が薄れました。でも、Wi-Fi電波が届かない山岳や荒野で道に迷った時には使えますよ。夜はどうするのかと言えば、画面上の「N」の方向を北極星に向けます…ってのは、余りにも寒いのでREADMEには書いていません(笑)。

あと、日本じゃ関係ないけど、サマー・タイムや南半球には未対応です。iPhoneでは日付やタイム・ゾーンを設定するので、それから情報を得られるハズなんだけど、iPhoneのAPIとして何が使えるのかは探求できていません。まぁ、公式SDK待ちですね。

No Disc, No Computer

キーノートで発表された、もうひとつの目玉はiTunes/Apple TVでの映画レンタル(HDを含む)ですね。先週話題になっていたBlu-rayとHD DVDのフォーマット戦争の終結云々なんて、完全に吹き飛びました。何度か書いたように、デジタル・コンテンツには価値がナイのです。もう少し丁寧に書くと、デジタル化されたコンテンツによって利益を得ようとする仕組は、本質的に虚構でしかない、ってことね。

appletv-movie-rental.jpg

新しいApple TVの紹介で、それとはなくNo Computer Requiredと宣言していたことも象徴的。これまた何度も、コンピュータはオシマイって言ってきたでしょ。iPhoneやApple TVとともに、2008年はこれが加速されるハズね。今あるApple TVも無償アップデートで対応ってことで楽しみだけど、鎖国日本じゃ提供されるモノは乏しいかもね(暗雲)。

appletv-no-computer.jpg

【追記】初出時に「No Digital Contents, No Computer」としていた記事タイトルを少し変えました。デジタル・コンテンツが不要って主張したい訳ではないので。

Something in the Air

1969年のThunderclap Newmanのヒット・ソングに乗って(ウソ)登場したのは、羽根のような(って形容されるんだろうな〜)MacBook Air。本命のモノシリック型全面スクリーンじゃないんだから、世界で最も薄いノートブックなんてコピーは、Steve Jobsお得意の現実歪曲フィールド(Reality Distortion Field)でしかない。でも、ダマされていると分かりながら、嬉々として「今すぐ予約」しちゃった人はゴマンといるよね。ハイ、私も人のことを言えません(苦笑)。

macbook-air.png

好意的に考えれば、モノシリック(一枚板)型のデバイスはMacラインに納まらないし、iPhoneとの差別化も明確じゃないから、その位置付けに苦労しているのかもしれないね。だから、終焉に向かいつつあるコンピュータの進化型としては、MacBook Airは妥当な仕上がりなのかも。

一方で、大きなマルチ・タッチ・トラックパッドが新しい世代のマシンであることを主張していますね。スクリーン上とパッド上とで操作感がどのように違うのか分からないけど、それぞれの成果がフィードバックされて完成度が高まって行くのは間違いないところ。軽少短薄とかSSDとかワイヤレス関係とか話題は一杯あるけど、個人的にはMacBook Airの真価はパッドだと思うな。一刻も早くAPIを公開されたし、Appleさん。

iPhoneのファクトリー・サウンド

iPhoneのファクトリー・イメージの次は、当然、ファクトリー・サウンドですね。こちらも、ほぼ同様の手順です。

1. iPhoneのディスク・イメージをマウント
Firmware 1.1.2の場合、ファームウェア・ファイルのダウンロードはココから。ターミナルでのコマンド入力は以下の通り。

vfdecrypt -i 022-3725-1.dmg -o decrypted112.dmg -k 70e11d7209602ada5b15fbecc1709ad4910d0ad010bb9a9125b78f9f50e25f3e05c595e2

2. マウントしたディスク内でサウンド・ファイルを検索
サウンド・ファイルはアプリケーションなどの内部にも納められているので、パッケージ内部も検索できるEasy Findなどを使い、.caf、.m4f、.aif、.wavなどを検索すると良い。Firmware 1.1.2の場合、Oktoberfest3B48b.UserBundleディスクには106個のサウンド・ファイルが含まれている(みたい)。

3. 見つかったサウンド・ファイルを別のフォルダにコピー
Easy Findの場合、リストのファイルをすべて選択してコピーする。次いで、Finderで新しく作成したフォルダを開いて、編集メニューの「項目をペースト」を選ぶ。

以上の手順で、iPhoneに納められたサウンド・ファイルを入手できます。

iphone-factory-sounds.png

当初は.m4aや.movだった着信音は、現在は.m4rファイルになっています。この.m4rファイルや一部の.cafファイルはFinderやQuickTime Playerでは再生できません。.m4rファイルは.m4aに拡張子を変えれば開くことができますが、認証が必要と言われてしまいます(涙)。音ネタに使いたい場合は、古いFirmwareファイルを使うしかないみたいです。変換と言うか、認証破りの方法があるのかな?

iPhoneのファクトリー・イメージ

iPhoneの勝手アプリで難しいことのひとつは、GUIデザインですね。インタラクションはもちろんのこと、グライフィック・デザインだけでも大変。iPhoneの強烈な世界観から逸脱せず、明確さと妥当さを失わず、しかし個性を主張するデザインって、ホント難しい。勝手アプリとは言え、デザインまで勝手では、いくら機能が優れてても使う気にならないよね。そんな自己規律性がiPhoneをiPhoneたらしめている訳です。

それは、Apple自身も時々失敗している(笑)くらいなんだけど、私のような素人には「真似る」のが最初の一歩。そこで、iPhoneが標準で持っている画像ファイルを参照&応用しています。iPhoneに入っている画像はすべて(たぶん)pngファイルですが、これらは一般的なフォーマットではないので、そのままでは画像として表示できません。そこで、以下のようにしてファイル収集とフォーマット変換を行ないます。

1. iPhoneのディスク・イメージをマウント
Firmware 1.1.2の場合、ファームウェア・ファイルのダウンロードはココから。ターミナルでのコマンド入力は以下の通り。

vfdecrypt -i 022-3725-1.dmg -o decrypted112.dmg -k 70e11d7209602ada5b15fbecc1709ad4910d0ad010bb9a9125b78f9f50e25f3e05c595e2

2. マウントしたディスク内でpngファイルを検索
画像ファイルはアプリケーションなどの内部にも納められているので、パッケージ内部も検索できるEasy Findなどを使って、.pngを検索すると良い。Firmware 1.1.2の場合、Oktoberfest3B48b.UserBundleディスクには1,071個の.pngファイルが含まれている(みたい)。

3. 見つかったpngファイルを別のフォルダにコピー
Easy Findの場合、リストのファイルをすべて選択してコピーする。次いで、Finderで新しく作成したフォルダを開いて、編集メニューの「項目をペースト」を選ぶ。

4. iPhonePNGでファイル変換
iPhonePNGの書式は以下の通りで、この場合pngファイルをコピーしたフォルダを指定する。

iPhonePNG < 処理するディレクトリまたはファイルの名前>

これで、名前の最後に「-Decoded」が付いたフォルダ(またはファイル)が作られ、変換されたpngファイルは一般的なファイル・フォーマットになっています。

iphone-factory-images.jpg

すべての画像ファイルのサムネール一覧はコチラ(1.6MB)。

それにしても、私にはデザイン才能がないことは明々白々。GUIがほとんどないav.appやYes|No.appはともかく、真似っこ路線の典型Pericam.appとか、結構逸脱しちゃっているakaRemote.appとか、2〜3回はデザインを練り直しているにもかかわらず、あの体たらく。T4Two.appのグラフィックスもイケてないですね(涙)。どなたか助けてください(笑)。

T4Two.app登場

2人で遊べるiPhone用テニス・ゲームT4Two.appを公開しました。早い話がPONGですけど、iPhoneを挟んで各自がそれぞれの指を使ってラケットを操作できるようになっています。加速度センサーの情報も使っていて、iPhoneの傾きがボールの動きに影響を与えます。なので、お一人様でもiPhoneを傾けて遊べます(かな?)。

iphone-t4two-icon.png iphone-t4two-1.jpg iphone-t4two-2.jpg

元々はマルチ・タッチ機能を試していて、ちょっと発展させてゲームに仕立てたものです。ゲーマじゃないし、ゲームを作ることもあまりないんだけど、シンプルに2人で遊べるゲームってちょっといいなと思った次第です。指を左右に滑らせたり、iPhoneを傾けたりして、それなりに体感係数が高いような気がしますね。ダイナミック(動的)でセンソリー(感覚的、身体的)なものをプログラミングで作るって、まさにDSPでございます。

それから、マルチ・タッチ(ってか2点タッチ)自体は簡単に扱えますが、得られたデータをどう使うかは、なかなかの研究課題になります。このゲームでも、最初はラケットを自由に動かせるようにしていたものの、それぞれの指を区別できる訳ではないので、場合によっては相手のラケットと入れ替わっちゃう事態が発生(笑)。それに衝突判定も格段に面倒になるので、元祖PONGっぽくラケットは直線移動するだけに路線変更。危うく泥沼にハマるところでした(苦笑)。

Wiiリモコンで4点位置検出

時々同じような質問が来るので書いておきますね。aka.wiiremoteのバージョン1.0B7からextraoutputメッセージが追加されていて、これをオンにする(extraoutput 1を送る)ことで、加速度センサーのキャリブレーション情報やIRセンサーの生データが得られるようになっています。ヘルプ・パッチの右側下寄りにあるothersサブ・パッチを開くと、これらの数値が確認できます。

akawiiremote-others.png

Wiiリモコンの先端に埋め込まれているIRセンサーは、実際には赤外線カメラで、センサー・バーには両端に赤外線LED(赤外線投光器)が仕組まれています。しかも、このIRセンサーが優秀で、赤外線カメラは1027×768ピクセルの解像度を持っていて、4点までの赤外線光源の位置を100Hzの周期(0.01秒の時間間隔)で割り出してくれます。IRセンサーが画像解析してくれるので、コンピュータではCPU負荷がほとんどなく(Bluetooth通信だけで)、4点もの位置検出ができる訳です。

一般的な用途では、センサー・バーを固定しておいて、Wiiリモコンを手に持って動かしますが、この逆もできます。つまり、Wiiリモコンを固定しておいて、センサー・バー(あるいはロウソクなど何らかの赤外線光源)を動かすことになります。これで何ができるのかという実例は、Johnny Chung Lee氏のWiiプロジェクトが有名ですね。マイノリティ・レポートばりに空中で指を動かして映像を操ったり、机に投影した映像にペンで絵を描いたりしています。ヘッド・トラッキングしたVR映像も奥行き感タップリで楽しめます。

wiiremote-headtracking.jpg

Lee氏はC#用のライブラリを使っているそうですけど、aka.wiiremoteでも情報取得までは実装しています(それ以上はオブジェクトの仕事ではないからね)。前回の告知ではサラっとしか書かなかったので、気が付いていない人が多いみたい(笑)。

ともあれ、赤外線光源を使うなら、これでいろいろと応用できそうでしょ? 天井にWiiリモコンを取り付けて、赤外線LEDを付けた人の位置を検出するなんて朝飯前。物体(人体)上に複数の赤外線光源(あるいは反射材)を取り付ければ、回転やら距離の検出もできるし、複数のWiiリモコンを使ってもいいしね。