日曜日, 12月 31, 2006

num2snd(max/msp)

数値が音になる、ということが僕は未だに興味深いのですが、わざわざmax/mspで実装してみました。peek~っていうオブジェクトにインデックスと数値を送ることでbuffer~にデータを入れています。サンプルでは1サンプルずつ数値を入力するものと、自動的にサインウェーブとランダムノイズを作るものがあります。バッファに希望の長さをミリセコンドで指定すればサンプル数に変換されます。その後またサンプル数を手動で変化させてみても面白いです。
作成されたバッファテーブルはgroove~オブジェクトで再生します。この再生位置や速度を変えることでもかなり音響が変化します。サイン波の合成から音を作るのではなく、バッファテーブルに直接データを書き込むことで音を作る手法で、またひとつ下のレイヤーに降りた、という感じ。他の言語でもやってみるつもり。

max v2;
#N vpatcher 633 107 1290 670;
#P window setfont "Sans Serif" 9.;
#P window linecount 1;
#P comment 27 167 65 196617 manual input;
#N vpatcher 10 59 610 459;
#P inlet 217 70 15 0;
#P outlet 161 167 15 0;
#P inlet 161 71 15 0;
#P window setfont "Sans Serif" 9.;
#P window linecount 1;
#P newex 161 140 51 196617 pack 0 0.;
#P newex 161 98 29 196617 t b f;
#N counter;
#X flags 0 0;
#P newobj 161 119 66 196617 counter;
#P connect 3 0 1 0;
#P connect 1 0 0 0;
#P connect 0 0 2 0;
#P connect 2 0 4 0;
#P connect 1 1 2 1;
#P connect 5 0 0 4;
#P pop;
#P newobj 27 207 49 196617 p manual;
#P flonum 27 186 44 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P message 34 105 33 196617 clear;
#P comment 111 167 56 196617 make noise;
#P comment 240 167 49 196617 make sine;
#P comment 170 167 65 196617 random value;
#P comment 233 107 42 196617 samples;
#P comment 371 68 36 196617 vol;
#P button 242 185 15 0;
#P comment 516 70 47 196617 select all;
#P message 513 85 51 196617 0 -1 0 -1;
#P flonum 218 127 45 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P message 398 227 43 196617 ¥$1 100;
#P newex 363 227 32 196617 line~;
#P flonum 141 185 45 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
#N vpatcher 20 74 620 474;
#P inlet 249 118 15 0;
#P window setfont "Sans Serif" 9.;
#P window linecount 0;
#P newex 249 228 51 196617 pack 0 0.;
#P outlet 249 253 14 0;
#P newex 249 138 40 196617 uzi;
#P newex 333 139 27 196617 t f f;
#P newex 350 161 27 196617 / 2.;
#P inlet 333 117 15 0;
#P inlet 279 118 15 0;
#P window linecount 1;
#P newex 279 202 27 196617 - 1.;
#P newex 279 182 34 196617 / 50.;
#P newex 279 161 64 196617 random 100;
#P connect 10 0 7 0;
#P connect 7 2 9 0;
#P connect 9 0 8 0;
#P connect 3 0 7 1;
#P connect 7 0 0 0;
#P connect 0 0 1 0;
#P connect 1 0 2 0;
#P connect 2 0 9 1;
#P connect 5 0 1 1;
#P connect 4 0 6 0;
#P connect 6 0 0 1;
#P connect 6 1 5 0;
#P pop;
#P newobj 112 205 74 196617 p randomnoise;
#N vpatcher 84 195 684 595;
#P window setfont "Sans Serif" 9.;
#P window linecount 0;
#P newex 289 124 27 196617 t f f;
#P newex 289 80 27 196617 t f f;
#P window linecount 1;
#P newex 265 175 51 196617 pack 0 0.;
#P outlet 265 209 15 0;
#P inlet 259 60 15 0;
#P newex 259 102 40 196617 uzi;
#P newex 306 149 212 196617 expr (sin(($f1 / $f2 ) * (2. * 3.1415926)));
#P inlet 289 60 15 0;
#P connect 3 0 2 0;
#P connect 7 0 5 0;
#P connect 5 0 4 0;
#P connect 0 0 6 0;
#P connect 6 0 2 1;
#P connect 2 2 7 0;
#P connect 7 1 1 0;
#P connect 1 0 5 1;
#P connect 6 1 1 1;
#P pop;
#P newobj 242 205 60 196617 p sinewave;
#P message 111 105 42 196617 size ¥$1;
#P newex 162 105 66 196617 mstosamps~;
#P flonum 371 85 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P toggle 495 85 15 0;
#P message 495 206 43 196617 loop ¥$1;
#P message 464 85 29 196617 stop;
#P message 410 85 51 196617 startloop;
#P message 257 85 66 196617 set num2snd;
#P flonum 325 85 42 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P user waveform~ 325 106 200 74 3 9;
#W mode select;
#W mouseoutput continuous;
#W unit ms;
#W grid 1000.;
#W ticks 0;
#W labels 1;
#W vlabels 0;
#W vticks 1;
#W bpm 120. 4.;
#W frgb 33 0 0;
#W brgb 60 178 173;
#W rgb2 0 95 255;
#W rgb3 0 0 0;
#W rgb4 0 0 0;
#W rgb5 190 137 255;
#W rgb6 100 100 100;
#W rgb7 100 100 100;
#P message 71 105 35 196617 write;
#P newex 325 185 29 196617 sig~;
#P newex 325 227 35 196617 *~ 1.;
#P newex 325 206 89 196617 groove~ num2snd;
#P button 112 185 15 0;
#P flonum 112 251 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P number 74 233 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P user ezdac~ 325 249 369 282 0;
#P button 111 67 15 0;
#P newex 111 85 27 196617 i;
#P number 128 67 51 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P newex 71 126 86 196617 buffer~ num2snd;
#P newex 112 230 78 196617 peek~ num2snd;
#P comment 325 68 35 196617 speed;
#P comment 128 50 76 196617 set length (ms);
#P connect 40 0 41 0;
#P connect 30 0 41 1;
#P connect 14 0 3 0;
#P connect 24 0 3 0;
#P connect 39 0 3 0;
#P connect 6 0 5 0;
#P connect 5 0 24 0;
#P connect 10 0 26 0;
#P connect 41 0 2 0;
#P connect 8 0 2 0;
#P connect 26 0 2 0;
#P connect 25 0 2 0;
#P connect 2 0 9 0;
#P connect 4 0 5 1;
#P connect 30 0 26 1;
#P connect 5 0 23 0;
#P connect 27 0 26 2;
#P connect 23 1 30 0;
#P connect 33 0 25 0;
#P connect 30 0 25 1;
#P connect 17 0 15 0;
#P connect 16 0 13 0;
#P connect 20 0 11 0;
#P connect 19 0 11 0;
#P connect 18 0 11 0;
#P connect 13 0 11 0;
#P connect 11 0 12 0;
#P connect 12 0 7 0;
#P connect 28 0 12 1;
#P connect 12 0 7 1;
#P connect 29 0 28 0;
#P connect 15 2 11 1;
#P connect 22 0 29 0;
#P connect 15 3 11 2;
#P connect 21 0 20 0;
#P connect 31 0 15 4;
#P pop;

