pyprocessing
Chuckで遊んでみた
朝からChucKで遊ぶ。
編集した結果をリアル気味に反映させたくなったのでperlで書いた(loop.pl)。
use Path::Class;
my $file = $ARGV[0] || die "filename not found";
my $t = file($file)->stat->mtime;
system "chuck", "+", $file;
while(1){
sleep 1;
unless ($t == file($file)->stat->mtime) {
system "chuck", "=", "1", $file;
$t = file($file)->stat->mtime;
}
}
あとはChuckのサンプル(test.pl)
SinOsc s => JCRev r => dac;
.5 => s.gain;
.2 => r.mix;
[ 1, 3, 5, 7 ] @=> int note[];
while( true )
{
Std.mtof(Std.rand2(1,3)*12 + 48 + note[Std.rand2(0,note.cap()-1)] ) => s.freq;
140::ms => now;
}
これで、chuckのほうをサバクラにするために
chuck --loop
で動かしておいて、別の端末から
perl loop.pl test.ck
これで、test.ckをエディタで編集して保存すると反映される。
Arduinoとかで制御すればもっと面白くなりそう。CdSセンサとかで変化するようなのをつくってみてもいいし、ChucKをネットワーク越しに制御できるので音サーバーというのも面白いかもしれませんな。
Visualizing Data chapter 10 (Parsing Data)
10章はデータのパースに関して。11章はjavaとの統合について(こっちは流した)。
- 固定長のデータはsubstring().trim()
- html parserとしてtidyを使う他に組み込みのHTML parserもある
- JSON parserもある
11章を読んでたらソースもそのうち読むかーって気分になったので
svn co svn://processing.org/trunk/processing processing
しといた。
というわけで、読了。続いてBasic Examplesあたりをやっていこうかというところ。
Visualizing Data chapter 9 (Acquiring Data)
Visualizing Data chapter 8 (Networks and Graphs)
8章はprocessingでネットワークを描いてく。とりあえず写経から。

後半はanemoneをEclipseで。apacheのログがcombine形式でないので情報が足りないけど、ネットワークが成長していく様は見ていて楽しいし、飽きない。

例えば創薬プロジェクトをanemoneみたいなのでビジュアライズしてみたいと考えている。先行化合物の類似性とか、薬理活性が変化していく様を直感的に捉えてみたいのだよなぁ。
A Face for Richie Hawtin
Music is Math
これかっこいいですの。
Music Is Math from Glenn Marshall on Vimeo.
Gainerでピンポン玉ディフューザー
とりあえずprocessingでいじる。マウスの位置に応じて色が変化するように。
コードは単純なので色もあんまり出なかった。
import processing.gainer.*;
Gainer gainer;
void setup(){
gainer = new Gainer(this);
}
void draw(){
background(0);
}
void mouseMoved(){
float rx = (float)mouseX / width;
float ry = (float)mouseY / height;
int v0 = int(255*ry);
int v1 = int(255*rx);
gainer.analogOutput(0, v0);
gainer.analogOutput(1, max(v1-v0,0));
gainer.analogOutput(3, max(v0-v1,0));
}
参考
今日のaction-coding
drawCirclesを参考に。
def setup
size 600, 600
end
def draw
colorMode(HSB)
dia = 60
len = width/dia +1
background(255)
smooth()
grid len, len, dia, dia do |x,y|
fill(random(360),150,200,200)
strokeWeight(random(20))
stroke(random(360),150,200,200)
f = random(15)
ellipse(x, y, dia-f, dia-f)
end
end

action-codingを試す
LLで気になっていていたaction-codingなどをやりはじめている。
朝起きたら、Visualizing Dataのようなものこそ、こういうやり方がいいんじゃないかと思ったので、そのままおもむろに枕元にあるmacbookを開いて突然入れ始めた。

jythonだとselfをいちいち書かないといけないのが多少うっとうしいのだが、rubyだとそれがないだけでも書きやすい。あと、セーブするタイミングでグラフィックも更新される、対話っぽい環境がマジで楽しい。
Visualizing Dataのインタラクティブなscatter plotの章もこれでやると、楽しいかもしれんので、後でやり直してみよう。
ちなみに僕のエディタはemacsなので、run.commandを別のターミナルで起動させとかないといけないけど、emacsから起動できるようにしとけばいいかもしんない。



Making Things Talk -Arduinoで作る「会話」するモノたち
ビジュアライジング・データ ―Processingによる情報視覚化手法
Visualizing Data