|
Quick Links
Categories
XML/RSS Feed
Statistics
Total entries in this blog:
Total entries in this category: Published On: 10 01, 2005 11:59 午前 |
1035 : Max Tips(008) : 赤松正行------------------------------------------------------------------------
DSPマガジン 2005.03.13 No.1035 ------------------------------------------------------------------------ 最近は暖かくて春めいてきましたが、急に雪が降ったりして、季節の変わり目の不安的な気候ですね。皆様はいかがお過ごしでしょうか。私と言えば、前回お伝えした神戸での個展は無事に開幕、今は東京の展覧会の準備に奮闘しています。そこで、今回は集中的にMax関連の作業をしたこともあって、その中で考えた小技などを説明したいと思います。これらの展覧会は、以下のサイトからリンクを辿ってお越しくださいね。Jitter(だけじゃないけど)オンパレードの個展もまだ間に合いますよ。おまけは、ワイヤレスで音を飛ばすユーティリティの紹介です。 http://www.iamas.ac.jp/~aka/ ・日本語を侮ヲしたい ・マウスはコントローラ ・デュアル・パワーの威力 ・音をワイヤレスで飛ばせ ------------------------------------------------------------------------ Max Tips(008) 赤松正行 ■日本語を侮ヲしたい いきなりタイトルが文字化けしてます、って、Maxで「日本語を表示したい」という文字列を扱うとこうなっちゃうんです。なんだかアナドられて悔しい感じですね。Maxでは日本語というか2バイト文字列をきちんと扱うことができなくって、いくつかの文字が文字化けしてしまいます。 この問題は何年も前からCycling'74の開発者達には伝えていて、彼らも認識はしているんですが、Maxの処理の根底から変えなければならず、メッセージ・レベルでの対応は難しいんだそうです。まぁ、コメント・オブジェクトの2バイト文字対応とかJava/JavaScriptとかでノロノロと進んではいるんですが、根本的解決には至らず、なんだか大昔のOSとかアプリみたいですね。 音楽用途では日本語が扱えなくても困らないかもしれませんが、今やJitterで映像を扱うとなると日本語を処理したい場合が多々ありますよね。映像にキャプションを入れたい、とか、東洋テイストで漢字をグルグルしたい、とかね。 もっとも、日本語を表示するだけなら、あらかじめ日本語テキストを画像として用意しておけば良いことになります。だけど、大量の日本語テキストを扱いたい場合には、その作業も結構面倒ですし、画像データの容量もバカになりません。 そこで思いついたのが、QuickTimeムービーのテキスト・トラックを利用する方法です。これは変換作業も簡単だし、テキスト・データなので容量も僅かで済みます。フレーム番号を指定するだけで、該当するテキストを表示できるので、データベース的にも使えますね。 テキスト・トラックを作るには、まず、表示したい文字列を含むテキスト・ファイルを作ります。テキスト・ファイルでの1行がQuickTimeムービーでの1フレームになります。次に、QuickTime Playerを起動して、ファイル・メニューから「読み込み...」を選び、テキスト・ファイルを選択します。これだけで、テキスト・トラックのムービーができます。おっと、これはQuickTime Proの機能なので、スタンダードな人はアップグレードが必要ですよ。 さらにフォントや字詰めなどの細かな設定をしたい場合は、ファイル・メニューから「書き出し...」を選び、書き出し方法を「テキストからテキスト」にして、オプション設定で「テキスト、ディスクリプタ、時刻の表示」を選んで書き出します。このテキストにはディスクリプタと呼ばれる各種設定が含まれていますので、変更したい部分を書き換えてテキストを保存し、そして再度QuickTime Playerで読み込めばOKです。 ディスクリプタはHTMLタグみたいなもので、およそ何を設定するものか想像がつくかと思いますが、詳しくは以下の資料を参考にしてください。 テキスト・トラック・ディスクリプタの解説: http://til.info.apple.co.jp/cgi-bin/WebObjects/TechInfo.woa/wa/showTIL?id=42643 さて、このようにして作成したQuickTimeムービーは、jit.qt.movieオブジェクトで読み込み、表示することができます。テキストから画像へのレンダリングはQuickTimeが行っているので、Maxで見られたような文字化けは起こりません。ムービーのファイル・サイズが小さいのはグッドなのですが、レンダリングにCPUパワーを使いますので、非力なマシンではこの点が要注意。 任意のフレームを表示したい場合は、timeメッセージ、frame_trueメッセージ、jump_trueメッセージなどを用います。例えば、10フレーム目を表示したい場合は、「frame_true 9」というメッセージを送るわけですね。最初のフレーム番号は0ですからね。一般によく使うframeメッセージやjumpメッセージはテキスト・トラックに対しては正しく動作しないようです。 ------------------------------------------------------------------------ ■マウスはコントローラ これまたタイトルを見て、なんじゃ?と思われるかもしれませんが、マウスをコントローラとして使う時のお役立ち情報です。インタラクティブなインスタレーションなどでは、鑑賞者の操作や動作を何らかの形で取り込む必要がありますよね。この時に、もっとも簡単な手段がマウスです。もろにマスウでなくても、トラックパッドとかトラックボールとか、マウスと同じように動作するデバイスもたくさんあります。 多くの場合は、フルスクリーン表示したいので、「;max hidemenubar」というメッセージ・ボックスにbangを送り、jit.windowに「fullscreen 1」を送ってウィンドウを全画面に広げます。さらにマウス・ポインタを消すために「;jitter cursor 0」メッセージ・ボックスにbangを送ります。Mac OS XならDockも「自動的に隠す」にしておきます。そして、MouseStateオブジェクトなどでマウス・ポインタの位置やマウス・ボタンの状態を読み取れば、鑑賞者の操作状態が得られます。 と、ここまでは常識(?)ですね。しかし、これで困るのは、消えてるとは言え、マウス・ポインタがスクリーンの端に達すると、それ以上移動しないので、無限に動作できないことが挙げられます。また、Mac OS Xなら、マウス・ポインタがスクリーンの上端や下端に来ると、自動的にメニュー・バーやDockが現れ、マウス・ポインタも現れてしまいます。これでは、せっかくのフルスクリーン表示がオジャンです。 このような問題を解決するために考えたのは、以前にも紹介したMaxへのpupdateメッセージで、強制的にマウス・ポインタの位置を戻す方法です。まず、screensizeオブジェクトなどでスクリーンの中心座標を求め、そこにマウス・ポインタを移動します。次に、MouseStateオブジェクトでマウス・ポインタの位置を求め、スクリーンの中心座標からの差を求めます。この差がユーザがマウスを動かした相対変化値になります。そして、すかさずマウス・ポインタをスクリーンの中心に戻し、以下、これを繰り返します。 このようにすれば、マウス・ポインタは常にスクリーンの中心に戻りますから、メニュー・バーやDockに影響を与えることがありません。マウスが移動した相対変化値をそのまま用いても構いませんし、相対変化値を加算し続けることで、無限に値を大きく、あるいは小さくできる(と言っても数値の精度範囲ですが)絶対変化値として用いることもできます。 簡単なサンプル・プログラムも作りましたので、以下のリンクからダウンロードして試してみてください。このプログラムでは動作状況が分かるように、マウス・ポインタを消去していません。escキーを押すことで動作開始、もう一度escキーを押せば動作終了です。 TIPS008files.sit ------------------------------------------------------------------------ ■デュアル・パワーの威力 デュアル・プロセッサのコンピュータを使っていても、Maxはあまり特別な配慮をしていないので、その恩恵を感じることは少ないかもしれません。しかし、例えば、MSPでのオーディオ処理とJitterでの画像処理は異なるスレッド(プログラムの実行単位)として処理されますので、デュアル処理が行われますので、それぞれで各CPUのパワーを極限まで使うことができます。 とは言うものの、一番の問題は、負荷の高いJitterでの画像処理において単一のCPUしか使えないことです。画像処理だけなら、シングル・プロセッサでもデュアル・プロセッサでも、あまり違いがないことになります。 しかし、内容によってはデュアル処理ができる可能性があります。つまり、2つのアプリケーションとして画像処理を行えば良いのです。それぞれ独立したアプリケーションとしてビルドするのが一番良いと思いますが、MaxMSPアプリケーションとMaxMSP Runtimeアプリケーションで2つのパッチを実行しても良いでしょう。 具体的な例としては、神戸の個展で展示している「The Watchplate」という作品があります。この作品は最大1ヵ月分の映像を蓄積しながら、同時に様々な時刻の映像を見ることができるというもので、映像をハードディスクに記録するレコーダと表示を行うプレーヤという2つのアプリケーションに分けています。 レコーダではハードディスクの容量を稼ぐために処理負荷の高い画像圧縮を行っていますし、プレーヤは数十枚の映像を3次元空間に踊らせるという、これまた負荷の高い処理を行っています。従って、これらをひとつのパッチとして実行している時は、スムースな動作ではなかったのですが、2つのアプリケーションとして実行させると、満足できる動作になったというわけです。 この例では、2つのアプリケーションはハードディスクのファイルを仲介して、同時に協調的に動作しています。このように、2つのアプリケーションをいかに連携させるかが難しいところで、どのような場合でも、うまく切り分けることができるとは限らないでしょうね。 でも、そこは知恵の絞りどころ。例えば、画像をフェード・イン、フェード・アウトする場合には、スクリーンのガンマ・テーブルを書き換えてフェードする処理を別アプリケーションとして走らせることができますね。アプリケーション間の連携は、UDP通信やMIDI通信などが利用できます。デュアルな人は、いろいろと工夫してみてください。 ------------------------------------------------------------------------ ■音をワイヤレスで飛ばせ きっと出るだろうと思ってたら、しっかり出ました、AirTunesの汎用版、Airfoilの登場です。以前に紹介したAudio Hijackなどを開発しているRogue Amoeba SoftwareからUS$25(3月中ならUS$20)のシェアウェアとして販売されています。デモ版もダウンロードできますので、早速試してみましょう。 まず、AirTunesは、iTunesからAirMac Expressのスピーカー・ポートへ、ワイヤレス(またはEhternet経由)で音楽を転送する技術ですね。AirMac ExpressをPAに繋いでおけば、AirMac入りのPowerBookでワイヤレス・ラップトップ・ライブができちゃいます。PowerBookのバッテリーも2〜3時間は持つでしょうから、電源コードも不要で、電波の届く範囲(規格上は半径45メートル以内)なら、どこでも移動しながら演奏できます。 ただし、AirTunesはiTunesの機能であって、他のアプリケーションから利用することはできませんでした。そこで、Airfoilは、どんなアプリケーションからでもAriMac Expressにオーディオを流せるようになっています。 使い方はとっても簡単。オーディオの出力元となるアプリケーションを選び、出力先のAirMac Expressを選んだら、Transmitボタンを押すだけ、というイージーさ。いくつか音楽系アプリケーションも試してみましたが、CoreAudioに対応したものなら、まず問題はないようです。もちろん、MaxMSPもOKです。 現在のバージョンではパスワードが設定されているAirMac Expressは扱えないとか、少々使い勝手の悪い面がありますが、それらはいずれ解決されるとして、大きな問題は、音が2〜3秒遅れてしまうことです。これはAirfoilの問題というより、AirMac Expressやその転送プロトコル(RAOP、Remote Audio Output Protocol)の問題なのでしょうね。それに音質としても結構こもっちゃうので、オーディオ・ハイファイな用途にはきびしいものがあります。 というわけで、実際にはワイヤレス・ライブには向かないものの、アイディア次第で面白いことができそうです。Airfoilの他にも、オーディオ・ファイルをAirMac Expressへ流すJustePortやroap-playなどの実験的プロジェクトもあります。あ、ちなみにAirMacは海外ではAirPortなので、ググる時はお忘れなく。 Airfoilホームページ: http://www.rogueamoeba.com/airfoil/ JustePortホームページ: http://www.nanocrew.net/software/ raop-playホームページ: http://sourceforge.net/projects/raop-play/ ------------------------------------------------------------------------ メルマガの発行確認や購読中止は、DSPマガジンWEBサイトをご覧ください。 http://dspmag.iamas.ac.jp/ ------------------------------------------------------------------------ Copyright(C)2003-2005 DSP Magazine. All Rights Reserved. 転送・転載禁止 ------------------------------------------------------------------------ |