土曜日, 12月 30, 2006

collect.apply

何度か言及してるjamesが京都で運営してるデザイン会社。
http://www.collectapply.jp/

dj kawasakiとか今元気な人達のアートワークを手がけててびっくり。max de wardenerのは以前berlinに行った時にジャケ買いしてしまった。

彼は学生時代はfine artを専攻していて、様々なメディアを使う中でコンピュータと出会ったそうだ。彼と一緒にプロジェクトを進めて行くうちにとにかく具体的に物事をイメージすることを癖付けるようになった。そのためのメソッドは色々あって、シナリオを考えたり、スケッチしたり、スクラップを集めたり、モックを作ったり。コンピュータがないと作れない、とか知っている技術の中でなんとかしようとしてしまう、という悩みが常につきまとってるんだけど、少しは楽になれたかも。

とにかく作り続けること。ある時は良くて、ある時は悪くていい。けどthink everithing!全てには理由がある。何でその色、何でそのグリッド。自分が決めるのであってグリッドが決める訳ではない。自分の感覚を信じる。多少機能を犠牲にしても雰囲気や意図を伝えるための全体を貫く基本的な概念を大切にする。けど本末転倒にはしない。newsをみるのは悪い習慣。

土曜日, 12月 23, 2006

20061222

何故かプリンタの設定がうまくいかず徹夜したのに結(vjで参加してるイベント)のポスターが印刷できず。少し横になったと思ったら撃沈して起きたら10時。9時45分から動画まわりの引っ越しだった!で、大急ぎで家戻って用意して着いたのが10時半頃。遅れを取り戻すために必死で階段を昇り降り。引っ越しダイエット、引っ越し筋トレ。ソフトピアのオフィスにも大量の荷物。今度は台車をひたすら押す。トラックいっぱいに積んでも足りないくらいの荷物の多さだったけど、工具や本を大事にしてる感じがらしくて何か良かった。午後2時くらいには終わって、星君の家でカレーをご馳走になる。テレビ観ながら昼寝。最高の休日。先日入稿した結のフライヤーも届いた。思ってたよりもいい出来で安心。

