- 2022.03.28 Monday
- スポンサーサイト
-
一定期間更新がないため広告を表示しています
- | スポンサードリンク | - | | - | - | pookmark |
- 2011.01.03 Monday
- funnel serverのReadMe
-
■はじめに
Funnelはフィジカルコンピューティングのためのツールキットです。Gainer I/O
モジュール、Arduino I/Oボード、XBee無線モデムとFIO(Funnel I/O)ボードに
対応し、それぞれの入出力ポートに対して閾(しきい)値による分割、LPFやHPF
などのフィルタ処理、スケーリング、オシレータなどのフィルタをセットすること
ができます。
最新の情報に関しては次のウェブサイトを参照してください
http://funnel.cc
■動作環境
□OS
・Windows XP SP2/3またはVista
・Mac OS X 10.4または10.5
□ライブラリの動作環境
・Flash CS3/4、Flex Builder 3、Flex 3 SDKなどActionScript 3で
プログラミングできる環境
・Processing 1.0
・Ruby 1.8.*(1.9では未確認)+ふなばただよしさんのOSCライブラリ
http://raa.ruby-lang.org/project/osc/
□Funnel Serverの動作環境
・Javaランタイム実行環境1.5以上
□ハードウェア
・Gainer I/Oモジュール
・Arduinoまたは互換機+Firmata v2(http://firmata.org/)
・XBee 802.15.4またはZB ZigBee PRO
・FIO(Funnel I/O)モジュール
□オプションの環境
・Arduino 0015(ArduinoまたはFioを使用する場合)
・action-coding
http://code.google.com/p/action-coding/
■バグレポートや要望など
バグレポートや要望は、Google CodeのIssuesシステムを利用して下さい。
このシステムのユーザーインタフェースは英語のみですが、日本語で記入して
いただくことも可能です。バグレポートの場合、問題を再現する手順に関しては
できるだけ詳しく記入して下さい。
http://code.google.com/p/funnel/issues/list
その他一般的なディスカッションに関しては、以下のフォーラムを利用して
下さい。なお、スパム防止のため、フォーラムへの投稿には登録が必要です。
・日本語:http://gainer.cc/forum/index.php?board=26.0
・英語:http://gainer.cc/forum/index.php?board=25.0
■クレジット
Funnelはオープンソースプロジェクトです。
Funnel開発チームの構成メンバーは小林茂、遠藤孝則、増田一太郎です。
FunnelはIllposed SoftwareによるJava OSC、Ola Bini氏によるJvYAML、
Keane Jarvi氏によるRXTXを使用しています。
・Java OSC:http://www.illposed.com/software/javaosc.html
・JvYAML:https://jvyaml.dev.java.net/
・RXTX:http://www.rxtx.org/
コントリビュータ
・Jeff Hoefsさん:I2C関連クラスおよびAS3ライブラリの改善
・加藤和良さん:RubyライブラリでのマトリクスLED(Gainer I/Oのモード7)のサポート
■更新履歴
Funnel 009(2009.04.16)
・Nathan Seidle(SparkFun Electronics)の協力によりFIO(Funnel I/O)v1.3をリリース
http://www.sparkfun.com/commerce/product_info.php?products_id=8957
・FirmataでのI2Cをサポート
・それぞれのソフトウェアライブラリにI2C関連のクラスを追加
・ArduinoおよびFIO用にSimpleI2CFirmataとStandardFirmataWithI2Cを追加
・XBee設定用ツールの追加
・XBeeConfigTerminal:一般的な設定用
・XBeeConfigTool:無線でスケッチをFIOボードにアップロードする設定用
・Processing:Funnel ServerのText Areaへの組込み
・Ruby:マトリクスLED(Gainer I/Oモード7)のサポートを追加
・さまざまなバグ修正とパフォーマンスの改善
Funnel 008(2008.09.25)
・FIO(Funnel I/O)v1.0を追加
・Funnel Serverが使用するネットワークポートが1つのみに
・各ハードウェア用のサンプルを追加
・XBee ZB ZigBee PROのサポートを追加
・XBee 802.15.4の出力側コントロールを追加
・インストールマニュアルを追加
・さまざまなバグ修正とパフォーマンスの改善
Funnel 007(2008.04.21)
・Processing用ライブラリの改良とバグ修正
・Make: Tokyo MeetingでのGainerワークショップ用に作成したサンプルを追加
・XBee用のサンプルを追加
・XBeeを使用した際Processingライブラリがクラッシュするバグを修正
・Funnel Serverの改良と不具合対応
・ArduinoおよびXBeeでシリアル通信のボーレートを設定できるようにした
・RXTXライブラリをPowerPCマシンでも動作するよう入れ替えた
Funnel 006(2007.12.21)
・Processing用ライブラリのバグ修正と改良
・イベントハンドラchangeで値を取得した時に1つ前の値になるバグを修正
・イベントハンドラgainerButtonEventを追加
・led()およびbutton()を追加
・各ポートの番号を返すプロパティanalogInput[0]などを追加
Funnel 005(2007.12.17)
・ActionScript 3とProcessingライブラリにFunnel I/OモジュールおよびXBeeのサポートを追加
Funnel 004(2007.12.06)
・ソフトウェアライブラリの内部構造を変更
・ソフトウェアライブラリ間で定数やメソッドなどを統一
・RubyライブラリにFunnel I/OモジュールおよびXBeeのサポートを追加
・Funnel I/Oモジュールのハードウェアおよびファームウェアを追加
Funnel 003(2007.11.12)
・Processing用ライブラリのバグを修正(WindowsでのOutOfMemoryエラー)
Funnel 002(2007.11.08)
・Processing用ライブラリのバグを修正(ScalerとConvolution)
・ActionScript 3ライブラリのバグを修正
http://gainer.cc/forum/index.php?topic=205
Funnel 001(2007.10.31)
・ConfigurationクラスとGainerおよびArduino用のショートカットを追加しま
した。
・ProcesingライブラリにArduino用のサンプルコードを追加しました。
・AS3ライブラリにGainer.MODE7のユーティリティークラスとサンプルを追加
しました。
・実験的にXBeeのサポートを追加しました。XBeeモジュールの設定に関しては
次の設定ファイルを参照してください。
・sketchbook/configure_xbee_base.py
・sketchbook/configure_xbee_remote.py
・RubyライブラリにXBee用のサンプルコードを追加しました。
・Funnel ServerのOSCはTCPのみ対応しています(UDPのサポートはありません)。
・パフォーマンスはまだ最適化されていません。
Funnel 000(2007.09.24)
・最初の公開ビルドです。
・対象とするI/OモジュールはGainer I/OモジュールとArduino I/Oボードです。
ArduinoはFirmata 0.3.1ファームウェアを書き込んだArduino NGとArduino
Diecimilaで動作確認を行いました。
・Funnel ServerのOSCはTCPのみ対応しています(UDPのサポートはありません)。
・パフォーマンスはまだ最適化されていません。
■謝辞
FunnelはIPA(情報処理推進機構)未踏ソフトウェア創造事業(2007年第I期)
の支援を受けて開発されました。
テーマ名:プロトタイピングのためのツールキット「Funnel」の開発
Funnelの開発に関して以下の方々に感謝いたします:
・美馬義亮(未踏ソフトウェア創造事業プロジェクトマネージャ)
・David A. Mellis(RXTXライブラリのバイナリ) - | whaison | Gainer | 18:28 | comments(0) | trackbacks(0) | pookmark |
- 2010.03.29 Monday
- GAINER がwindows7でも動いちゃった。。件
-
GAINER &Funnel Server がwindows7でも動いちゃった。。
とりあえず //I/Oモジュールのボタンを押した時とかは反応したの。
山辺せんせいは 動かないと教えてくれていたけど、、試しにやってみたら動いた。
オフィシャルでは動作対象外なのかな
環境は関係あるのかわかんないけど
Windows7Professional
Intel Core2 Duo 3.16GHz
Memory 4 GB
だよ。
これで正面においてあるPCでいじりーできるってもんだ。
やる気出てきちゃった。。。
ドライバーはWindows7が USBを接続したら
オンラインでドライバを探していますとかって言われて
かってにダウンロードしてきたドライバです。
fdti232ってでてきたから同じなのかな。。
本来のドライバー
http://ftdichip.com/Drivers/VCP.htm - | whaison | Gainer | 10:23 | comments(0) | - | pookmark |
- 2010.03.26 Friday
- Gainer:山辺真幸のFlashと Funnelで始めるGainer入門講座 | ロクナナワークショップに参加して。。
-
参加予定イベント 山辺真幸のFlashとFunnelで始めるGainer入門講座 | ロクナナワークショップ
にいってきたけど記事にしてなかったのね。
Gainer 起動順序
0、ドライバーを入れて再起動。
0、回路を修正(とばしてもOK)
1、gainerをUSBにさす
2、funnelサーバーを起動する
※回路を修正する前にサーバーを落として、USBも抜くことぉ!
LEDを点灯させてみるんだけど。
LEDは長い方がプラスで、短い方がマイナスなのだ。
LEDには電圧がかかりすぎると壊れちゃうので
(プラスマイナス逆でも1発では壊れないっぽい)
そんだから抵抗がいるわけで、その抵抗は今回は330Ωオームなんだってさ。
言ってもどの色がそれだかよくわかんないぞw って思ってしらべてみたらみっけた
抵抗のカラーコードとE系列 さんより抜粋。よく読むと抵抗の覚え方がわかるのだ。
ゲイナーキットについてたのは
橙橙茶金330Ω(オーム)と
その30倍の抵抗の
茶黒橙金10kΩ(オーム)
だってさ。
とりまgioっていうGainerのインスタンスをつくる
※fioのときはnew Fioにするだけだってさ。import funnel.*; import funnel.ui.*; var gio:Gainer; // Gainer のインスタンス // Gainer のインスタンスを生成する gio = new Gainer();
// アナログインプットは0〜1の範囲で出力をコントロールできるのね。
gio.analogOutput(0).value = 1
ついたあ! 最終的なコードはこれimport funnel.*; import funnel.ui.*; var gio:Gainer; // Gainer のインスタンス // Gainer のインスタンスを生成する gio = new Gainer(); // アナログ出力用変数 var _aoutValue:Number = 0; // 必要に応じて各種イベントハンドラをセット // スライダに対して以下を実行 bar0.addEventListener(MouseEvent.MOUSE_DOWN, _beginDrag); bar0.addEventListener(MouseEvent.MOUSE_UP, _endDrag); // ドラッグ開始 function _beginDrag(e:Event):void { e.target.startDrag(false, new Rectangle(0, 0, e.target.parent.gauge.width - e.target.width, 0)); addEventListener(Event.ENTER_FRAME, _updateValue); } // ドラッグ終了 function _endDrag(e:Event):void { e.currentTarget.stopDrag(); removeEventListener(Event.ENTER_FRAME, _updateValue); } // スライダから値を取得して_aoutValuesを更新(0.0〜1.0を代入) function _updateValue(e:Event):void { _aoutValue = bar0.slider.x/256; } // ドラッグ可能なスライダであることを示すためにカーソルを変更 bar0.buttonMode = true; addEventListener(Event.ENTER_FRAME, loop); function loop(e:Event):void { // 出力をコントロールする gio.analogOutput(0).value = _aoutValue; }
関連サイト
WCAN mini ActionScript Vol.5 GAINER WORKSHOP in 大須 (Unknown Quality)
さん が 細かく情報のっけてたの。
Gainer workshop - Vox
出力はできたので次はセンサーによる入力 - | whaison | Gainer | 13:14 | comments(0) | - | pookmark |
- 2010.02.20 Saturday
- floscってなんだろーな おべんきょー
-
floscチュートリアル(http://transmote.com/flosc/)より翻訳。
floscとは何ですか?
floscは、macromedia flashが
UDPデータを理解できるようにして、
どんなソフトウェアとも通信できるようになる、
ben chunによって書かれた通信ゲートウェイ(プロトコルトランスレータ)です。
floscはjavaサーバとひとそろいのactionscript機能から成ります。
UDP-的な ソフトウェアと flash の XMLSocket をコミュニケーションさせます。
TCP-フォーマットのデータも読み書きします。
javaをサポートして、flashを実行できるどんなシステムでも、動かせます。
たとえばwin98/2000/XP、linux、およびmacOSX等
floscは何をしますか?
'flosc'という名前は'flash'と'OSC'か、Open Sound Controlの略称です。
OSCとは、 増加するのソフトウェアとファームウェアシステムで使用できる
MIDIと同様の、しかし、より速くて、よりフレキシブルなデータ形式です。flosc はactionscriptデータをOSC形式に翻訳して、
actionscriptのXMLSocketを通して'(プロトコルトランスレータとしての)ゲートウェイ'javaサーバに TCP形式におけるOSCデータを送ります。
最終的には
javaサーバのもう一方の端ではUDP形式でOSCデータを送ります。
プロセスは 完全にリバーシブルです
--floscはどちらかの方向によるデータを送って、受け取ることができます。floscは非常に制限がないソ フトウェアです。
名前はフラッシュとOSCの間のブリッジを含意しますが、
ゲートウェイjavaサーバは、
TCPとUDPデータの間で翻訳するためだけに 存在しています。
そういうものとして、2つの形式のコミュニケーションを必要とするどんなアプリケーションにもそれは使用できます。ま た、両方の方向をデータに送るfloscの機能のため、
floscが意図している方法で使用さえされるとき、多くの可能性があります。
最大装置のためにフラッシュインタフェースを作成するのにそれを使用できます、
そして、MIDIを制御してお互いに応じるグラフィックスと音を生成します。
.全体的なやりかた。
このセクションはfloscをどう働かせるかに関する迅速で、段階的な指示です。以下で、より詳細な情報をめざして勉強してください。
- sendOSC()(外向的な)と
parseMessages()(入って来る)機能を使用して、
あなたのflashアプリケーションの、送受信をセットアップします。 - OSCパーサとUDPコミュニケーションオブジェクトを使用して、
あなたの選択した音のソフトウェアに
音を送るアプリケーションの送受信をセットアップします。 - マシンの上の音のアプリケーションの実行した上でjavaゲートウェイサーバを始めます。OSCポートナンバーとフラッシュポートナンバーを入力します。
- フラッシュアプリと音のアプリ(特に決まった順番でなく)を起動し実行します。
行く準備ができました。
つかれたからこれでおしまい。-----------------------------------------------------
以降機械翻訳データ
..ゲートウェイjavaサーバ。
floscのバックボーンはjavaサーバです。javaサーバは'ゲートウェイ'と呼 ばれるクラスへ中心に置かれます。 ゲートウェイは、UDPデータ、TCPデータを送って、受け取る'TCPServer'を送って、受ける'OSCServer'をセットアップして、これ らのサーバを通してすべてのデータを送ります。
floscダウンロードは多くのjava .class(コンパイルされる)と.java(ソース)ファイルを含んでいます。同じフォルダーのこれらのファイルを置いてください、あなたがどこで 願っても。 .classファイルのすべてが同じフォルダーに一緒にいる限り、位置は重要ではありません。
また、floscダウンロードは.flaファイルを含んでいます、actionscript機能のすべてがfloscによって使用されている状態で。次のセクションでものについて議論します。
ゲートウェイは窓の上、または、macOSXの上のTerminalでDOSシェルに立候補することであるかもしれません。floscを使用することにおける第一歩は、ゲートウェイを始めることです:
ステップ1:コマンド・プロンプトを開いてください。
窓に関して:
- DOSプロンプトを開きます。 (>走行、タイプ
コマンド
(98/ME)またはcmd
(NT/2000/XP)を始めます) - あなたが.classファイルを置いたディレクトリの
cd¥
とフルパスをタイプしてください、そして、ENTERを押します。 (すなわち:Progra~1円のcd¥flosc¥ゲートウェイ、 ¥
、)
- Terminalの窓を開けます(あなたはApplicationsでTerminalを見つけることができます)。
- "
cd
"をタイプしてください、そして、(スペースに注意してください!)あなたが.classファイルを置いたフォルダーをTerminalの窓に引きずってください、そして、ENTERを押しつけます。
(窓とmacの両方)
javaゲートウェイ[oscPort][flashPort]
を タイプしてください、そして、ENTERを押してください。そこでは、[oscPort]がデータをフラッシュの外部からOSCに送るのに使用されるポー トの数であり、[flashPort]は、フラッシュからのデータを送るのに使用されるポートの数です。floscのドキュメンテーションと例で使用され るデフォルトは、1250と3000のポートです。 これらが他のプログラムを妨げないなら、それらはすばらしいはずです。一般に、どんなポートNo.より多くの1000も安全です。 (すなわち:javaゲートウェイ1250 3000
)
将来自分の上で助かるために、あなたがあなたのためのこのすべてをする近道を書くことができる、ダブルクリックします:
窓(.batファイル):
どんなテキストエディタの新しいテキストファイルも作成してください、そして、以下のテキストに入ってください:
cd¥パス名
javaゲートウェイoscPort flashPort
oscPort とflashPortは適切なポートナンバーです。'myFloscServer.bat'のように.bat拡張子があるファイルを保存してください。' パス名'がコンパイルされたjavaゲートウェイサーバのクラスがあるフォルダーへの絶対パスであるところでは、ファイルしてください、(すなわち、c: Progra~1円の¥flosc¥ゲートウェイ、¥
、)、今、あなたが、.batファイルをダブルクリックできるべきであって、それは自動的にあなたのfloscサーバを始めるでしょう。
macOSX(.commandファイル):
どんなテキストエディタの新しいテキストファイルも作成してください、そして、以下のテキストに入ってください:
cd/パス名
javaゲートウェイoscPort flashPort
'パス名'が絶対パスであるところに、コンパイルされたjavaゲートウェイサーバクラスファイル(/すなわち、ユーザ/ericsoco/デスクトップ/flosc-0.3
)、 oscPort、およびflashPortがあるフォルダーには、適切なポートナンバーがあります。'myFloscServer.command'のよ うに.command拡張子でこのファイルを保存してください、そして、プログラム協会次に、ジェネリックテキストファイル形式、開いている端末とタイプ 'cd'がなければ新たに作成されたcommanndファイルで端末の窓にフォルダーを引きずってください、そして、打たれて、入ってください。最終的 に、タイプしてください。
chmod755myFloscServer.command
そして、打たれて、入ってください。今あなたは、.commandファイルをダブルクリックできるべきです、そして、それは端末を通して自動的にあなたのfloscサーバを始めるでしょう。
..floscのactionscriptを使用します。す る最初のことは、あなたのコミュニケーションをセットアップすることです。floscダウンロードにデフォルトフラッシュテンプレートの箱を含んでいて、 入力テキストへのIPアドレスとポートに値をタイプできますか、または直接あなたのコードに変数をはめ込むのを選ぶことができます。入力ボックスが少しバ ギーであるように思えることに注意してください。 時々、値をタイプするでしょう、そして、ヒットは接続します、そして、数を変えるでしょう。テキストボックスの値があなたが欲しい値を示すのを確認してく ださい。
あなたの通信網をいったんセットアップさせると、いなくなったすべては、交信することです!parseMessagesと共にこれをしてください。() 機能(受信データのための)とsendOSC()は機能します(発信データのために)。
あ なたは、sendOSC()と呼んで、変数名、値、IPアドレス、およびポートをそれに通り過ぎなければなりません、あなたが音の装置に情報を送りたがっ ているときはいつも。私はonEnterFrame()、onMouseMove()、およびonMouseDown()操作者の中でしばしば sendOSC()電話をします、音のconinuouslyかユーザ入力がある変化を生成するために。
好きなように同じくらいしばしば sendOSC()と呼ぶことができますが、UDPデータは高い交通用途における下げられたパケットの傾向があるのを意識してください。言い換えれば、何 かの引き金となるようにただ一つの値を送ろうとしていて、他の多くのネットワークトラフィックがあれば(おそらく、あなたは同じ音のアプリケーションに データを送る他の4つのフラッシュアプリケーションをすべて、持っています)、堅実装置側で大いにデータをデバッグして、必ずチェックしてください。
フラッシュがXMLデータを受け取るときはいつも、parseMessages()は自動的に呼ばれます。parseMessages()の中では、
child.attributes.TYPE
(変数名)とchild.attributes.VALUE
(可変値)を使用して、良いデータを得てください。次に、あなたはそれで自分がすることをします…
..actionscriptは機能します。
このセクションは個人の機能の故障です、えー、floscパッケージのフラッシュ部分に機能を含んでいます。どうそれらを使用するかに関する迅速なrunthroughについて前項を参照してください。
/()/分離()/handleConnect(引き継がれます)handleCloseを接続してください。()
これらの機能はXMLSocket接続を扱います。handleIncoming(xmlIn)、displayPacketHeaders(パケット)
これらの機能は入って来るXMLデータを個人価値にseperateします。それらは、入って来るXMLデータをデバッグしてたどるのにだけ使用されるように思えます。OSCPacket(アドレス、ポート、時間、xmlData)
これはOSCPacketのクラスのための建設者機能です。単にhandleIncoming()に関連して使用されるように思えます、受信データをたどって、デバッグするために。parseMessages(ノード)
これは良い方の1つです。それは入って来るXMLデータからusuable値(変数名と値)をはぎ取ります。フラッシュで受信データを使用したいと思うなら、このコードに変更するか、または加えてください。sendOSC(名前、arg、destAddr、destPort)
変 数名、可変値、送付先IPアドレス、およびそのIP住所の仕向港をそれに送って、これはもう片方の良い1つです。それはUDP形式に翻訳された、java ゲートウェイサーバを通してあなたのデータをそのIPに送るでしょう。基本的に、これはあなたの音のソフトウェアとコミュニケートするのに使用するもので す。
..ソフトウェアを鳴らしてください。
あ なたの音のソフトウェアの選択によって、あなたは、あなたのソフトウェアがUDPデータを送って、受け取って、UDPとOSC形式の間でそれを翻訳するの を許容するために必要なオブジェクトを手に入れなければならないでしょう。これはあなたが何を必要とするか、そして、どこでそれを見つけるか、そして、ど のようにそれを使用するかに関するリストです。
最大/msp
例のフラッシュ最大floscアプリケーション
最大/mspはオブジェクトあなたが CNMATバークレーからそれらをダウンロードできるOpenSoundControlオブジェクトとUDPのスイートを必要とします。
あ なたの入力セットアップはオブジェクトが読まれたotudpから始まるべきです、'フラッシュポート'に設定されたポート、あなたがjavaゲートウェイ に渡した2paramaetersの2番目、およびあなたがフラッシュ装置に設定するポートで。OpenSoundControlオブジェクトの入り江に アウトレットを持って行ってください。 OSCオブジェクトの2番目のアウトレットをルートオブジェクトに取ってください。(あなたは名前のあなたの入って来る変数のすべてをそれから外に送るで しょう)。
あなたの出力セットアップは可変名前価値の組があるリストを引き金のオブジェクトに送るでしょう。'OSCポート'があとに続 いた状態で、引き金のオブジェクトはデータを通す、otudpへのオブジェクトが書くとオブジェクトotudpに書くOSCがあなたのフラッシュ装置を実 行するマシンにIPアドレスを持っているのに反対する衝撃音があとに続いたそれに食べさせられるどんな名前価値の組もOSCオブジェクトに送ります、あな たがjavaゲートウェイに通過した2つのパラメタの1番目。
pd(純粋なデータ)
pdはネイティブにudpコミュニケーションを扱って、'netsend'としかし、'netreceive'オブジェクト、OSCのスイートで、目的はseperateダウンロードです。
pdのOSCオブジェクトをダウンロードしてください。
oliver larkinには、フラッシュとpdの間でどう交信するかの例があります。これは、実際にfloscを使用しませんが、それにもかかわらず、便利です。
超大型衝突型加速器
残念ながら、私は超大型衝突型加速器に関してほとんど何も知りません。遠慮なく超大型衝突型加速器のどんな情報ともfloscと共にそれをどう使用するかを私に送ってください。 ばか[at] transmote[ドット]comで私にメールしてください。
他のもの?
また、遠慮なくあなたがfloscを通してフラッシュとコミュニケートするのに使用したいかなる他の音のソフトウェアのあらゆる情報も私に送ってください。 ばか[at] transmote[ドット]comで私にメールしてください。
ありがとうございます!
..インターネットアプリケーション。
そ れで、あなたはオンラインでflosc装置を実行したがっていて、してください--私も、私はまだ首尾よくこれをする方法を見つけていません。それが絶え ずユーザのブラウザに座るフラッシュ装置からデータをIPの上に受け取るだろうあなたの音のアプリケーションを実行できたサーバを必要とすると想像しま す。
これに関する主な障害はあなたがあなたが絶え間なく音の装置を実行できて、始めに近づく手段を持って、装置を止めるサーバを見つけています。あなたは連続に念のためそれがまだ実行している音の装置をモニターしなければならないでしょう。
別 の選択肢は、自動的にjavaサーバ、フラッシュ装置、および音の装置を開くダウンローダブルなアプリケーションを伴うことです。これは明らか同じくらい おもしろくはありません、ユーザの方への、より多くの作業を必要とするだけではなく、事実上マルチユーザのオンラインアプリケーションの可能性を排除する ので。
いつものように、遠慮なくあなたがこの領域でしたあらゆる実験で私に連絡してください。私はオンラインアプリケーションがある成功を知ることを切望しています! ばか[at] transmote[ドット]comで私にメールしてください。
[リンク]
..必要性を詰めてください。
このセクションはあなたがfloscを実行して、次に、いくつかを実行するために必要とするすべてのものの便利なリストです。
- ben chunのfloscウェブサイト。
- floscフォーラム!それを使用します。
- CNMATのOSC/UDPリソース--リスト非常に大規模なあなたはここで探しているものを見つけることができるべきです。
- サイクリング74年代のウェブサイト最大/msp/ジターのホーム。
- 純粋なデータのウェブサイト。
- 超大型衝突型加速器のウェブサイト。
..floscは働いています。
そして、このセクションは人々がfloscで作成した作品の絶えず拡張しているリストです。全角のを調べてください。
- 簡単なフラッシュ最大floscの例。
- sean rooney'例'セクションまでの巻き物による floscの例。
- contemplace. floscは、 処理がひらめくのとちょうど同じくらい容易に最大/mspと話すのを可能にします。contemplaceは、訪問者との会話に従ってダイナミックにそれ自体を再設計する空間的な個性です。
- 棺。 「ラップトップ音楽演奏と芸術インストールシステム。」
- お気に入りの20世紀有名人を選んでください、そして、部屋で彼らを一緒に下げます。 客間特にすぐ来る、margaret屋根を葺く人、mohandas gandhi、salvador dali、およびvladimir nabokovから、選びます。
- sendOSC()(外向的な)と
- | whaison | Gainer | 23:58 | comments(0) | - | pookmark |
- 2009.12.15 Tuesday
- YUREX(TM) 柳澤大輔 (面白法人カヤック) / 土佐信道 (明和電機) デジタルガジェット
-
平成21年度(第13回)文化庁メディア芸術祭で最終審査会まで進んだ作品のなかから、審査委員会が推薦する各部門の優秀作品の
Kayacのデジタルぉもしろデバイスが
エンターテイメント部門YUREX(TM) 柳澤大輔 (面白法人カヤック) / 土佐信道 (明和電機) デジタルガジェット
なんか安いの
振動センサがはいってるのかしら。
1000円 送料つけて1300 円ぐらいで売ってるます。って
cmrr_xxx先生が ついってたのを見てこうにゅう。
以下 説明
『ビンボーゆすりは脳の集中状態を示すバロメーターであり、ビンボーゆすりがアイデアを創出するクリエイティブビートを生 み出す』という明和電機・土佐信道氏の仮説のもと、そのクリエイティブビード(=ビンボーゆすり)の測定、視覚化、操作を可能にするデジタルデバイスとし て、明和電機と面白法人カヤックが共同で開発したガジェットです。
■ スタンドアローンでの使用
太ももに装着してビンボーゆすりの回数(単位:BBU ※1回=1BBU)をカウントします。本体には永久カウンターが付属するため、“一生分”のビンボーゆすりのログ集積が可能です。
■ PC接続での使用
USBによりPCに接続すると、所有者(呼称:ユスリート)固有のビンボーゆすりのビートをデジタル信号として取り込み分析し、集中状態が最高となったと 仮定されるビートを記録します。そのビートを誘発すべくカウントアップするドーピングモードや女の子が応援してくれる息抜き用のチアモードなどを機能とし て用意し、楽しい“ビンボーゆすりライフ”をサポートします。
■ ネットワーク接続(PC経由)での使用
専用Webサイトでは、世界中のユスリートのプロフィールページを公開。ユスリートの所在地を地図上にプロットしたり、そのランキングを表示します。ネガティブな行為とされる“ビンボーゆすり”をコミュニケーションツールまで昇華することを目指します。 - | whaison | Gainer | 12:34 | comments(0) | - | pookmark |
- 2009.12.11 Friday
- physical x wonderfl - sharing physical computing experience
-
http://physical.wonderfl.net/
- PCの世界からフィジカルコンピューティングへ通常のPCには、キーボード、マウス、ディスプレイといったデバイスが標準的に装備されています。 こうしたプラットフォームがあることで、ウェブ上のさまざまな表現は世界中の人に瞬時に体験してもらうことができます。 一方で、標準入出力デバイスの世界で実現できるインタラクションにはどうしても制限がつきまといます。
- 例えば、画面上のGUIとして表示されたボタンやスライダなどのコントローラは、人間が直接触れて感じることができません。こうした制約を飛び越えた体験を目指すのがフィジカルコンピューティングです。
- | whaison | Gainer | 21:48 | comments(0) | - | pookmark |
- 2009.12.02 Wednesday
- ウノウラボ Unoh Labs: FlashでWiiリモコンのイベントを取得する方法まとめ
-
http://labs.unoh.net/2007/04/flashwii.html試し版のブラウザ上のFlashでは、使えると思っていた「XMLSocket」が使えないという不具合を発見しました。製品版で直っていることを願います。 そんなわけで、今日は、Wiiのインターネットチャンネル上で使える、簡単なチャットを作ったりして研究をしてみました。その成果として、Wiiリモコンを操作する方法を紹介します。WiiリモコンのイベントをJavaScriptで取る Wiiリモコンを操作する方法は、既にいくつか研究がなされていまして、下記のサイトが参考になります。 wii.js(JavaScriptライブラリ)</a> <a href=" http:="" www.wiicade.com="" api.aspx"="">WiiCade api(Flashライブラリ) Using the Wiimote buttons in Flash Wiiまとめ その中で、 は非常に使いやすく、JavaScriptから、以下のように書くだけで、Wiiリモコンのイベントを検出することができます。</p><table border=" 1"="" style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; line-height: 1.5; ">
var wiimote = new Wiimote(); // イベント wiimote.handleA = function() { alert('Aボタンが押されたよ!'); return true; } // コントローラを登録 wii.addController(wiimote);
WiiリモコンのイベントをFlashで...(失敗)
JavaScriptで簡単にキーイベントを取ることができるので、Flashでも簡単にできるだろうと、いつもの要領で、Keyイベントにイベントを登録して、実行してみるのですが、うまくいきません。
それで、WiiCadeのWiiのFlash用ライブラリを使ってみるものの、うまくいきません。実は、これは、WiiCadeにゲームをアップロードして、WiiCadeの中でないと使えないというものなのです!なんと。(2007年4月現在)
FlashでWiiリモコンのキーイベントを取得する方法を調べてみると、下記の手順でJavaScriptと連携してイベントを取るとうまく行くことが解りました。
- (1) JavaScriptで onKeyPress(), onKeyDown(), onKeyUp()などのイベントを取る
- (2) Flashのオブジェクトに設定する
<script type="text/javascript"> function a_press(e) { var keyCode = e.which; alert("press " + keyCode); return false; // ----------- (*1) } </script> <body onKeyPress="return a_press(event)">
ポイントは、(*1)の部分で、ここで false を返さないと、特殊キーを無効にできません。
次に、キーイベントをFlash側に伝える方法ですが、こちらも工夫が必要です。Flash8からは、JavaScriptと相互に通信する ExternalInterface という機能があるのですが、WiiのFlash7では、これが使えません(泣)。
そのため、com.quasimondo.wii.WiiMoteから取得したFlashのコードを見てみると、FlashのStageサイズ変更のイベントを介して、キーイベントを取っています。手順は下記の通りです。
- (1)1ページに2つのFlashを作る。1つは、ゲーム用のFlash(A)1つは、キーイベントを取得する専用(B)。
- (2)JavaScriptでキーイベントを取ったら、キーイベント取得用Flash(B)のオブジェクトの「width」と「height」をキーコードの番号やキーの状態に変更する。
- (3)Stage変更イベントを取ったら、実際のゲーム用のFlashオブジェクトへ、LocalConnectionを使って通知する。
ちょっと複雑ですが、WiiCadeのAPIでもLocalConnectionのコードを見つけましたので、似たような感じで行っているっぽいです。
最後に
WiiでいろいろとFlashを動かして試してみましたが、ちょっと不便な点も分かって来ました。まず、上記のように面倒な手順を踏まないと、キーイベントが取れないこと(マウスは onPress イベントで取れます)。それから、ブラウザ上では、リンクの上にポインタが来ると、ぶるっと震えてクリックできることがわかるのですが、Flashでは、これができません。(裏技で振るわせる方法ないでしょうか?)また、Wiiリモコンのポインタの座標は取れますが、Wiiゲームに必須の傾きや速度のセンサは取得できません。
今後は、これを踏まえて、作る側で工夫して、面白いコンテンツを作っていけたらいいなぁと思います。
※私が現在開発中の、Web開発環境「葵2」でも、Wii上で日本語プログラミングができるようにする予定です。
http://www.bolinfest.com/wii/wii.js--------------------------------------------------------/* LICENSE: This code is in the public domain */ /** * This is a library to handle keypresses by the Wiimote in the Wii Opera browser. * An event handler that can be used in Mozilla Firefox (for testing) * is also provided. * * @author bolinfest@gmail.com (Michael Bolin) */ // TODO(bolinfest): Add support for detecting when multiple buttons // are being held down instead of only when they are clicked /** wii namespace */ var wii = {}; wii.isWiiOperaBrowser = function() { return (navigator.userAgent.toLowerCase().indexOf("nintendo wii") >= 0); } // wii keycodes wii.KEYCODE_MINUS_ = 170; wii.KEYCODE_PLUS_ = 174; wii.KEYCODE_1_ = 172; wii.KEYCODE_2_ = 173; wii.KEYCODE_B_ = 171; wii.KEYCODE_UP_ = 175; wii.KEYCODE_DOWN_ = 176; wii.KEYCODE_RIGHT_ = 177; wii.KEYCODE_LEFT_ = 178; /** @type Array<Controller> */ wii.controllers_ = []; /** * @param {Controller} controller * @return true if the controller is added; false otherwise */ wii.addController = function(controller) { if (!(controller instanceof wii.Controller)) { throw new Error("invalid argument passed to wii.addController"); } var controllers = wii.controllers_; var alreadyAdded = false; for (var i = 0, len = controllers.length; i < len; ++i) { if (controllers[i] === controller) { alreadyAdded = true; break; } } if (!alreadyAdded) { controllers.push(controller); } return !alreadyAdded; } /** * @param {Controller} controller * @return true if the controller is removed; false otherwise */ wii.removeController = function(controller) { if (!(controller instanceof wii.Controller)) { throw new Error("invalid argument passed to wii.addController"); } var controllers = wii.controllers_; var removed = false; for (var i = 0, len = controllers.length; i < len; ++i) { if (controllers[i] === controller) { controllers.splice(i, 1); removed = true; break; } } return removed; } /** * This should be called by the onload() handler of the page to add the * appropriate key and mouse listeners */ wii.setupHandlers = function() { document.onkeypress = wii.handleKeyPress_; document.onclick = wii.handleMouseClick_; } wii.handleKeyPress_ = function(e) { var keyCode = e.which; var controllers = wii.controllers_; var returnValue = true; for (var i = 0, len = controllers.length; i < len; ++i) { var controller = controllers[i]; if (!controller.handleKeyPress(keyCode)) { returnValue = false; } } return returnValue; } wii.handleMouseClick_ = function(e) { if (e.which != 1) { // not the left mouse button return; } var returnValue = true; var controllers = wii.controllers_; for (var i = 0, len = controllers.length; i < len; ++i) { var controller = controllers[i]; if (!controller.handleMouseClick()) { returnValue = false; } } return returnValue; } wii.Controller = function() {}; wii.Controller.prototype.handleMouseClick = function() { return true; }; wii.Controller.prototype.handleKeyPress = function(keyCode) { return true; }; wii.Controller.prototype.handleUp = function() { return true; }; wii.Controller.prototype.handleDown = function() { return true; }; wii.Controller.prototype.handleLeft = function() { return true; }; wii.Controller.prototype.handleRight = function() { return true; }; wii.Controller.prototype.handleMinus = function() { return true; }; wii.Controller.prototype.handlePlus = function() { return true; }; wii.Controller.prototype.handle1 = function() { return true; }; wii.Controller.prototype.handle2 = function() { return true; }; wii.Controller.prototype.handleA = function() { return true; }; wii.Controller.prototype.handleB = function() { return true; }; wii.Wiimote = function() { wii.Controller.call(null); }; wii.Wiimote.prototype = new wii.Controller(); wii.Wiimote.prototype.toString = function() { return "[Wiimote]"; }; wii.Wiimote.prototype.handleMouseClick = function() { return this.handleA(); }; wii.Wiimote.prototype.handleKeyPress = function(keyCode) { switch (keyCode) { case wii.KEYCODE_UP_: this.handleUp(); break; case wii.KEYCODE_DOWN_: this.handleDown(); break; case wii.KEYCODE_LEFT_: this.handleLeft(); break; case wii.KEYCODE_RIGHT_: this.handleRight(); break; case wii.KEYCODE_MINUS_: this.handleMinus(); break; case wii.KEYCODE_PLUS_: this.handlePlus(); break; case wii.KEYCODE_1_: this.handle1(); break; case wii.KEYCODE_2_: this.handle2(); break; case wii.KEYCODE_B_: this.handleB(); break; default: return true; } return false; }; wii.HorizontalController = function() { wii.Controller.call(null); }; wii.HorizontalController.prototype = new wii.Controller(); wii.HorizontalController.prototype.toString = function() { return "[HorizontalController]"; }; wii.HorizontalController.prototype.handleKeyPress = function(keyCode) { switch (keyCode) { case wii.KEYCODE_UP_: this.handleLeft(); break; case wii.KEYCODE_DOWN_: this.handleRight(); break; case wii.KEYCODE_LEFT_: this.handleDown(); break; case wii.KEYCODE_RIGHT_: this.handleUp(); break; case wii.KEYCODE_MINUS_: this.handleMinus(); break; case wii.KEYCODE_PLUS_: this.handlePlus(); break; case wii.KEYCODE_1_: this.handleB(); break; case wii.KEYCODE_2_: this.handleA(); break; default: return true; } return false; }; wii.KeyboardController = function() { wii.Controller.call(null); }; wii.KeyboardController.prototype = new wii.Controller(); wii.KeyboardController.prototype.toString = function() { return "[KeyboardController]"; }; wii.KeyboardController.prototype.handleKeyPress = function(keyCode) { switch (keyCode) { case 105: // I this.handleUp(); break; case 107: // K this.handleDown(); break; case 106: // J this.handleLeft(); break; case 108: // L this.handleRight(); break; case 45: // - this.handleMinus(); break; case 43: // + this.handlePlus(); break; case 49: // 1 this.handle1(); break; case 50: // 2 this.handle2(); break; case 98: // B this.handleB(); break; case 97: // A this.handleA(); break; default: return true; } return false; };
- | whaison | Gainer | 20:37 | comments(0) | - | pookmark |