Page:  1   2   3  ALL
December 27, 2007

MaxとFlashの連携part2

Written by noriko matsumoto | Flash , Max+Others

MaxMspとflashの連携part2です。
いろいろとほかもあるかなというところで今回の方法はweb周りで解決

その1、phpでの連携

flash→loadvarsでphpへpost→同じphpでpostされたデーターをそのままudp→
MaxMspはOpenSoundControllで受ける。
サーバーのphpも特にphp.iniをいじったりといった設定はないのでレンサバでも一応可能
ただし、phpをレンサバにおいた場合、ポートの問題はあり。
(MaxMsp→php→の場合はphp.iniを一部変更有り)
MaxMspとphpが同じサーバーにあればベスト。

その2 xmlでの連携

flash→loadvarsでphpへpost→phpでxmlを吐き出し→MaxMspはxmlを一定時間でreadする
リロードなのでどうしてもちょっと遅くなるでしょう。
MaxMsp→flashの場合にいいかと。flash側はインターバルで一定時間xmlを読み込みしデータの変化を見る。
あまり、ポートなどに左右されない。
別にxmlじゃなくてもテキストファイルの上書きをするというのでもあり。

その3、db経由で連携

flash→loadvarsでphpへpost→同じphpでpostされたデーターをmysqlへ格納→MaxMspはmysqlを一定時間で監視
送る変数の数が多いとこれがいいとおもいます。
MaxMsp側はmysqlオブジェクトとかを使用、php側にsql文を仕込む
この場合はphpとMaxパッチが同じipになくてもよい。

mysqlの使用するポートが手元からレンサバまで行けるかはそれぞれですが
mysqlが入っているサーバーであれば、レンサバでも可能。

phpにポストされた時点でその1と組み合わせて、簡単な数値(1とか)だけmaxに渡す→それをうけてMaxMsp側はDBを見に行く
というパターンが考えられます。

その1ですが、
http://www.galen.ca/research/streams.phpを参考にすればmacをサーバーにしてる人はサンプルについてくるphpで稼働しますね。(10.4&php5)
*最近、作業環境がwinなのですがサンプルについてくるのphpではwindows2003server+php5+apache2ではなにも表示されませでした。書き換え場所がいくつかあります。

flashからのpostを含めてflash→php→maxmspのためのphp
はこんな感じ
 サーバー環境 windows2003+php5+Apach2+MaxMsp4.6

