土曜日, 3月 31, 2007

circle1

pointメソッドで円を描く。
processingにはellipse(x,y,width,height)で円を描くメソッドが存在するが、点線の円が描けない。

radians(angle)で度数法から弧度法に変換。その値をxはcosメソッド、yはsinメソッドに渡す。iの値を1ずつ増やす(つまり1度ずつ増やしていく)ことで点が集まり円になる。

size(200, 200);
smooth();
for(int i=0; i<360; i++) {
point(cos(radians(i))*50 + width/2,
sin(radians(i))*50 + height/2);
}

変数などを利用して円を描く構造をよりわかりやすくしたもの。
for文の中のupdate(繰り返しの度に評価される式)の値を変えること(今回は5ずつ増やしている)で点線を実現。

size(200, 200);
int x_offset = width/2;
int y_offset = height/2;
int radius = 50;
smooth();
for(int i=0; i<360; i+=5) {
point(cos(radians(i))*radius + x_offset,
sin(radians(i))*radius + y_offset);
}

木曜日, 3月 29, 2007

max and applescript



赤松先生の記事を読んでもしやと思ってやってみた、mxjでapplescript。前にiTunesを制御してたので、unixからapplescriptを呼び出すosascriptが動くことはわかってた。単純にStringを引数にしたメソッドを作って、Processに渡してるだけ。スクリプトとかプログラムを日常的に使う感覚がようやくわかったきた。書き捨てってやつ。ちょっとした頭の体操。メソッドの名前とか迷うな...。max側で使う際に良さげな感じにしました。MaxとAppleSCriptでmasc。興味ある方はmxj quickieとかでコンパイルして試してみてください。

[source code]

日曜日, 3月 25, 2007

code composition

プログラミングに興味を持った頃から効率的なコーディングというよりは言語としての面白さに惹かれてきたような気がしている。修士論文もあることだし、ちょっと最近考えている事をとっかかりにしてcode compositionというカテゴリーで主にprocessing(p5)のコードによるスケッチをしていこうと思う。

まずきっかけとなるのはcasey readsの
{software}structures
sol lewittというアーティストが紹介されてるんだけど、彼は指示だけを与えて、実際の絵は製図家に描かせていた。指示は時として曖昧で、「それほど長くない線、まっすぐでなく、互いに触れ合わない、4つの色をランダムに使って描き、一定に散らばって、最大の濃さで壁の表面全体を覆う」とかそんな感じ。訳あってんのかな。

つまりは実装の方法が人によって異なるということ。絵にしても音にしても、効率的なコーディング(って何だと言われると厳しいが)と実際の出力の結果は必ずしも一致しないということから、機械に任せる部分と自分で判断する部分の境界を探ろうと思っている。codeによる計算結果をどうcompositionするか、というところ。ここには結構難しい問題があって、アルゴリズムを用いて作り出されたものを作家が恣意的に選んで並べ替えるとなると、アルゴリズムを使っている意味がない、とか旧来の手法と何が違うのか、という議論になる。ただこれは三輪先生の方法主義や渋谷さんの第三項音楽みたいに手法や新奇性、独自性にフォーカスした時の話であって、僕がやりたいのはそれをデザインとして機能させること。

永原先生の授業でコンピュータを使ったデッサンというテーマのワークショップをしたことがあって、アスキーアートで写真みたいな絵を描くだとか、何種類かのルールに基づいて絵をプロットするjava appletで絵を描くとかいうものがあった。processingなどの簡単な言語が使えるようになった今は、そのルール自体を自分で考えるべきだと思う。バウハウスがデザインを誰でも「使える」ようにしたように、code compositionを「使える」ように。design by numbersがかなり理想に近い。

で、このcode compositionという言葉と概念は久保田先生の「コード・コンポジション入門」というテキストに非常に影響を受けている。supercollider3を使い、素材として点(click)・線(sine wave)・面(white noise)を用いた作曲法で、現在更新が止まっているのが残念だが、多摩美のSSAW05にも一部その考えが紹介されているので参照されたい。SSAWは他にも興味深い話題が多数扱われているので要チェック。日本語だし。

あとはブルーノ・ムナーリの「デザインとヴィジュアル・コミュニケーション」という本を読んでいて思ったことで、単に物理現象や視覚的な美しさ、面白さを追求するだけでなく、最終的に意思や情報の伝達にどう活かすのかということを考えたい。

他にもitpのnature of codeとか。

ちょっとずれるけどホワイの(感動的)Rubyガイドとか。とにかくプログラミング言語が「言語である」というところに何かひっかかるものを感じているのかもしれない。

まだまだ漠然としていてまとまっていないし、今言っていることと全然違うようになる気もするけど、書き進めていくうちに何かが見えてくることを願って...。

月曜日, 3月 19, 2007

altitude