夜8時、お礼にと大垣no.1焼き肉屋の呼び声高い七輪亭で打ち上げ。何を食べてもおいしい。ビールがおいしい。制作の話、これからの話、IAMASの話、仕事の話、地元とか実家とか親孝行とか...動画まわりの宇田さんはIAMAS入学前から本当に憧れてたし、ペーターさんは入学してから色々なとこで写真だったり設営だったりデザインだったり何でもできてすげーと思ってたので今回のような機会に恵まれたのは素直に嬉しい。参加メンバーでの展覧会が実現したら本当にいいなと思う。北鎌倉お手伝い組にも強力な人達が揃ってるし。

引っ越しの手伝いに開眼したのは平野さんの時で、あの時は大量のごみを捨てにいくのが面白かったのと今までの話、これからの話、を普段とは違うテンションで聴けたから。平野さんも物が多かったんだけど、古い物と新しい物が整理されないまま同じ空間に存在してる状態はアーティスト的な直感には良い働きをするのかもしれない。それは前田さんが言ってたんだけど。加藤あいのデビュー当時のグラビアとかあったしな。池田亮二の8cmシングルとか。買ったばっからしきmotokoの写真集とか。今年は中西君ヤマコー、そして実家と数々の引っ越しを手伝って、物理的にも精神的にも色んな物をもらった。来年は長く一緒にいた人達が一気に居なくなるので寂しいが、全引っ越しに参戦して本気で送り出そうと思う。

人がある場所に住んで生活すること、ってのは基本的すぎて普段はあまり意識しないのだけど、自分が大事にしてるものとか、部屋の匂いとか、引っ越しの時に気づくことって多くて、初めて訪れた土地から、ぼーっと考え事してても帰れてしまう所になって、他の人から見ればどうってことない風景が自分にとっては特別な景色になってることの不思議さ。自分は世界中のどこに住んでもいいんだ、という感覚とか。

とりあえずでも、物は減らす方向で。

金曜日, 12月 22, 2006

mtunes and ptunes

max/mspからiTunesをコントロールするためのエクスターナルと、processingで作ったiTunesのコントローラー作りました。
download mtunes
download ptunes(controlP5が必要です)

javaで書いてるのにどっちもosxのみなのが残念ですが(applescript呼び出してるしね)。しかも"再生/一時停止"と"一曲飛ばす/戻る"しかない。もともとはJAVA SWING HACKSっていう本読んでてjavaからitunes制御するプログラムを見たからなんだけど、今後再生トラック名取得だとか、そういう機能を追加してけばそれなりに面白くなるかも。なるかしら。iTunes使ってdjするとして、曲名とかをjitterに渡すとか再生回数を反映したグラフィックをprocessingで作るとか何とか。。。それなりに使いやすいインターフェースになりそうな気もする。ブラウザから動かせれば(特に理由はないけど)いいのになー。要調査。2月の展示に何かしら使えれば最高。

aka.wiiremoteのmxj版はできるのか。。。
先日このオブジェクト使ってwiiリモコンで落語やりました。

水曜日, 12月 13, 2006