ーーーーーーーーーーーーーーーーーーーーー
//flashからポストを受けとる。
$toMax=$_POST["toMax1"];
$toMaxMsptext="maxstartflg_0";
//udpポートへ送信
//IPの設定 MaxMspが稼働しているマシンのIP
$ip = "localhost";
//ポートの設定
$port = 5500;
//ソケットの作成
$fp = fsockopen("udp://$ip", $port);
//配列に格納
$header = array("name" =>$toMax, "vol1" =>$toMaxMsptext);
//配列の要素分繰り返す
foreach($header as $key => $value) {
$NewString = "$key $value";
print "$NewString";
if ($value){
$messege = strlen($NewString);
$r = 4 - $messege % 4;
for($i = 0; $i < $r; $i++){
$NewString = "$NewString?0";
}
fwrite($fp, "$NewString");
}
// ソケットをクローズ
fclose($fp);
//メッセージの設定
$fromphp_mess="ok sent to max";
//flash側へメッセージを返す
print "&val=true";
print "&fromphp=".$fromphp_mess;
ーーーーーーーーーーーーーーーーーーーーー

flash側

SendData = new LoadVars();
SendData.toMax1 = "00000";
SendData.sendAndLoad("@@@@.php",SendData);

SendData.onLoad = function() {
if(this.val){
trace(this.fromphp);
}
};

ーーーーーーーーーーーーーーーーーーーーー

max側
udp.png

phpからのname とvol1を受信しています。
その2と3はそのうち。
ではでは。

続きがあります "MaxとFlashの連携part2"

XMLsocet AS3:Flashserver fun!

Written by noriko matsumoto | Flash , Max+Others

MaxMspとFlashとの連携でターミナルからserverを起動させる必要もないし、
さくっとすてきなのがFlashserverオブジェクトなんですが。
as3のが欲しかったので、Flashserverで活用できるXMLSocket classをポスト。
sendはpublicなのでほかからよんでみると楽しいかも。
*下記はloadの時に2008をMaxMsp側におくる所がはいっています。

FlashserverFun.as
package {

import flash.display.Sprite;
import flash.events.*;

import flash.net.XMLSocket;

public class FlashserverFun extends Sprite {
//ポート番号 MaxMsp flashserverオブジェクトの動いているマシンIP
private var hostName:String = "localhost";
//ポートは flashserverオブジェクトと合わせる
private var port:uint = 5000;

//ソケットを作成
private var socket:XMLSocket;
//送りたい数値
private var val:String="2008";
//マックスで受け取る変数名を指定
private var header:String="val";

//okurude = symbol + " " + value + ";"

public function FlashserverFun() {

socket = new XMLSocket();
configureListeners(socket);
socket.connect(hostName, port);
//MaxMspへの送信メッセージ ; は必ず必要

var sendheader=header+" "+val+";"
//trace(sendheader);
send(sendheader);


}

public function send(data:Object):void {
//センド命令関数

trace("send "+data);
socket.send(data);

}

private function configureListeners(dispatcher:IEventDispatcher):void {

dispatcher.addEventListener(Event.CLOSE, closeHandler);
dispatcher.addEventListener(Event.CONNECT, connectHandler);
dispatcher.addEventListener(DataEvent.DATA, dataHandler);
dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler);
dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);

}

private function closeHandler(event:Event):void {

trace("closed: ");

}

private function connectHandler(event:Event):void {
//つながったらこれ
trace("connectOK: ");


}

private function dataHandler(event:DataEvent):void {
trace("data: ");
}

private function ioErrorHandler(event:IOErrorEvent):void {
trace("ioError: ");
}

private function progressHandler(event:ProgressEvent):void {
trace("progress:");
}

private function securityErrorHandler(event:SecurityErrorEvent):void {

trace("securityError: ");
}
}
}

-----------

This is a christmas present for nocchi!
Cheers!

続きがあります "XMLsocet AS3:Flashserver fun!"
July 03, 2007

AS3用のfloscクラス

Written by Satoshi HORII | Flash , Max+Others

FLASHでOSC(OpenSoundControl)を可能にするfloscのAS3用のクラスが作成されてます。

Flosc AS3 Classes

実際に使ってみた感じとしては、

66、67行目
dispatchEvent(new OSCConnectionEvent(OSCConnectionEvent.ON_CONNECT,null));
mConnected = true;
を、
mConnected = true;
dispatchEvent(new OSCConnectionEvent(OSCConnectionEvent.ON_CONNECT,null));
逆に。

110行目あたりの、
//string
if (type=="s") {
data.push(child.attributes.VALUE);
}
の後に、
//int
if (type=="i") {
data.push(child.attributes.VALUE);
}

を挿入すると、よいかと思った。

November 15, 2006

GAINERワークショップ@カフェ・パルル

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

GAINERワークショップの情報を転載します。ご興味のある方は、是非。
  申し込み先着順らしいので、お早めに!!  11月24日までです。