ALTITUDE – Contemporary Swiss Graphic Design
スイスのデザインブック。印刷とかwebとかのジャンルではなくGoing PublicとかExperimental Systemsとかテーマに分けて紹介してある。個人的に興味深かったのはExperimental Systemsなんだけど、Rafael KochとかJürg Lehniとかが評価されてるのは、それ自体では人の興味をひかないもの(機械の廃材とかスプレー缶、ホワイトボードなど)にテクノロジーを加えること、またはテクノロジーを通して表現することで面白い、魅力的なものに変化させてしまうところだということが分かった。他にもデータや情報の視覚化のヒントが詰まっている。あ、こんなことやっていいんだ、っていう。単にスタイリッシュなだけじゃなくてちゃんと背景や思想がありつつ、理屈抜きに見てもかっこいい、ってのが最高にかっこいい。

卓球のラリーの軌跡をグラフィックにしてたやつも面白かったな。pathとかpixelの濃淡で表したりとか。新聞で暴力的な話題を扱っている記事を赤く塗ったものも分かり易くメッセージ性を感じる。

infomation aestheticsってサイトがすげー好きなんだけど、そういう感じ。

jamesのdesign workshopでも日常的にあるものから色やグリッドを見つけて作品にするって課題をしたけど、当時はよくわかってなかったな。豆腐を切って、重みでできたずれをグリッドに使った人がいたんだけど、例えばそのグリッドで豆腐の本を作れば、たとえ文字組が変だったり、一般的なデザインでは「やってはいけないこと」だったりしてもそれ以外の大切なフィーリングが伝わることもある。ということ。it is messy, but works.

月曜日, 3月 12, 2007

scriptographer

Hector:などでおなじみJürg Lehni(ヨーグ・レーニ)が公開してるillustratorのプラグイン。javascriptで書けるってのに、なんでもっと情報がないんだろ。学校とかでも教えてくれないかな。存在は知ってたものの、openstudioで初めて使ってみて、その絶大な効果を思い知らされました。


僕の環境だと古いバージョン(0.5)でしか使えなかった(新しいバージョンだと起動できない)んだけど、見よう見まねでコードを書いて作ってみた。simple.jsをちょっと書き換えただけ。誰でもできるし、Math.sin()とかにどんな値が渡されてるかとか全然気にしてない...。もうちょっとちゃんとドキュメント読んで研究します。

Scriptographer.com

適当なテキストファイルに下のソースコードをコピー&ペーストして拡張子を.jsにして保存してtoolsフォルダに入れて使ってみて下さい。

art.pointsToCurves(tolerance, thresh, 10.0, 10.0);
の行頭に//つけてコメントアウトしたりするとカチッとした線になったり。

function init() {
size = 50;
tolerance = 25;
thresh = 10;
}

function options() {
values = prompt("Radius:",
{type: "number", value: size,
title: "size", width: 50},
{type: "number", value: tolerance,
title: "tolerance", width: 50},
{type: "number", value: thresh,
title: "thresh", width: 50}
);
if (values != null) {
size = values[0];
tolerance = values[1];
thresh = values[2];
}
}

function mouseDown(event) {
art = new Art("path");
}

function mouseUp(event) {
art.pointsToCurves(tolerance, thresh, 10.0, 10.0);
}

function mouseDrag(event) {
var point = event.point;
art.segments.push(point.add(size *
(Math.cos(point.x)), size * Math.sin(point.y)));
}

土曜日, 3月 10, 2007

gainer with python

pythonでgainerを制御してみる。
シリアル通信を行うにはPySerialが必要なので、ダウンロード

ダウンロードしたらterminalからpyserial-2.2フォルダに移動。
2.3.5で動かしたいので、

/usr/bin/python setup.py install

とする。

フォルダの内容を表示するlsコマンドと検索のgrepコマンドをpipeして

ls /dev/ | grep cu

とすればcu.usbserial-A30010IAというのが見つかるので、それがデバイス名。

pythonを起動してPySerialをimport。デバイス名などを入力。
>>> import serial
>>> ser = serial.Serial('/dev/cu.usbserial-A30010IA', 38400, timeout=1)

コンフィギュレーションを指定
>>> ser.write('KONFIGURATION_1*')

gainerにくっついてるledを点灯
>>> ser.write('h*')

消灯
>>> ser.write('l*')

これでpysndobj使ってlivecoding + wiringができる!?する!?

参考になりました。
PySerial READMEの和訳
pythonでgainerを制御する

金曜日, 3月 09, 2007

eclipse

ってもjavaの開発環境じゃなくて、日食。

http://www.livingworld.net/news/new_070308/
西村さん、かっこよすぎ。
あー福岡か札幌に行かなきゃならない気がしてきた。誰か卒業旅行とかで行って来なよ。