openal

OpenALっていうOpenGLの音版みたいのがあって、今調べてる。ちょっと前ではlwjglってのを使って勉強してたんだけど、processingからjavaバインディングのjoalを使う方法がフォーラムに載ってたので試してみた。toxi最高。結構いい感じ。もうちょっと形になったらアプリにして公開するつもり。

やっとsoundvoyager遊んだのだけど、こういうの作りたかったから本当に悔しかったー。

月曜日, 12月 11, 2006

20061210

今週は最高に忙しいのでblog書いて現実逃避とスケジュールの確認。

火曜日はganguプロジェクトで金曜日のプレゼンの準備。制作物(商品)のタッチポイント、消費者がどのように商品と出会うか、という状況を想像してダミーの広告や雑誌やcmを作る。

水曜日はamsの家具作り。マイクとスピーカーとcdsがついたユニットを作り、音の抽き出しを作る予定だったが、抽き出しをひとつのモジュールと捉え、別のユニットとも交換ができるような設計にすることにした。俄然可能性が広がる。jamesや入江さんの発想、アドバイスは本当に面白い。amsが目指す情報提示は、空間と情報を結びつけること、正解ではなく曖昧なsuggestion。プロジェクトの中でjamesが何度も言っているのは「技術的にできるできないではなく、どうなってれば完璧かを想像しろ」。そしてそいつがどうインタラクションして、僕らの生活にどんないいことがあるのか。イメージを強くもつこと。そのためのスケッチ。ラピッドプロトタイピング。頭の中で考えているうちに技術的な方向ばかりに目が行ってしまって小さくまとまってしまいそうになるので、この言葉を何度も繰り返す。2月後半には展覧会もあることだし、制作のスピードを上げなければならない。とにかく手を動かすこと。午後はrelational design。今週はandreasが出張でいないけど、こちらも1月中旬までにphpで携帯コンテンツを作らねばということで、必死で勉強中。この授業も大変だが学ぶところは多い。もうちょっとまとまったら記事にするつもり。夜からは前述したgangu/amsの展覧会ミーティング。アートディレクターとして頑張る予定。

古堅さんに頼まれてるwebコンテンツもそろそろ締め切りが近い。実際に使う時の流れを考えてインターフェース、インタラクションのデザインを考える。隔月でvjをさせてもらってるイベントのフライヤも入稿してしまいたい。

木曜日は色々手伝った2年生の修士制作本審査。裏でams?

金曜日はganguプレゼン本番。

それぞれheavyな課題が山積みだけど、乗り切れば一気に伸びるはず。ここで身につけた技術を全て連動させて年次制作とするつもり。授業のない年末年始が勝負。

金曜日, 12月 01, 2006

whichin



javaの勉強もだいぶ落ち着いてきたところで、maxのエクスターナルオブジェクトを作ってみました。
mxj whichin 数字
で数字の数だけインレットを作り、どのインレットからbangを受け取ったかを出力します(第1インレットが0になります)。tutorial読めば一瞬でできるものですが、何となく使いどころはありそうです。maxオブジェクトもeclipseで開発すれば非常に楽。max.jarファイルを追加して、ワークスペースをCycling '74/java/classes/にしておけば、あとはコードを書いて保存するだけでclassファイルができます。すぐ試せて便利。mspオブジェクトも作ろう!

download whichin

水曜日, 11月 22, 2006

20061122

ショーケンの制作ヘルプで本日夕方から27日くらいまでロケに出かけます。行き先未定!以前の大垣城公園であれだったので、多分今回は言葉では言い表せないものになるでしょう。だから写真で伝えますflickrのアカウントとって、携帯からアップするようにしました。本当はこっちも更新されるようにしたかったんだけど、labelの関係上flickrだけにしました。Blogger mobileでできれば一番なんだけど...。

とりあえず、たまにflickrの方を覗いてもらえると楽しいと思います。写真がお土産じゃなくて、実況だから。にしても、旅の準備がflickrの設定とか、iPodのプレイリスト作成とか、重要そうなメールは携帯に転送するようにとかって時代も変わりましたね。荷造り終わってません。買ったばっかのDJ-2.20が大活躍の予感...。