「GAINERワークショップ @カフェ・パルル」
  フィジカル・コンピューティングへの招待

 マウス、キーボード、ディスプレイといった、標準的な PCの入出力デバイスでは完結しない作品を作ろうとすると、「どこからはじめたらよいのだろう?」と迷ってしまうことがあるかもしれません。例えば、 LEDを1個点灯させてみようというだけでも、いざやろうとするとなかなか大変なものです。また光や温度、接触などを感知するさまざまなセンサー類を制作に応用しようとする場合も、どうやればPCとの間で橋渡しが出来るのか、難しそうであきらめてはいませんか?
 IAMAS のPDP(プログラマブル・デバイス・プロジェクト)のメンバーが中心となって開発した「GAINER」は、この要望にこたえてくれる、安価で多機能なUSB対応 I/Oモジュールです。
 このワークショップでは、電子回路の簡単な説明に始まり、「GAINER」キットを組み立て、PC に「GAINER」と何種類かの入出力デバイスを接続し、実際に動かしてみるところまでを実習します。使用するソフトウェアはCycling '74社のMax/MSPです。
 今回は開発者の小林茂氏をお招きして名古屋で初めて行う一般ワークショップとなります。この機会にPCの一歩外側に踏み出して、みなさんの制作の幅をひろげてみませんか?

【日時】12月2日(土)/3日(日) 2日連続。両日とも13:00 - 18:00。
※ワークショップは2日間連続で受講して下さい。1日だけの参加はできません。
【会場】カフェ・パルル(旧カノーヴァン)2F  名古屋市中区新栄2-2-19
http://www.parlwr.net/cat6123459/index.html
【講師】小林茂(IAMAS)
【定員】10名(申し込み先着順)
【参加費】12,000円
※参加費にはGAINERキット本体および実習用パーツ(ブレッドボード、LED、センサーなど)が含まれます。
※参加費はワークショップ初日(12月2日)に全額現金でお支払いいただきます。2日目を欠席された場合でも返金はできませんのであらかじめご了承下さい。

【参加条件】
※参加申し込みが5名に満たない場合、開催しない場合があります。
※2日間連続で参加して下さい。1日だけの参加はできません。
※ワークショップには以下のものをご持参下さい
 ●コンピュータ(OSはMac OS X、Windows XP。事前にMax/MSP 4.5以降をインストールして下さい。)
 Max/MSPをお持ちでない方は以下のサイトから30日間無償トライアル版がダウンロードできます。
  http://www.cycling74.com/downloads/maxmsp
 ●ニッパ、ハンダごて、こて台(数セットは用意いたしますが、お持ちの場合には持参して下さい)

【申し込み方法】以下の内容を申し込み期限(11/24)までに電子メールで送信して下さい
<件名> GAINERワークショップ参加申し込み
<宛先> sakonda[at]nifty.com
<本文>
ご氏名:
ご住所:
電話番号:
ご持参いただくコンピュータ(機種・OS・OSバージョン):
Max/MSP使用経験の有・無:
ニッパ、ハンダごて、こて台持参の有・無:

【申し込み期限】2006年11月24日(金)

【参考情報】
「GAINER」とは?
http://gainer.cc/wiki/index.php?title=What_is_GAINER%3F/ja
今回のワークショップの参考資料
http://gainer.cc/wiki/index.php?title=Tutorial/Basic/Common/00/ja
http://gainer.cc/wiki/index.php?title=Tutorial/Basic/Common/01/ja
http://gainer.cc/wiki/index.php?title=Tutorial/Basic/Common/02/ja
http://gainer.cc/wiki/index.php?title=Tutorial/Basic/MaxMSP/01/ja
http://gainer.cc/wiki/index.php?title=Tutorial/Basic/MaxMSP/02/ja
http://gainer.cc/wiki/index.php?title=Tutorial/Basic/MaxMSP/03/ja
過去の展示
http://gainer.cc/wiki/index.php?title=Exhibitions/ICC
過去のワークショプの例
http://www.iamas.ac.jp/~mayfair/archives/2006/03/iamas.html
http://gainer.cc/wiki/index.php?title=Workshops/PCW2006

