TNDR-sysp5での実装追加内容

TNDR-Sysでのジェネレート系の内情

(注意)かなり自分用のメモ書きなので意味不明です

●toxi氏のp5のパッチを元に波形で取得させる実装を追加した。これ結構つかえるなとか思った
http://www.toxi.co.uk/p5/segmentsZ/
http://www.toxi.co.uk/p5/segments/

●surfaces library
http://processing.org/discourse/yabb_beta/YaBB.cgi?board=os_libraries_tools;action=display;num=1153384366
で奔出しているライブラリを実装。3Dとかそこらへんの数学的知識がゼロだから結構重宝した。

SoniaV2を利用するにあたって

直で
for ( int h = 0; h < LiveInput.spectrum.length; h++){
line(h*2, height, h*2, height - LiveInput.spectrum[h]/10);
}

みたいなことをすると、lineならまだかわいいが
これが3Dの場合だとすると、ごちゃごちゃしすぎてあまりよろしくない。
ので、ここはループ分の平均化を取って出力するほうがいい
具体的にはたとえば「HJIGHT」「MIDDLE」「LOW」の三分割の場合
int l,m,n = 0;
for ( int h = 0; h < 85; h++){//LiveInput.spectrum.lengthは256なので三分割
l += LiveInput.spectrum[h]/10;
}
l = l/85;//平均化
for ( int h = 85; h < 170; h++){//LiveInput.spectrum.lengthは256なので三分割
m += LiveInput.spectrum[h]/10;
}
m = m/85;//平均化
for ( int h = 85; h < 170; h++){//LiveInput.spectrum.lengthは256なので三分割
n += LiveInput.spectrum[h]/10;
}
n = n/85;//平均化
のような形にすればいいのかな?

●クライアントとの直接通信
通信に対してはOSCを利用する
void oscEvent(OscMessage theOscMessage) {
・・・
if(theOscMessage.checkAddrPattern("/test")==true) {
iChatID = theOscMessage.get(0).intValue();
firstValue = theOscMessage.get(1).intValue();
strName = theOscMessage.get(2).stringValue();
secondValue = theOscMessage.get(3).floatValue();
println("int value[freq]="+firstValue + " float["+strName+"]="+secondValue);
}
 ・・・
}
具体的な実装はOSCから取得した数値とStringの文字列で「タイポグラフィー」を表示
それを拡大,縮小,回転,Share。まぁ基本的なアフィン変換などを基本できる。
色とかもint値をそのまま渡す感じ。



●Grabity
http://www.bit-101.com/p5/



●実装上どうしてもマウスを使わざるを得ない状況なので仕方なしに「見えないマウス」実装を追加
http://www.hcn.zaq.ne.jp/no-ji/javamemo/java_awt_Cursor.html
とはいえ、ぎりぎりウィンドウの端っこにマウスが表示されてしまうので+10ptぐらいの
マージを与えたら可能かと。


    • 導入予定のライブラリ

・物理ライブラリ
http://www.cs.princeton.edu/~traer/physics/
http://www.tom-carden.co.uk/category/processing/
↑の物理ライブラリなどをを導入すればもうちょっと色々できるかも

・proMIDI
http://www.texone.org/promidi_1/
p5とMIDIの連携
結局前回のイベントではマウスやらキーボードを利用しての奴だったので汚かった

  • メモ

http://www.javainthebox.net/laboratory/JDK1.4/Graphics/ImageIO/ImageIO.html