>flickr: photos from hayashi_yosuke

processing beta with eclipse

eclipseでprocessingを使ってみた。何となくXcodeより体にフィットするので最近始めたC/C++もeclipse使うことにした。フォーラムの内容に沿いつつ自分の環境(Mac OS10.4.8, Eclipse 3.1.2, Processing 0121 Beta)でテスト。

Packege ExplorerでNew ProjectしてProject nameを適当にHelloP5とかつけてNext>。LibrariesタブをクリックしてAdd External JARs...クリック。Processing 0121フォルダにlibってフォルダがあって、その中のcore.jarを選択してfinish。New source foulderで名前をsrcにしとく。

New Classでクラス作って、import processing.core.*;と打ち込む。
processing. まで打ったらprocessing.core.*;ってのをサジェストしてくれる。多分当たり前なんだろうけど、こういう経験が浅い僕はちょっと感動。
public class HelloP5{
}
ってコードが既に作られてるはずなんで、そいつにextends PAppletと加える。あとはHelloP5クラス内に普段processingで書くみたいにsetup()メソッド、draw()メソッドを追加してRunメニューからRun As > Java Appletで動くはず。

コードアシストなどデバッグのこと考えるとすげーいいと思う。eclipseを使いこなす練習にもなるのかも。(ちなみに以下のコードではserialVersionUIDが宣言されてないとかそんな警告が出ます。)

import processing.core.*;

public class HelloP5 extends PApplet {
int i=0;

public void setup() {
size(200, 200);
stroke(255);
frameRate(30);
}

public void draw() {
background(51);
i++;
if(i > height) {
i = 0;
}

line(0, i, width, i);
}
}

木曜日, 11月 16, 2006

20061115

特別研究期間ということで教授と面談して年次制作、修士制作についての意見を伺う。chaserで書いていたように、複数のモジュールを空間内に配置することで音と映像をつくることにしようと考えている。少し前には担当教官の前林さんとアートとエンターテイメントのどちらに落とし込むかについての議論をした。

本日は三輪さん前田さん。二人ともスタジオ2でタイムベースドメディアの教授(ちなみに僕は最初スタジオ2に所属してました)で三輪さんが音で前田さんが映像。アカデミーの頃からお世話になっていたので話は通じやすい。前田さんとは12日のAOKI Takamasaさんのライブに連れていってもらったり。

3日のライブで使用したmaxパッチを動かしながら説明。僕のイメージとしては、仮想空間内でそれぞれモジュールが動いていて、音が鳴っていて、リスナーが空間内を動いてそれを聴いたり、録音したりすることで自動的に音楽ができあがる、というようなもの。さらにネット上で複数人が参加して空間を編集できるとか何とかも言っていて、全然整理できてなかったのだけど、三輪さんが現代音楽、電子音楽の文脈でプレゼンテーションを行う場合のモデルを提示してくれてとてもクリアになった。曰くモジュールから発生する音の動きの重ね合わせで音響を作り、「アンチコンポジション」的な態度でメディアに落とし込んだものを作品とする。と。非常に三輪さんらしい意見。アルゴリズムを作曲でなく音響、音色に利用すること、そしてそのアルゴリズムが映像付きで独自に設定されていることが可能性として面白がってもらえたようだ。音と映像の「動き」にフォーカスしてみるのはいい切り口かもしれない。前田さんも音と映像の対応関係、そして数あるジェネレータ系のものよりかなりバリエーションが作れるところに注目してくれた。ycamの時に実現したかった成長の要素を組み込んでもいいのかもしれない。

共通して質問されたのはやはり落とし所、これはアートなのかエンターテイメントなのか。インタラクションを楽しみたいのか、聴いたことない音を鳴らしたいのか。

で、やっぱり僕は聴いたことない音が鳴らしたい。

火曜日, 11月 07, 2006

phase vocoder tutorial

cycling '74のサイトにphase vocoderのtutorialが上がってます。 4.6以降ってなってますが、僕の環境はexternalの読み込みでエラーが出るので、まだ4.5.7使ってます。(sc3も変なエラーでサーバ立ち上げるとウィンドウに文字が表示されなくなったりで困ってます...)

