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);
}
};
ーーーーーーーーーーーーーーーーーーーーー
phpからのname とvol1を受信しています。
その2と3はそのうち。
ではでは。