【講師プロフィール】
小林茂。国際情報科学芸術アカデミー講師(DSPコース担当)。1993年より電子楽器メーカーに技術者として勤務した後、2004年7月より IAMASでフィジカル・コンピューティング等のレクチャーを担当。主な興味は電子楽器を含むユーザー・インタフェース。最近の主な研究は今回のワークショップでも使用する『GAINER』。

【問い合わせ先】
佐近田展康 sakonda[at]nifty.com

企画:佐近田展康(名古屋学芸大学)
協力:IAMAS、名古屋学芸大学

続きがあります "GAINERワークショップ@カフェ・パルル"
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」でセンサーを使う"
March 04, 2006

Flash+Max/MSP:Flashserver

Written by noriko matsumoto | Flash , Max+Others

Flash+Maxについて、以前のワークショップのメモ程度にしか書いていなかったので久々にflashserverオブジェクトについてまとめてみました。

flashserverとはMaxパッチとFlashコンテンツ(swf)間でXMLソケット通信を行う
オブジェクトで、数値やメッセージをFlash←→Max間で双方向のやり取りをすることができます。
Flash +Maxの方法としては、FCSを使う。又は、PHPを使うとかいろいろありますが、遠隔地のパソコンを動かすのではなく、ちょっと隣のMacのMaxパッチを手元のマシンのswfで動かすとかいう場合は、特にサーバーたてる必要ないためflashserverがおすすめです。
必要なもの
ーーーーーーーーーーーーーーーーーーーー
flashserver オブジェクト 作者Olaf Matthesさん
http://www.nullmedium.de/dev/flashserver/
Flash5以上
 マクロメディアには30日体験版のFlash8がおいてありますのでひとまずこれで(機能はかわりません)
Maxパッチを走らせるマシンのIPを知る
 今回はネットワーク環境設定でMaxを動かす側を10.0.0.1と手入力しました。
  MaxとFlashを同じマシンで動かすのであればIPアドレスは必要なしです。
 それ以外は、LANでマシンとマシンを直接つないでしまうかAirMacカード搭載であれば
 ネットワークを作成でAirのローカルネットワークを作るなどで対応できます。
Max/MSP
ーーーーーーーーーーーーーーーーーーーー
ダウンロードするバーションですが,1.0が安定しています。原因は調べてないのですが
1.1で動かない場合がありました。

ダウンロードしたら、エクスターナルトがヘルプパッチがありますのでさくさくと、Maxのエクスターナルフォルダとヘルプパッチフォルダにそれぞれ入れてしまいましょう。

サンプルのFlashファイルもあるのですが、かなり親切にたくさんの機能を作ってくれている
ので逆に複雑かも知れません。ので今回はFlashからMaxにメッセージを送る機能のみの基本的なアクションスクリプトで。

flashserver.jpg

[このパッチにFlashからメッセージを送る方法]


Flashserver以下の数字は、Flashとの連携で使用するポート番号です。
(必ずFlashに書くアクションスクリプトで設定するポートとあわせること)
FlashからMaxへメッセージを送るのに必要なアクションスクリプトをFlashに書いていきます。
事前準備:ステージに"bt"というボタンインスタンスを配置しインスタンス名を"bt"にする。
(Flashのはじめのフレームに記述するフレームアクション)
---------------------------------------------------------------------------------
    stop();
      server = "10.0.0.1";
    port = 31337;
    flashtomax = new XMLSocket();
    flashtomax.connect(server, port);
    flashtomax.onConnect = onPDconnect;
    function okuru (symbol, value) {
    okurude = symbol + " " + value + ";"
    flashtomax.send(okurude);
    }
    bt.onPress=function()
    {okuru("vol",2);}

---------------------------------------------------------------------------------
これでMaxパッチを先に開いておいてFlashをプレビュー。でつながります。
swfの"bt"インスタンスをクリックするとMaxウィンドウに2が出ると思います。