4.5.7で開いてみたらuziオブジェクトのエラーが出るだけだし、他に特別なこともしてそうにないのでp hanning windowの中を少し書き換えてみます。4.6からuziが引数を2つとれるようになってて、2つめの引数からindexがカウントされます。このパッチでは0になってるので、4.5環境では単純にuzi 1024として第3アウトレットからの出力に- 1をつけてあげれば同じ挙動になるはずです。

jitter recipesとか役に立つコンテンツが沢山あっていいなぁ。2061:Maxオデッセイの次は是非。

日曜日, 11月 05, 2006

20061105

blogを開設するにあたって、制作に必要なものだけにしようと思ったけど、意外と日常生活から浮かぶテーマは多いしプログラムばっかやってるつまんない奴と思われたくないので、日記もつけることにする。labelでフィルタリングもできるし。

11/4
朝10時。ショーケンの手伝いで大垣城公園にて撮影作業。予定より1時間遅れで恐ろしい量の荷物と徹夜でボロボロになったショーケン登場。

休日、家族連れやカップルでポカポカ陽気で、「平和だねぇ」とか思っていたが耳を澄ませてディティールを探っていくとそうでもない。

キャッチボールで子供をしごく親父。
フリスビーがうまくできない母を罵る子供。
まだ小さい子供を「拾ってこいよ!ボケー!」とか大声でどなる母親。
競輪新聞読みながら賭け将棋やってる老人集団。

昼過ぎに前日一緒にライブをしたmimiZのトビ、梅ちゃんと合流。撮影用のブースを組み立て、梅ちゃんは撮影の協力者をキャッチするために奔走。僕とトビは撮影システムに使ってるMaxパッチをいじりつつキャッチボールをして遊ぶ。いつの間にかガキが遊びに来てなんだかんだ作業の邪魔したりそれなりに和やかな雰囲気にしてくれたり。
小学4年生に「ポキ(僕のニックネーム)!」とか「おっさん」とか呼ばれる。

夕方からブース前で鍋を始める。キムチ鍋。
ブースを片付けるのが面倒なのでショーケンはこのまま泊まると言い張る。流れで僕も泊まらないと負けみたいな雰囲気に。家まで10分なんだけど。

夜には動画まわりの宇田さんペーターさん、そして桜木君も合流。

22時頃に一旦家に戻って防寒対策とプロジェクト発表の資料作りとこまごましたメールを送って再び大垣城公園。

23時頃に鍋は解散。トビ梅にテントを借りてブースの前に設置。賭け将棋の老人集団(まだやってる)を警察が注意しにくる。僕らは何故かスルー。

0時頃就寝。間もなく不倫カップルらしき二人が大喧嘩。
「私は独身!あんたは子供がおる!」
女の声が響き渡る。テントの中だと音しか聴こえないので 非常に想像が膨らむ。他にもたまにラジオ付けっぱなしの人がテントの側を通ったりするのでびびる。

11/5
6時半頃起床。極寒。

ウォーミングアップがてら機材のセットアップ。精神を統一するかのように配線を綺麗に行い、丁寧な仕事で撮影に臨む。

9時頃に立て続けに2人撮影成功。おばさんをその気にさせる術を覚えた。犬を散歩させてる若い女性がいるので自分も犬を飼いたくなる。犬同士をコンタクトさせれば自然と人間同士のコミュニケーションも始まるはずだ。
ショーケン曰くそんなことに利用される犬にしてみれば「迷惑だワン」。

10時過ぎに五十嵐到着。ついでに昨日のガキも到着。
で、僕は一時帰宅。

少し作業した後気付いたら寝てしまっていて、15時頃学校へ。プロジェクトの発表のための資料を整えつつ情報交換。その後プレゼン映像用のナレーション録り。前回と話す速度が違うもののタイムストレッチで誤摩化して終了。もうちょっとprotoolsを使いこなせるようになりたい。

18時半から大垣城公園でショーケン撤収作業。五十嵐効果で40人位の撮影に成功したらしい。将棋老人グループのリーダー格に気に入られ、沢山連れて来てもらえたようだ。何か現代人間社会の根底に未だ流れてるワイルドさみたいのを感じた。編集室にて収録映像の確認。見た目シンプルだけど構造的にはかなりねじれた作品なので詳細は省くけどかなり面白い。いい作品になりそうです。

