July 03, 2006

GAINERを使う:GAINER v.1

Written by Katsuhiko Harada | Device , Max+Others , processing

はじめまして。原田克彦と申します。
以前のエントリにもあがっていましたが、I/Oモジュール"GAINER"についてです。

Content
■GAINERとは
■GAINERを使用した例「Haohao_table」
■GAINERを体験!!


■GAINERとは

GAINERは、iamasのPDP(Programable Device Project)GAINER v1.0 開発チームによって開発されています。GAINERはPCとUSB接続で、センサからの値を取得したり、LEDやモータなどのアクチュエータを制御するI/Oモジュールです。マウス、キーボード以外からの入力、音と映像以外での出力などを行いたいときに、比較的簡単に取り扱うことができます。
体験してみないと得られない感覚やインタラクションを含むシステムなどをすばやく試作することで、頭の中で考えていても消えてしまいやすい動的なアイデアを具現化する手助けをしてくれます。このような環境をアーティストやデザイナーなど、より多くの人に利用してもらうことが目的です。


    GAINER v.1










これも以前に書かれていたことですが、この様なI/O Module,Unitは、様々なものがあります。その中でGAINERと他のI/O Module との違う特徴を示すことで、GAINERの説明としたいと思います。I/O Module??という方は、前のエントリの「I/O Board,Module,Unit」でセンサーを使うを参照してください。

GAINERの特徴
•ユーザは自分自身のモジュールを部品レベルから組み立てて理解を深めることができる
•モジュール製作後は、部品やリード線を差すだけで回路が組み立てられるブレッドボードに   装着して利用できる
•ユーザは複数のコンフィグレーションの中から目的にあったものを選択できる
   -アプリケーションによってアナログ入力、デジタル入力、デジタル出力、PWM出力の数の   割合を用意されているパターンから選ぶことができます-
•プログラマブル•ゲインアンプにより、アプリケーション側から出力電圧の小さなセンサなど  の信号を増幅させることができる
•ソフトウェア&ハードウェアがオープンソースで公開
   -ソフトウェアライブラリは、Mac osXとWindows XPの両プラットフォームでMax/msp,   Processing,Flashが用意されています-


    GAINER Parts

    Max/msp ソフトウェアライブラリ









詳しくは、http://gainer.cc/にて。



■GAINERを使用した例「Haohao_table」

GAINERを使用した製作例として「Haohao_table」を製作しました。Haohao_tableは、丸テーブルに近づく人々の距離によってテーブル上に一枚の絵が生成される作品です。テーブルの中心にあるプランタには距離センサが六方向に内蔵しており、人やテーブル上のモノの距離によって生命体haohaoが発生します。haohaoには、オス•メスが存在し両性の関係が痕跡としてテーブル上に残ります。この作品は描画にProcessing、距離センサの入力にGAINERを使用しています。


    Haohao_table

    Haohao_table
    Takanori ENDO, Ichitaro MASUDA,
    Katsuhiko HARADA












ここでGAINERが使用している機能としては、6つの超音波センサが出力する距離に比例する電圧をアナログで入力し数値化しています。また、一度にすべての超音波センサを使用すると超音波が干渉し正確な値が採れないため、3つのデジタル出力によって対角線上のセンサだけが動くように制御しています(ポーリング制御)。ここでのGAINERからの値の取得・制御、テーブルに投影するイメージの描画にはProcessingを使用しました。

    Haohao_table SYSTEM











    Planter

    Inside Planter














■GAINERを体験!!

「Haohao_table」を含めるGAINERは現在、初台にあるNTTインターコミュニケーション・センター(ICC)のオープン・スペース研究開発エリアに展示されています。また、Max/msp,ProcessingによるGAINER体験コーナー、これまでのワークショップの映像、GAINERキットが展示されています。ショップでは、GAINERキットも販売しています。(オンラインでも購入できますが、お近くの方はどんなものなのか、ICCで体験してから購入することをおすすめします。)
研究開発エリアを含めた常設展示は無料なので、近くにお寄りの際は是非足をお運びください。


    GAINER ICC















    GAINER体験コーナー

    GAINER体験コーナー











なんか、最後は宣伝じみてしまいましたが、今後もデバイス、ハードウェア的なトピックがあったら、書きたいと思っています。よろしく。