[アクションスクリプトの解説]


    server = "10.0.0.1";
    //通信したいMaxの動いているマシンのIP;MaxとFlashが同じマシンで動かす場合は      localhostです
    port = 31337;
    //ポート 番号はかえても問題ないですが既にそのポートを別のアプリケーションが使用している場合もあります。ちなみに255番はiChatが使用してます。
    //そしてこれはMaxパッチのflashserverのポート指定と必ず同じにしてください。
    flashtomax = new XMLSocket();
    //xmlソケットを作る。ここではxmlソケット名「flashtomax 」としました。
    flashtomax.connect(server, port);
    //通信したいマシンとつなげるための命令connectです。
    xmlソケット名.connect(サーバーのIPアドレス,ポート)でxmlソケット通信を開始します。
    //数値やメッセージを送る関数 関数名"okuru"にしました。
    function okuru (value) {
    okurude = value + ";"
    //送るメッセージを作る
    flashtomax.send(okurude);
    //xmlソケットにokurudeを流す命令
    }
    //事前準備:デスクトップにbtというボタンインスタンスを配置しインスタンス名をbtにする。
    //btが押されたときの命令
    bt.onPress=function()
    { okuru(2);
    //関数okuruにvalue =2を引き渡す&okuruを実行
    /*この場合okurudeで2;というメッセージに処理され、そのメッセージがflashtomaxというxmlソケットにのってMaxパッチに引き渡されます。Max上では2のみになってprintされます。
    value + ";"の";"は送るときどうしても必要なようです。ないと送れませんでした。*/
    }

------------------------------------------------------------------------------------------------------------
Flash側がMaxパッチ動いているマシンのIPの指定、送るべきポートの指定、xmlソケットの生成など設定を行いMax側はその指定されたポートをあけて待つだけという流れでFlashから受け取ったメッセージはFlashserverの第一アウトレットから出力されます。
ただしこのFlashserverパッチの起動時の注意ですが
Flashswfで先にxmlソケットを開いた状態から、同じポートのMaxパッチを立ち上げるとポートがぶつかりうまく作動しません。
MaxのprintメッセージにMac Osx errorと出ます。
(Flashの1フレーム目でnew XMLSocket();命令を書いて、loadの状態でxmlをつないでいる場合によく出ます。)
この場合は一度Maxを完全に終了し、swfも落として、Maxから立ち上げるとerrorは解除されます。
Flashのボタンなどにnew XMLSocket()命令をつけている場合は問題は出ないです。

また最近のswfはセキュリティー設定がありますので、上記のスクリプトでswfのみ立ち上げると「潜在的に危険な動作〜」とのメッセージがでます。
http://www.macromedia.com/go/settmgr_locsecy_ja_author
でセキュリティのセッティングを行う必要があります。

また1つのFlashserverオブジェクトをFlashコンテンツの2つで使いたい場合は、片方が既にxmlソケットを結んでいるためそれを解除しないと2つ目のFlashコンテンツは通信ができません。
その場合、必要な動作が終了した場合に次のフレームに飛ばしxmlソケットのクローズド命令xmlソケット名.close();をつけてるなどで対応できます。
(そのかわり、動作前に毎回xmlソケットを通信し直す必要が出てしまうのですが)

基本的にFlashは外のドメインのxmlを読み込まないため、FlashserverコンテンツでswfをWebサーバーにおいて使用や外部同士のネットワークでの使用(自宅のFlashから、別の場所のMaxパッチを動かすとか)はあまりおすすめできませんでした。

という感じでFlashserver
Flash単体ではできない部分が多いのでローカルのネットワークの中では
(HDの画像をアップするとか、同時発音100音を鳴らすとか)い
ろいろ便利ですし、Flashのインターフェースの滑らかさも取り入れられて、楽しいですね。

検証はMacOs10.4 Flash8 Max/MSP 4.5です。
Olaf Matthesさんに感謝。

続きがあります "Flash+Max/MSP:Flashserver"
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バイトづつに変換して送ることで解決します。変換時の文字コードがお互いに違うと、化けるので、文字コードの変換も必要になります。