夜御飯は五十嵐とともに焼き肉を御馳走になる。

こういう予期せぬ事態を引き寄せたり、日常を捉え直させてくれる力がアート及びアーティストにはあって、今の僕の興味はそこにしかない。普通のことを積み重ねていって、気付いたらすごい飛躍、というのが理想的なんだけど、今回はまさにその通りだった。

水曜日, 11月 01, 2006

chaser

max/mspのパッチでちまちま作ってたものが結構増えてきたので公開します。lcd内でマウスをドラッグすると、動きを記録して繰り返し再生します。こういうモジュールを沢山集めてつないで全体を作るようなプラットフォームを設計したいと考えています。使い方は君次第。
適当にtextファイルにコピーペーストして保存した後、max/mspで開いて下さい。コピーしてクリップボードに入ってる状態でmaxパッチャーにそのままペーストしてもいけます。

max v2;
#N vpatcher 10 59 509 569;
#P button 216 308 15 0;
#P window setfont "Sans Serif" 9.;
#P window linecount 1;
#P newex 146 412 46 196617 t l clear;
#P message 250 236 29 196617 stop;
#P newex 176 360 27 196617 - 4;
#P newex 146 360 27 196617 - 4;
#P newex 146 438 94 196617 prepend frameoval;
#P newex 146 387 54 196617 pack i i i i;
#P newex 204 236 30 196617 t b b;
#P newex 182 262 35 196617 timer;
#P newex 262 214 31 196617 == 0;
#P newex 182 285 58 196617 metro 500;
#P message 182 308 29 196617 play;
#P newex 216 214 44 196617 togedge;
#P newex 146 189 40 196617 unpack;
#P message 224 262 40 196617 record;
#P newex 224 189 31 196617 == 1;
#P user lcd 146 50 128 128 1 1 0 0 0;
#P newex 131 334 40 196617 mtr 2;
#P newex 235 360 27 196617 + 4;
#P newex 205 360 27 196617 + 4;
#P window linecount 3;
#P comment 277 50 100 196617 chaser yosuke hayashi 2006.11.1;
#P connect 6 0 3 0;
#P connect 9 0 3 0;
#P connect 18 0 3 0;
#P connect 19 1 4 0;
#P connect 15 0 4 0;
#P connect 4 0 7 0;
#P connect 7 0 3 1;
#P connect 3 1 16 0;
#P connect 16 0 14 0;
#P connect 14 0 19 0;
#P connect 19 0 15 0;
#P connect 17 0 14 1;
#P connect 7 1 3 2;
#P connect 1 0 14 2;
#P connect 3 2 17 0;
#P connect 13 0 12 0;
#P connect 11 0 10 0;
#P connect 10 0 9 0;
#P connect 2 0 14 3;
#P connect 8 0 13 0;
#P connect 3 1 1 0;
#P connect 8 1 12 1;
#P connect 5 0 8 0;
#P connect 10 0 20 0;
#P connect 4 2 5 0;
#P connect 13 1 6 0;
#P connect 12 0 10 1;
#P connect 3 2 2 0;
#P connect 8 1 18 0;
#P connect 4 2 11 0;
#P pop;

日曜日, 10月 29, 2006

jpeg

Java code for Pure Electronica Generator
プログラミングの勉強も兼ねてjavaで音響合成。
コードを適当なエディタに書き込んで、Jpeg.javaという名前で保存。

javac Jpeg.java

でコンパイルして、

java Jpeg 周波数 長さ 波形

で音が鳴ります。明らかにおかしい音だけど。波形はsine, saw, triangle, square。例えば440Hzのサイン波を1秒鳴らす場合、

java Jpeg 440 1000 sine

とします。明らかにおかしい音だけど。
今はメソッドで波形を変えてるけど、ここの呼び出し方がもっと綺麗にならないかな。for文の中でif文てどうなんだろう。実用的なものを作りたい訳ではないし、途中で波形を変えられたりしておかしなことにできる可能性もあるからとりあえずはいいかな。とはいえ適当すぎると音鳴らないから勉強するとこはしないと。