(写真資料提供:ICC)


続きがあります "GAINERを使う:GAINER v.1"
March 14, 2006

「I/O Board, Module, Unit」でセンサーを使う

 電子部品として売られてるセンサー類のほとんどは、感知した結果を電圧の変化で出力します。
これを、パソコンに入力して利用する場合には、デジタルデータに変換しますが、そのためのハードウェアが必須になります。

 パソコンと繋いで、センサーからの値を利用したい。LEDを光らせたい。モーターを制御したい。など。
マウスとキーボード以外からの入力、音と映像以外での出力などを行いたい様々なケースで、
それぞれの方法に対して、専用のハードウェアを自ら作るという手段をとれる人は、ほとんどいないでしょう。
 I/O Board 又は、I/O Moduleや、I/O Unitと呼ばれるハードウェアは、様々な用途に対応できるように汎用性があり、扱いやすい設計がなされているので、多くの人にとってセンサー類を使うときにとても重宝するのです。

どういうものがあるのか?


自分が把握してるものには、以下のようなものがあります。

"TELEO"は、こういったものの中では、古く有名です。4アナログ、2デジタルの入力、2デジタル、2PWMの出力。複数のTELEOを連結して、より多くの入出力が可能になる。Max/MSPに対応しています。
*PWMは、PulseWidthModulation(パルス幅変調)の略で、デジタルでアナログを表現する方式。どういうことかというと、モーターを手動でON/OFFするのを想像してみてください。ONにしたら、回転数0から、なめらかに最大回転数になる。最大回転数になる前にOFFにしたら、回転数0に向かうが、0になる前にまたONにしたらまた最大値に向かう。そうやって、ある一定量になるように、高速にON/OFFを繰り返すことで、デジタル出力で、なめらかなアナログ量を実現する方式です。

"phidgets"は、用途別に様々なタイプがある。そのなかで基本的なタイプのInterfaceKitは、PWM出力がないが、8アナログ、8デジタル入力、8デジタル出力。数が多い。Max/MSP、Flashに対応している。

最近のものとして、Arduino、Wiring、BlueSenseがあります。
"Arduino"、"Wiring"は、processing向けに作られているようです。細かくは把握してません。

"BlueSense(別名 MaxBoards)"は、ワイアレスで行えるのが特徴です。

 入手するのに、一番手軽なのは、日本に代理店のある"phidgets"です。それ以外は、日本に代理店がないので、本体自体は、そんなに高くはないのですが、輸送料で高くついてしまいます。

GAINER



GAINERs
 "GAINER"は、iamasのPDPプロジェクト内でオープンソースで開発されているI/O Moduleです。現在はMax/MSPとProcessingに対応するためのライブラリが公開されています。
大きな特徴としては、電気回路の設計段階でテスト用に使うブレッドボードに装着して利用するところです。より詳細については、GAINER開発メンバーのハラダくんによる記事を期待してください。

 また、GAINERに興味を持った方は、3月18日(土)ー21日(火)に横浜BankART Studio NYK(旧日本郵船倉庫)にて行われる「SOURCE OF LIFE はじまりの水 - IAMAS in Yokohama」内で、GAINERを使ったワークショップが開催されるので、参加してみてはどうだろう。と、言いたいところですが、すでに、定員数に達してしっまったみたいです。ただ、ワークショップはオープンな感じで行われるようなので、モノは見る事ができると思います。
また別の機会があれば、いち早くお知らせします。

(写真資料提供:Katsuhiko Harada)

続きがあります "「I/O Board, Module, Unit」でセンサーを使う"
February 10, 2006

OpenSoundControlについて

 OpenSoundControl(以下OSC)は、アプリケーション間、ハードウェア間をUDP/IP通信でコミュニケーションするためのプロトコルです。