僕だってコンピュータおたくになりたい訳じゃなくて、新しいこととか、面白いことに打ち込んでたいだけ。去年授業を受けて、すぐに「自分の仕事をつくる」を買った。sensoriumには本当に影響を受けてたし、メンバーの人達それぞれの活動は今も刺激的。

西村さんは自分の家の水道管がどこからつながってるかを水道局に行って聞いたことがあるそうだ。担当の人も嬉しそうに答えてくれたみたい。伊藤ガビンさんが先見日記で書いてるように、結構色んな情報ってのはアクセス可能な状態で転がってるんだなと。sensoriumに話を戻すと、breathing earthとかは世界中の地震情報が24時間リアルタイムで取得できたら、こういう表現ができる!という本当にいい例。

今までこうだったものが、こうなると、こう変わる!ってのに気付くのって、難しい。画像でメモとるようになったり、bgmは皆のipodのシャッフルのシャッフルとか。大抵は知らないうちに適応してしまってるか、全く適応できない(そもそも知らない)か。けど多分訓練次第なんだよね。こういうのに敏感になるのも。今は出来にくくなったけどカメラ忘れたから携帯契約して即解約とか、電車の料金わかんないから初乗り買って現地で清算とか。鳩に手紙つけて飛ばすみたいなロマンあふれるhackがしたい。

candy:stuff for people like you

candy:stuff for people like you
relaxが休刊し、ヤンキーかおたくカルチャーしかない今、こういうのがあると救われます。回を重ねる毎に巨大化してるonlie magazine。いつかcontributeしたい。

ess envelope

essのenvelopeがよくわからない。maxとかsc3みたいに何秒で振幅がどんだけで〜みたいな指定の仕方のはず。EPoint(時間,振幅)で、時間はfloat。サンプルから推測するに1が1秒なんだろう。と、思いきや、どうやらframe数が変わっても形を保つらしい。maxでいうとbreakpoint function editorにsetdomain $1でframe数変えてるのと同じ。つまりサンプル数によって1秒で振幅が1になったり0.25秒で1になったりするということ。ややこしい。何が何でも0.1秒後に振幅1になってそれから0.2秒後に0になって欲しい。って指定がしたい時はどうすれば...。

あと、サンプルファイルはsetup()メソッドの中に一度だけ書いておくのではなく、毎回鳴らす度にnewしてあげる方がいい。特にone shotもの。ちょっと腑に落ちないけど。

import krister.Ess.*;

AudioChannel myChannel;
Envelope myEnvelope;

void setup() {
size(256,200);

// start up Ess
Ess.start(this);

}

void playSound(){

// load file into a new AudioChannel
myChannel=new AudioChannel("cell.aif");

// apply a 4 point envelope
EPoint[] env1 = new EPoint[4];
env1[0] = new EPoint(0,0);
env1[1] = new EPoint(1,1);
env1[2] = new EPoint(2,0);
env1[3] = new EPoint(3,0);

myEnvelope = new Envelope(env1);

myEnvelope.filter(myChannel);

// play
myChannel.play();
}

void draw() {
}

void mousePressed() {
playSound();
}

// we are done, clean up Ess

public void stop() {
Ess.stop();
super.stop();
}

水曜日, 3月 07, 2007

bang book

pdの本が出てた。表紙が結構かっこいい。白が良かった気もするけど何かしら意図があるのだろう。多分。pdfが無料でダウンロードできる辺りが素晴らしい。内容は単なるhowtoではなくopen source communityがどうとか文化的な話題から物理モデルの基礎、プログラミングで音楽(楽器)を作るとは、てな感じの研究的なコラムが中心で、それぞれのコラムの後にちょこっとpdのプログラミングの仕方が書いてある程度。computer music journalとかに近い。論文には役立つかしら。

初心者がpdとdspの勉強するなら開発者のmiller pucketteが書いてるドキュメントの方がいいかも。

pdのドキュメンテーション
Pd Documentation

dspの話題をpdのexampleで
The Theory and Technique of Electronic Music

火曜日, 3月 06, 2007

openframeworks pre release

遂にpre releaseとなったopenframeworks。ダウンロードしたファイルを解凍して、__Instructions.txtに書かれている通り_G5 G4 CLICKと_G5 G4 CLICK TOOというファイルをクリックするも何も起こらず。これが原因でサンプルがコンパイルできないらしくmixi経由でトビに質問。of_preRelease_v0.01_xcode/libs/freeimage/内のppcFreeImage.zip、of_preRelease_v0.01_xcode/libs/freetype_osx_local/lib/内のppcFreeType.zipをそのまま解凍すればいいだけだった(丁寧にありがとう!)。

で、exampleをいくつか試してみたところ、audioOutputExampleなんかは描画も速いし音のキレもいいなーという印象。forumに載ってたofGetFrameRate()使ってfps表示してみました。こういう時にどういう情報載せるのがいいのかよくわかってませんが、プロセッサ 1.25GHz PoworPC G4 メモリ 512MB DDR SDRAM グラフィックス ATI Mobility Radeon 9600ってな環境で実行しました。Xcodeは2.4.1。


