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はそのうち。
ではでは。

Designing Interactions
Bill Moggridge
Mit Pr (2006/10/30)
売り上げランキング: 9240

関連記事




次の記事

Apr 23, 08
Written by noriko matsumoto | Device , Flash , Max/MSP+Jitter , info
松本です。5月にいろいろワークショップやイベントがあるのでお知らせです。 TokyoMaxUsersGroup#8...

前の記事

Dec 27, 07
Written by noriko matsumoto | Flash , Max+Others
MaxMspとFlashとの連携でターミナルからserverを起動させる必要もないし、 さくっとすてきなのがFlashserverオブジェクトなんですが。...