SuperColliderでセル・オートマトン (Cellular automaton)
Posted in complex system on 1月 31st, 2010 by Norihisa Nagano – Be the first to comment前回に引き続き、SuperColliderでやってみました。
asBinaryStringが使えるので、結果表示付きにできました。
(
r=90;g=1<<16;n=32;
r.do{
m = 0;
for(0,n,
{|i|
b = 0;
b = g >> (i - 1) & 1 | b;
b = g >> (i + 1) & 1 << 2 | b;
b = g >> i & 1 << 1 | b;
m = r >> b & 1 << i | m;
}
);
(g=m).asBinaryString(n).postln
}
)
00000000000000101000000000000000 00000000000001000100000000000000 00000000000010101010000000000000 00000000000100000001000000000000 00000000001010000010100000000000 00000000010001000100010000000000 00000000101010101010101000000000 00000001000000000000000100000000 00000010100000000000001010000000 00000100010000000000010001000000 00001010101000000000101010100000 00010000000100000001000000010000 00101000001010000010100000101000 01000100010001000100010001000100 10101010101010101010101010101010 00000000000000000000000000000001 10000000000000000000000000000010 01000000000000000000000000000101 00100000000000000000000000001000 01010000000000000000000000010100 10001000000000000000000000100010 01010100000000000000000001010101 00000010000000000000000010000000 00000101000000000000000101000000 00001000100000000000001000100000 00010101010000000000010101010000 00100000001000000000100000001000 01010000010100000001010000010100 10001000100010000010001000100010 01010101010101000101010101010101 00000000000000101000000000000000 00000000000001000100000000000000 00000000000010101010000000000000 00000000000100000001000000000000 00000000001010000010100000000000 00000000010001000100010000000000 00000000101010101010101000000000 00000001000000000000000100000000 00000010100000000000001010000000 00000100010000000000010001000000 00001010101000000000101010100000 00010000000100000001000000010000 00101000001010000010100000101000 01000100010001000100010001000100 10101010101010101010101010101010
133文字版
r=90;g=1<<16;n=32;45.do{m=0;
for(0,n,{|i|b=0;m=r>>(g>>i&1<<1|(g>>(i+1)&1<<2)
|(g>>(i-1)&1|b))&1<<i|m;});(g=m).asBinaryString(n).postln}
ちなみに、SuperColliderのコード140文字でpieceを作る、というのが流行っていたようです。
sc140
言語仕様から解説しているサイトを見かけないし
勘違いされているのじゃないかと心配になりますが
SuperColliderは、ちゃんとしたプログラミング言語です。
(たぶん)マルチバイトが処理できなかったりしますが
Ruby、Pythonなんかに近い、オブジェクト指向でインタプリタ方式の言語です。
なので、↑みたいなことは当然できます。
.arとか.krとかSynthDefからやるのもいいけど、ちゃんと学ぶなら
言語としての理解から始めないといかんのではないかな、と思います。
以前書いた、音がまったく鳴らないSuperColliderの言語仕様解説
022. Objective-CプログラマーのためのSC言語入門(1) ざっくり言語仕様
023. Objective-CプログラマーのためのSC言語入門(2) またりさまClassを実装

