.
..
 最近では、いろんなケースで見かけるようになり、Lemurというマルチタッチ可能なタッチパネルを備えたコントローラデバイスが、ソフトウェアとの通信にOSCを採用したり、デファクトスタンダードと言えるほど浸透してきています。

 自分自身も、よく使う場面があります。音マシンと映像マシンとの同期をとるためであったり、Flash8以前(Flashでビットマップ処理できないとき)に、jitterでの画像解析の結果をFlashコンテンツに反映させたり、などなど。様々なアプリケーションに実装済みなので、使い何処も様々あるでしょうし、オープンソースなので、自分のソフトウェアにも実装可能です。

 他に変わった使い方としては、mmonoplayer(jit.atari2600オブジェクトの作者)は、オープンソースのNESエミュレータにOSCを実装して、実行中のゲームのカラーパレットをMaxから動的に変更を加えてグラフィックを改ざんするため、エミュレータとMaxの通信にOSCを使用している。
http://mmonoplayer.com/nesvis.html
http://mmonoplayer.com/mmmanip.html

 この例も含め、いろいろなOSCを扱った記事や実例のテーマは、何かが何かをコントロールするような主従関係ものが多いようです。関連するドキュメントがすでに多く存在する上で、改めて、ここでOpenSoundControlについて書くのですから、なにか新しいことでないと意味がないような気になるので、ここで新しいかもしれないことを提案すると、並列処理的なアイデアを加味すると、より幅広い応用ができるのではと思うのです。

processingでこいで Maxでおどる


 例えば、自分の使用頻度高いMax/MSP+Jitterは、大量のオブジェクト同士を物理法則に沿わせて計算させるのが非常に苦手です。Maxでオブジェクト書くのは労力がいりますし、手軽にJavaScriptで書いたとしても満足のできる実行速度が出るとは限りません。
 こういうのはProcessingだとやりやすいです。パフォーマンスも悪くないし、最近ではtraer.physicsという物理エンジンライブラリも登場したので、より迅速に書けます。
http://www.cs.princeton.edu/~traer/physics/

 このライブラリ、ちょっといいなぁと思ったので、MaxとProcessingを同時に走らせ、MaxからのOSC経由でのProcessingへの命令を受けて、計算結果をまたMaxに返すことで、Processingをバックエンドで動く計算マシンのようにして、最小限の労でMax上で、物理法則に基づいた動きを実現してみようと考えた。
 さっそくこのライブラリをダウンロードして、サンプルの"bouncyballs"に、OSC送受信部分を加えて、Max側では、マウスの位置の送信部分と、受信した座標から円を描画する部分を書いた。

右図:Maxからのマウス座標の送信を受けて、Processing側でボールの位置を計算し描画するとともに、Maxに座標データをわたしているので、MaxとProcessingでボールが全く同じに動いている


 3個だけでは効果を実感できないので、任意の個数にMax側から変更できるようにるるために、Processingのコードを書き換え、Max側は速度に応じてボールが明るくなるように変更を加えた。

 Processingのコードはアプリとして書き出した。右上にあるのがそのウィンドウ。描画する必要がないので、最小サイズに。アプリ化は、最近のリビジョンからの機能だが、これはとてもありがたい。例えば、ライブ中にある時間だけこの処理をさせたいとなったとする、アプリ化しておけば、その間だけApplescriptでアプリを自動で立ち上げることができる。

 Maxでは、リストは256までしか保持できないので、最高128個のパーティクルまででしかテストできなかったが、パーティクルそれぞれが訴求力と反発力の伴った運動、安定して30fpsの速度で動作した(PowerBookG4 867Hz メモリ1GB)。他の処理系がまったくないので、激しく処理を切り替えるライブなどでの実用に耐えるかどうかまでは不明だが、シンプルなことであれば、この即効性はとても魅力じゃないでしょうか。

 余談ですが、OSCは2バイト文字に対応してないので、日本語は送受信できません、自分も以前にFlashからMaxに日本語を送ろうとしてはまったのですが、これは、1バイトづつに変換して送ることで解決します。変換時の文字コードがお互いに違うと、化けるので、文字コードの変換も必要になります。

October 25, 2005

P5 VS Jitter

Proce55ingとjitterの決定的な違いは、群れを描くときに、Jitterでは非常に書きにくい&遅いところ。
これはP5で書いたもので、落下しながら、明るい物体をよけていくドットを5000個描画してる。
dots5000.jpg
PowerBookG4 867Hz 1GBRAM Tigerの環境で、20fpsの実行速度。

jitterで書くのは、しんどいので書いてないが、
もし、やったとしてもそんなに速度は出ない。

やってみた、続きをどうぞ。

続きがあります "P5 VS Jitter"