波形クラスを作って、ポリモーフィズムとか使えばスマートにいけそうな気がする。時間かけてじっくりやっていこうと思います。

import javax.sound.sampled.*;

public class Jpeg {
public void sound(int freq, int msecs, String waveForm)
throws LineUnavailableException {
byte[] buf = new byte[1];
String wave = waveForm;
System.out.println(wave + ": " +
freq + "hz " + msecs + "msecs");

AudioFormat af = new AudioFormat(8000, 8, 1, true, false);
SourceDataLine sdl = AudioSystem.getSourceDataLine(af);

sdl.open(af);
sdl.start();

for (int i=0; i<8*msecs; i++) {
double angle = i / (8000.0 / freq) * 2.0 * Math.PI;

if(wave.equals("sine")) {
buf[0] = (byte)(sineWave(angle) * 110d);
} else if(wave.equals("square")) {
buf[0] = (byte)(squareWave(angle) * 110d);
} else if(wave.equals("triangle")) {
buf[0] = (byte)(triangleWave(angle) * 110d);
} else {
buf[0] = (byte)(sawWave(angle) * 110d);
}

sdl.write(buf,0,1);
}

sdl.drain();
sdl.stop();
sdl.close();

System.exit(0);
}

public double sineWave(double angle) {
return Math.sin(angle);
}

public double squareWave(double angle) {
double ratio = angle % Math.PI / Math.PI;
if (ratio <= 0.5)
return 1.0;
return -1.0;
}

public double triangleWave(double rad) {
double ratio = rad % Math.PI / Math.PI;
if (ratio < 0.25)
return ratio*4;
if (ratio >= 0.25 && ratio < 0.5)
return 1.0-(ratio-0.25)*4;
if (ratio >= 0.5 && ratio < 0.75)
return -(ratio-0.5)*4;
return -1.0+(ratio-0.75)*4;
}

public double sawWave(double angle){
return 1.0 - 2 * (angle % Math.PI / Math.PI);
}

public static void main(String[] args) {
int freq = Integer.parseInt(args[0]);
int dur = Integer.parseInt(args[1]);
String waveForm = args[2];

Jpeg generate = new Jpeg();
try {
generate.sound(freq, dur, waveForm);
} catch (LineUnavailableException lue) {
System.out.println(lue);
}
}
}

金曜日, 10月 20, 2006

amsound


Advanced Media School Projectでの制作。抽き出しの開閉でメッセージを記録、再生する。録音された音は加工されてメッセージの存在を知らせると同時に、その空間のBGMになる。共同作業スペースでの使用を想定した緩やかな情報提示。
実際は複数個作る予定なので少しスケッチからは形が変わる。

"Idea is bad."-アイデアは悪いものだ。ってのはこの作品だけでなく全てに言えることで、アイデア自体に価値はないので隠したりするな、という意味。実際プロジェクトで周りの意見を取り入れながら進めると、発想法だったり、何が一番大事かってことだったりがよくわかってくる。一人だと一つのアイデアに変にこだわりすぎてしまってこじつけてしまうことがよくある。

木曜日, 10月 12, 2006

a blind camera

BUTTONS:Between Blinks & Buttons
シャッターを押した瞬間の時刻を記録し、同時刻の写真をflickrから探して表示するカメラ。Moblie ProcessingとPHPスクリプトで作っている。

カメラに求めてるものって人それぞれなんだろうけど、僕の場合はあんまり画質にはこだわってないので、むしろ防水とか、防火とか、暗闇に強いとか、投げても壊れないとか、いっそ飛ぶとか、そういう方向にいってくれたら今まで見られなかったものが見られていいなぁと思ってます。この作品の場合は、同じ時刻に御飯食べた人、同じ時刻のどこかの夜明け、必ずしもポジティブなものばかりではないかも知れないけど、撮る人の眼差しとか、共有することとか、現時点での写真というメディアの特質をよく捉えてると思った。記録媒体がもっと安価になって24時間記録しっぱなしとかになったらまた色々違ってくるんだろうな。
そういったメディアの移り変わりとリアリティの変容をちゃんと感じていられるようになりたい。