December 03, 2005

Applescript+Automator+Max

Written by noriko matsumoto | Max+Others , Max/MSP+Jitter

『んー、この作業を自動化したい!』とか一日に一回データーをコピーしてほしい、削除したーいなど
が出てくることがありますが、これはMacを使っていると、Applescriptを書くことで作業を簡単にすることができます。

またMaxではTaptools1.5を使うことで、MaxからApplescriptを実行することができ
MaxとMac純正のソフトウェア間の自動連携が可能になります。

しかし、Applescriptは日本語での紹介本なども少なくまた、アプリケーションに対する命令も各アプリケーションによって命令のアトリビュートが違うなどの、取っ付きにくい部分があるかなとおもいます。。。毎回動作を作る、長ーいスクリプトをかくのもなあ〜という感じで。

そこで最近つかっている、短いApplescriptを書いて、MaxからMacの別のアプリやシステムを
動作させる方法を紹介。
indextop20050412.jpg

10.4に表示ついているAutomatorで一連の実行したい内容をつくり、アプリ化します。
それを直接、Maxから呼び出せればいいのですが、
Automatorで書き出したアプリはスクリプト形式ではなく、Maxからは実行できないので、Automatorで作ったアプリを実行するだけの、Applescriptを書きます。

そしてそのApplescriptファイルのみMaxに読み込み実行するパッチを書きます。
それを実行すると自動的に、Automatorのアプリが動き、動作するという方法です
使うオブジェクトはTaptoolsのtap.applescriptです。

tap.applescriptに時間をきめてbangを送るプログラムをつけると、Automatorだけではなかなか
一定の時間による繰り返しはできないので、便利になります。
例〜
Automaterで今日作成されたファイルを削除するワーク
Automaterくんはワークフォローをくむのが簡単ですね〜。
iTunesやSafariにも命令が充実してて、iPod関係はかなり気になりますね。
その後保存;アプリケーション形式で。
aoute2.jpg
Applescriptで書くスクリプト:上記で保存した.appをよびだす。



tell application "@@@.app"
activate
end tell


a.jpg
スクリプトファイルで保存

そのスクリプトファイルをMaxのtap.applescriptで読み出す。
aas.jpg
23時になったら削除!

確かにいろんな方法で上記のようなことができますが、長々とプログラムを書くより、
Automaterを使うのが一番今の所楽!な気がします。
applescricptを使わなくてもAutomaterで書き出したunix実行ファイルをMaxからたたくのもあるかな?
では。
Applescript +Automater+Maxでした。
MSPで曲をユーザーにつくってもらって、自動で一つのiPodに転送したり、夢がひろがりますね、

September 14, 2005

実験:phidgets on Max

手元にphidgetsが戻ったので、Maxでの動作チェック。

続きがあります "実験:phidgets on Max"
July 22, 2005

Max/Director/Flashとの連携

Written by noriko matsumoto | Flash , Max+Others , Max/MSP+Jitter

OSC(ネットワークのプロトコル)を用いて通信するもの
http://www.cnmat.berkeley.edu/OpenSoundControl/

>DirectorのOSC通信用のエクストラ
http://www.mat.ucsb.edu/%7Eg.kling/OSC/oscar.html
>Flash受信用OSC変換Javaサーバー(flosc)
http://www.benchun.net/flosc/
>MaxのOSCのエクスターナル
"udp"オブジェクト
http://www.cnmat.berkeley.edu/OpenSoundControl/Max/
>FlashとMax/MSP
"flashserver"エクスターナルオブジェクト
http://www.akustische-kunst.org/

あとはxmlを用いて数値をお互いに読み込む方法や
シリアルでの通信などができます。
Director内にFlashのSWFファイルを読み込んで、Maxと通信する方法などがあります。

Page:  1   2   3  ALL