最大で350fpsくらいは出てたかな。計測の仕方が正しいのか不安...。修士制作で使うメインの言語を何にしようかってので色々試してるんだけど、時と場合に応じて色々使い分けられるようになりたい。徐々に開発サイドにも回っていきたいし。openframeworksのSet up GuidesはMacユーザ用のXcode、Windowsユーザ用のdev C++、VC++ 2005の使い方についても丁寧に書かれているので、僕のように開発経験の少ない人でも読み易くなってます。

とにかく、正式版が待ち遠しいです。
http://www.openframeworks.cc/

openframeworks開発者
zachary lieberman
theodore watson

zacharyのmaking things moveはprocessing(p5)のいい勉強になります。
theodoreはデザインもサイバー過ぎず素敵。audio spaceとかマジで悔しい。

他、openframeworks関連の記事
ことぶ記
create digital motion
software over the rainbow
Michael Ang
abstract machine

20070305

制作、展覧会で忙しいのが終わったと思ったらパーティシーズン到来。さすがに皆ひと味違う遊び方をするので、面白い。高カロリーなのものが多かったので、多分わかりやすく太ると思う。お財布もダイエットしなければ。

池田山近くのキャンプ場にてショーケンの思い出バーニングマン。昼過ぎに準備開始。春の陽気に加えて銀色のシートだとか虫取り網で浮かれ度アップ。


梅が沢山咲いてていい香り。


川は工事中でシステマチック。こういうパラメータを調整して、あとは放っとく人工+自然な感じも、好きだ。



何故かブラジル人や中国人らしきグループが多かった。キャンプ文化?



池田温泉に入ってツルツルになる。その後買い出し。「パーティでは発泡酒は買わない」主義。漫画みたいなステーキ用の飛騨牛購入。写真写りを考えて食材を選ぶのも、好きだ。

20時頃より炎上。燃やすものの思い出を語りながら火を点けていく。ジンギスカンのタレがおいしい。飛騨牛は想像以上に美味。池田温泉で買った塩がよく合う。

23時頃にtakawoやタニガミ、福ちゃん合流。少し遅れてlozi君合流。さらに炎上。




炎のあったかい&かっこいいこと!自然と話も尽きない。制作とか就職とか恋とか怖い話とか。

燃え尽きた木がかわいいタイポみたいでインスパイアー。


燃やしたいものは全て燃やし、練乳入れたベトナムスタイルのコーヒーで朝を過ごしてたら突然の雨。さくっと撤収、学校の仮眠室で撃沈。

久しぶりに遊び疲れた。今は真面目に働きたい気持ちで一杯です。

土曜日, 3月 03, 2007

open studio review


open studioのreview、講評会というか反省会というか。が、開かれました。内容はほぼお説教だったけど。僕が考えてたように、展覧会という形式とAMSで作ってる作品というのは相容れない要素があることは共通認識としてあって、jamesが言うには、「ちょっと行き過ぎたくらいの形で実現しないと意図は伝わらない」と。僕の作品であれば、とにかく沢山の引き出しがあるとか、考えたインタラクションのシナリオを全てスケッチに描き起こして掲示するとか。理想的な形をひとつ展示するのでなく、全部盛込んでしまう。確かにそうすれば見た目にはスマートでないがインパクトはあるものになる。特に僕の作品は音がメインなので、視覚的にキャッチできないから気付かなかった人も多かった。think everything!だね。

実現が難しいものはそもそもデザイン的に間違ってると考えてもいい。ことインタラクションデザインに限れば、どうすればそのフィーリングが得られるか、にフォーカスした方がいいのかも知れない。最初にマウスが発表された時も、実はちゃんと動いてなくて、マウスを操作してるふりをする人と、裏でその通りに動くようにプログラムする人がいたそうだ。考えてることをちゃんと伝えないと、プロジェクトを進める人やお金を集められない。そのために必要なことは何か。

とにかく考えたことをどんな形であれ作ってみる。フィードバックを得て改良する。深く考える。また作る。その繰り返し。もう大分この分野でも表現方法が出尽くしてきてて、ファーストアイディアで新しいものが生まれるほど甘くはない。

木曜日, 3月 01, 2007

built with processing

日本語でprocessingの本が出る。著者はtakachinこと前川峻志さん田中孝太郎さん。takachinとは一瞬だけ予備校の直前講習で一緒だった。受験終わった後の電車でしゃべったこととか、内容覚えてないけど、すげー懐かしい。ゴリゴリ仕事もしてるみたいで、勝手に刺激受けてます。めちゃくちゃ売れて欲しい。

Built with Processing —デザイン/アートのためのプログラミング入門