水曜日, 2月 28, 2007

20070228

展覧会終わったと思ったら飲み会シーズン。長く付き合ってた友達ともいよいよお別れが近い。展覧会のために延ばしてもらってた諸々の締め切りがあるのでまだまだ手は止められないんだけど。

フォルマント合成はサンプルファイル+オシレータのハイブリッドで何とかなりそう。インターフェースにまた時間がかかるんじゃないかな。

今年は本当に忙しかった。かなり鍛えられたっていう実感もある。電子工作にもちょっと慣れたし、コーディングの理解も深まった。Max/MSPとかSC3で音楽作れるようになる or die!な時期も過ぎ、もうちょっとちゃんとインタラクションデザインについて考えたい。

恐ろしいのは、感覚とか世界観が古くなること。黒バックにワイヤーフレームとか、グリッチノイズとか、まだかっこいい?表面にとらわれすぎるのはよくないって知ってるけど、ちゃんと今の空気を吸いながら身軽でいたい。

土曜日, 2月 24, 2007

actionscript

actionscript関係で、仕事のオファーが来て、受けないつもりだけど、リサーチ。ちなみにflashは全然使えません。前から気になってて、古堅さんも「これでもうjava何年も触ってない」ってほど使ってる、MTASCを入れてみた。んだけど、どうやら世間はAction Script 3で、Flex 2っていう開発環境がAdobeから無料で配布されてるのでそっちも。

MTASCインストールするのに、環境変数とか何とか勉強になった。finderから起動するアプリに環境変数を指定するには
~/.MacOSX/environment.plist
てファイルを作って(.MacOSXってフォルダも作って)、XML形式で書くと。
で、僕この方法よく分からず、かつeclipseの起動ができなくなったので、やめました。

とった方法は.bash_profile(ログインした時に実行されるファイル)のPATH=""の中を編集。
/展開した場所/mtasc-1.12-osx
というのを:でつなげて入れる。
一旦ターミナルをログアウトして、再びログイン、

mtasc

と入力して

Motion-Twin ActionScript2 Compiler 1.12 - (c)2004-2005 Motion-Twin
Usage : mtasc.exe [options]
Options :
 ー以下省略ー

と出ればよい。

この辺が勉強になりました。検索ですぐ見つかるけど。
ActionScript 2とFlash OOPのすすめ

Flex 2 SDKはAdobeのメンバーシップに登録して、zipファイルをダウンロード。展開して、適当な場所に置いて、player/debugの中のInstall Flash Player 9 UB.dmgを実行。

MTASCでやったように.bash_profileに
/展開した場所/flex_sdk_2/bin
を追加して、ログアウト。

mxmlc

というコマンドを実行して

Loading configuration file /Users/iamas/dev/flex_sdk_2/frameworks/flex-config.xml
Error: a target file must be specified

Use 'mxmlc -help' for information about using the command line.

と出れば成功。sampleフォルダの中のbuild-samples.shはすげー時間かかった。

ここ見て恒例のhello world!
ActionScript3.0メモ

javaに似てる。

色んな言語の基本的なとこばっか触って喜んでるんだけど、そろそろそういう環境おたくもやめないとなー。結局それで何するか、だ。やっぱり。というか、やりたいことがあって、必要条件として言語の習得があったはずなのに、いつの間にか言語の習得それ自体が楽しくなっちゃって、必ずしも悪いことでもないと思うんだけど、もっとアイディアありきで考えたいなと、最近は思う。
Scriptographerとか、いいバランスかなと。

open studio

4日徹夜して作り上げたopen studio。GanguプロジェクトとAMSプロジェクトの共同成果発表。プロトタイプの展示になるので、両方とも完成作品として見せられる状態ではないのが残念だが、会場デザインやプロジェクトの雰囲気などで楽しんでもらえればと思う。

jamesに言われたのは、とにかくクオリティの低さ。コンセプトとかやろうとしてることはすごくいいんだから頑張れと。で、確かにそれは言う通りで、僕自身「プロトタイプだからこんなもんでいいや」という意識があってしまったのは事実。もっとわがままに質問したり、業者に発注したり、すればよかったとこはいっぱいあった。何より早い段階で決めてしまわないと全然仕事が進まないことを痛感したので、それは今後の制作に活きてくると思う。あと一年あることに感謝。

展覧会という形態の限界というか、作品が一番活きるプレゼンテーションって何だろうと思った。amsoundは共同作業するスペースでのメッセージのやりとりを行うものなので、今回の展示では僕のイメージがほとんど伝えられない。
あと、AMSプロジェクトで考えている「あいまいな情報の伝達」「空間と情報の関係」に関してほとんど理解がされてないと思った。amsoundにしても電話でいいじゃんとか、直接話せばいいじゃんというような意見が出がちで、それはそうなんだけど、メッセージの内容さえ伝わればいいと考えてるんじゃなくて、その伝え方。メッセージは「何を伝えるか」も重要だけど、「どう伝えるか」も重要だと思っていて、携帯メールがよかったり、手紙がよかったり、メディアを選ぶことにもその人の見えないメッセージみたいなものが存在してるのは確かで、そういうものを嫌味にならない程度に反映させたいと思ってるし、メディアを作り出すことで人と人とのやり取りが変わることも面白いと思ってる。
とにかく今は情報が多過ぎて、しかもそいつらを処理するためには常にパソコンのモニタを見てなきゃならなくて、もっと色んな形で人とコンピュータがインタラクションを起こせるようにできればと思う。一部のギークだけじゃなくて、工夫次第で。

毎回展覧会とかライブとかする度にやめようかと思うくらいへこむんだけど、やっぱこのままでは終われないと思う。

20070217

ちょっと前に任天堂の会社説明会に行って来た。社長の話が面白く、プレゼンも綺麗だった。フォント選びとか写真の見せ方とか。会場で名作ゲームのBGMが流れてたりとか、いちいち気が利いてた。

で、印象に残ったのは「昔は皆コントローラーを取り合ってたのに、今は渡されると後ずさりする人が増えた」って話。自分にも経験あるし、実際ほとんどゲームはしない。ゲーム会社はずっと高度なことを追求すればユーザは喜ぶと考えてきたらしいが、結果的に喜んだのは一部のマニアだけだったようだ。一般的な人々のゲーム離れを言い表すのにその言葉を選ぶ感覚も、すげーいいと思った。
「ゲーム人口を増やさなければゲーム業界の将来はない」という問題意識から、Wiiは5歳から95歳まで対象年齢を広げた。ゲーム機が家庭でどう扱われるか、というところを考えたり、その延長で家族って何だ?というところを考えたりしてて、今僕らが取り組んでるプロジェクトの理想と近いものがある。

DSステーションを置くための営業努力とか、単なるゲーム作りだけでないところの話も聴けたし、大体の会社の雰囲気もわかったのでかなりためになった。これからはインタラクティブエンターテインメントの会社を目指すらしい。

会社説明会に来てた人達は何かすげー学生っぽくて、受験の時のあの嫌な感じ、鼻息荒いアピールとか、どうすれば受かりますか的な質問とかしてて吐きそうになった。西村佳哲さんの「自分の仕事をつくる」に書いてあった「自分の能力を会社に売る」という意識が著しく欠けてると思った。とか何とか強気なことを言ってられるのも今のうちなんだろうか。

木曜日, 2月 15, 2007

isFirstBang

processingでguiを扱うのにcontrolP5ライブラリを使ってるんだけど、addBang()メソッドでbangを組み込んだら、最初に実行されるsetup()メソッドの中で呼ばれてしまう。と、bangでファイルを読み込んだりしたい時に嬉しくない。のでboolean型の変数isFirstBangを作って最初のbangを回避。このcontrolP5ライブラリ、altキー押しながらドラッグすると動かせたりしてすげー。

ちなみにbangの使い方はcontrolP5型のオブジェクトに対して

.addBang("名前", x, y, width, height);

として同じ名前のメソッド

void 名前 {
...bangが押されて実行するプログラム...
}

で使えるようになる。以下、サンプル。

import controlP5.*;

ControlP5 controlP5;
boolean isFirstBang = true;

void setup() {
controlP5 = new ControlP5(this);
controlP5.addBang("openfile", 30, 30, 40, 20);
}

void openfile() {
if(isFirstBang){
println("first bang");
isFirstBang = false;
} else {
println("i want to open a file. but nothing happens now.");
}
}

void draw() {
}

processing application

ちまちまprocessingをeclipseで開発してるんだけど、どうもアプリケーションの作り方がよくわからない。何かantとかを使うんだろうか。要調査なんだけど、processingにはjava modeってのがあるので、普通にeclipseで書いたプログラムをコピー&ペーストでメニューからFile選んでExport Applicationでいいじゃんてことに気付いた。java modeは

public class クラス名 extends PApplet {
void setup() {
}
void draw() {
}
}

とするだけ。setup()とdraw()内にいつも通りに書けばいい。

ちなみに最近試しに作ったやつ。FadeIn/FadeOutで音の繋ぎ目を綺麗に。audioStreamWriteの使い方は未だに謎。ドキュメントおかしいし。generateメソッド呼び出した後にfilterメソッド呼ばないと意味ないってのに気付くのにしばらくかかった。

import processing.core.*;
import krister.Ess.*;

public class SineWaver extends PApplet {
AudioStream myStream;
SineWave sine;
FadeIn fadeIn;
FadeOut fadeOut;

int i = 0;
int col =0;
int oldFreq, newFreq = 0;
boolean doFadeIn = true;

public void setup() {
Ess.start(this);
myStream = new AudioStream();
sine = new SineWave(oldFreq, (float)0.5);
fadeIn = new FadeIn();
fadeOut = new FadeOut();
size(200, 200);
frameRate(30);
}

public void draw() {
i++;
if(i>height) {
i = 0;
col = (int) random(255);
}
stroke(col);
line(0, i, width, i);
myStream.start();
}

public void audioStreamWrite(AudioStream theStream) {
newFreq = i * 10;
sine.generate(myStream);

if(doFadeIn) {
fadeIn.filter(myStream);
doFadeIn = false;
}

if(newFreq != oldFreq) {
sine.frequency = newFreq;
fadeOut.filter(myStream);
doFadeIn = true;

oldFreq = newFreq;
}
}

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

}

水曜日, 2月 14, 2007

p5 links

processing(p5)で参考にしてたサイト集。度重なるハードディスクのクラッシュで記憶を分散させることに。
blogは日記じゃないからね。今後も増えるよ。

people/sample
http://onecm.com/
http://v3ga.net/index.php?type=0
http://processing.lafkon.net/
http://www.davebollinger.com/works/

share
http://www.processinghacks.com/
OpenCode

javax.swingをインポートしたfilechooser

火曜日, 2月 13, 2007

20070212

まとめて。

10日
朝から大阪に行く予定が寝過ごして結局出発は14時。大阪駅着いたら人が多い。四ツ橋線西梅田駅から肥後橋駅に行きたいのだがなかなか見つからず。世間は3連休の初日。駅の構内で高校の同級生らしき女子とすれ違う。確信が持てなかったのと丁度次の日が高校の同窓会なので来ることを見越して明日話せばいいと思って特に行動は起こさず。

やっとの思いで四ツ橋線西梅田駅を発見。そこからは一瞬で目的のAD&Aギャラリーに到着。kathyの個展。そしてオーナーはiamasの卒業生。

展示はアンケートの答えを品詞分解し、各品詞を改造したキーボードの鍵盤にアサインして自動演奏するインスタレーション作品。僕がiamas入学した当時から見てきた作品だけに感慨深い。昔は答えをパフォーマーが読み上げてて、実はbgmがアンケートの答えを反映して変わってますというくらいでわかりにくかったのだが、どんどん洗練されてきて手法とコンセプトが一体化してきている。配線の隠し方とかキーボード、モニタの汚れ、質問用モニタの向きとか細かい点で気になったところはあるけど作品はやっぱり面白い。本人のキャラも好きなので是非売れて欲しい。

ギャラリー周辺はステレオタイプな大阪のイメージからはかけ離れていて小綺麗。いい感じのちいさな店が沢山。18時まで適当に時間をつぶし、吉岡先生と高嶺さんのパフォーマンス。

ライブはインスタ作品と同様のアルゴリズムを使用し、吉岡と高嶺のチャットがリアルタイムで音に変換されるのだが、二人は別にアルゴリズムを理解した上で文章を書く訳でもなく、ただ好きなように話し続ける。意識が話を追ったり音を追ったりして分裂するのだが僕にはそれが気持ちよかった。

終わってパーティ。ワインで乾杯。一杯で酔う。
その後大阪駅へ戻り途中sofmapでixi digital 600を購入。同窓会に備える。

たこ焼きを食べた後、電車。彦根で降りる。

11日
高校の同窓会。ホテルのホールを借り切っての盛大なパーティ。150人くらい集まった。サッカー部のメンバーはたまに会ってるけど、それ以外は6年振り。そしてそう言えば昨日の女子はいない。くじ引きで決まった席についたら全然知らない人に囲まれてしどろもどろ。辛うじて元サッカー部で今は地元で中学の教師をしているMがいたので助かった。

会場をうろうろして東京時代の朋友Sと話したり先生に挨拶したりした後、プロダクトデザイナーになったTと業界のこと、興味のあることなどを話す。彼は当時からおしゃれっ子だったのできっとこれから素敵なものを作ってくれることだろう。

2時間なのであっと言う間に終わって2次会へ。元バンドメンバーのUと一緒に駅へと向かうバスに乗る。Uはalva.notoのライブを知らずに行って衝撃を受けたらしい。で、次の日ラップトップを持って軽音楽サークルでブチブチ言わしてたら理解されなかったらしい。

2次会では座敷に入れずUとUの中学からの同級生Nとテーブル席へ。高校時代Nとはほとんど話さなかったが、今は大学院で建築デザイン(アトリエワンの貝塚さんとかがいるとこだって)を勉強しているらしくなんだかんだで話が合う。周りは目が腐る耳が腐る脳が腐るといったような状態だが実はそれもちょっと羨ましい。とか思ってたら2人ほど女子が来て華やかな雰囲気に。特に面白いことも言えず終了。0時前に駅から歩いて実家まで。ipod絶妙な選曲。

12日
午前中はだらだらして午後から大垣へ向け徒歩で駅へ。風は冷たいが暖かい。ipodはまたも絶妙な選曲。琵琶湖沿いにできた大型ショッピングモールにスターバックスがあるので早速行く。と高校の元サッカー部の友達に会う。昨日は来てなかったので色々話したかったが別の人と待ち合わせていたようなのでさっさと帰る。駅前の本屋でスープのレシピ本を購入。隣で可愛い女子がチョコレート作りの本を読んでた。いいね!

電車の中ではipod充電切れで読書。マリーシェーファーの世界の調律。絶版だったあれが文庫で再販。必読マストバイです。音楽、建築、環境、文学、哲学など領域横断的な学問分野だし、きっと新しい世界の見方/聴き方ができるはず。毎度ながら米原ー大垣間は景色が最高だ。大垣へ向かう時は進行方向左側にいるのがいいと思う。

寮に着いて軽く横になって洗濯機を回す。メールによればカネジュンが帰って来たらしくお帰り会が中華料理屋で開かれるそうだ。ラボで作業してたメンバーに迎えに来てもらって合流。たらふく食べてラボ作業。制作の悩みはカネジュンが解決してくれそうなので期待大。

amsoundがプログラム的には完成に近づいて来た。pysndobjで音が鳴って感動して朝。

pysndobj osx

やっとpysndobj動かす。osxの情報が皆無だったのでメモ。
自分用でしかも僕は開発素人なので普遍性はないかも知れません。YMMVってやつだね。

sourceforgeのsndobjプロジェクトページへ。
http://sourceforge.net/projects/sndobj

Download The Sound Object Libraryをクリックして移動。
PySndObjをダウンロード。

既に僕の環境ではpython2.5なのでPySndObjを使うには2.3に落とさなければならない。
terminalから

/usr/bin/python2.3

とすればpython 2.3.5が起動する。

PySndObjフォルダ内の
_sndobj.soとsndobj.pyを
ライブラリ/site-packagesフォルダの中にコピー。

terminalから

open /usr/local/lib/

としてフォルダを開き、同じくPySndObjフォルダ内のlibsndobj.dylibをコピー。

それからJack OSXをダウンロードしてインストール。OSXならCore Audioでいけるはず(?)なんだけどJackがないよ的なエラーが出たのでよくわからずとりあえず。
http://www.jackosx.com/

おそらくこれでいけると思います。動かすまでに色々とエラーが出て、メッセージに言われるがまま操作してたら動くようになりました。ちゃんとエラーログをとっておくべきだったな。こうやって勉強していくのでしょう。漏れがないことを祈る。

pythonインタラクティブモードでSndObjのマニュアル見ながらコードを打ち込むもスレッドを使うところでエラー。
>>> thread = SndThread()
Traceback (most recent call last):
File "", line 1, in ?
NameError: name 'SndThread' is not defined

import sndobj

では駄目で、

from sndobj import *

とすればいける。

>>> from sndobj import *
>>> thread = SndThread()
>>>

が、今度は

>>> tab = sndobj.HarmTable()
Traceback (most recent call last):
File "", line 1, in ?
NameError: name 'sndobj' is not defined

となる。

なんでだーと思ってたらpythonモジュールのインポートの仕組みの違い。
http://python.matrix.jp/tips/import.html
まぁ、何となく他のソースと見比べればわかる。マニュアルが間違ってるんだね(追記:2.6.4のマニュアルでは修正されてました)。

なので、

import sndobj

でいく場合は

thread = sndobj.SndThread()

としてあげる。

from sndobj import *

だったら

tab = HarmTable()

でいい。

超簡単に440Hzサイン波を出すには

from sndobj import *
t = SndRTThread()
harm = HarmTable(10000, 1, 1)
osc = Oscili(harm, 440, 10000)
t.AddOutput(1, osc)
t.ProcOn()

で音が出ます。

t.ProcOff()

で音を止める。

exampleのtest.pyからマイク入力とsleep抜いただけ。

あーすげーやる気出て来た。

土曜日, 2月 10, 2007

annual report


Max/MSPで作ったソフトsound block(近日公開予定)と、
tex/tsp(processing+ess)を紹介して、修士制作の構想を少し紹介。

ヘッドフォンとコントローラーを組み合わせた3次元音響のゲームをつくるみたいな話をした。要約するとゲームの音楽(webでもそう)は状態の変化がないとずっとループ。でもそこに「音楽が鳴ってる」と認識する何かしらの働きがある。つまり僕らがそれを「音楽」と思うのは展開とかリズムとかそういうのだけでもないんじゃないかと。電気的に増幅された音に特に感じる独特の「入ってくる感じ」。まだうまく言語化できてないんだけど、第三項音楽とかでも言ってるようなテクスチャみたいなものかな。
で、「ずっとループ」ってのはそれを切り出して聴くものではなく、仮に3分のサウンドファイルにしたところで特に意味はない。終わりと始まりがない音楽。これを時間軸0とした。

visual musicという概念があって、あれは僕は音楽の視覚化だと思ってたんだけど、どうやらそれだけでなく、抽象画家がキャンバスに色や形を配置し、塗り重ねることで、時間の流れや層を感じさせる作品を、音楽のアナロジーを使って説明したものでもあるようだ。で、基本的に絵はどこから見てどこで目を離してもいい。音と映像を組み合わせると、必ず時間軸を持った映像作品にならないといけないだろうと知らず知らずのうちに思ってしまっていた。それを一旦止めてみる。そして再び動かそうとする。ここで初めてインタラクティブな構造の必要性が生まれる。時間軸0の音楽。

習作としてtex/tspのデバイス版作りたいな。壁一面にtex/tspの記号があって、それをスキャンして音を鳴らす。デバイスで記号を読み取り、src系は音を鳴らし、ctl系は内部状態を変化させる。既にありそうなサウンドアート系のインスタレーションなんだけど、一応ここまで述べたような理由があってのことなんで、また別の見せ方とか聴かせ方については考えられると思う。とりあえず縦でも横でもポイントからポイントへも移動可能。特定領域を一気に読み込むものがあってもいいかも。

jamesはtex/tspを面白がってくれたので嬉しかったんだけど、入江さんに興味を持ってもらえたのも意外だった。何でかなと思ったらすごいことを思い出した。そういえば<<脱着するリアリティ>>で3次元音響と空間を使った作品を藤幡正樹と一緒に作ってたんだった。浪人時代に憧れまくった作品。

あと、そろそろサインウェーブとかノイズは、MIDIが鳴ってるとださいと感じるのと同じようなものになってるんじゃないか、みたいな話をしたら結構突っ込まれた。案の定三輪さんにも怒られたんだけど、入江さんは「三輪さんと君の感覚にずれはあるだろうけど、そのずれをどう埋めるかはまた相談しよう」と。心強いことこの上ない。楽しみになってきた!

月曜日, 2月 05, 2007

tex/tsp(python)

以前のhap.pyが別の環境で動かずショック。なんかwriteframesrawのエラーみたいなんだけど、よくわかんない。けど、本当にやってみたかったことができた。pythonでテキストファイルから音響生成。テックスティーエスパイ。processing+essと方向性全然違うけど。

.txtファイルに一行ずつ数値を入れておけば音に変換されます。この数値もスクリプトで生成すればいいんだろうけど、今回は適当にタイプしてコピペしました。できる人はやってみて。ちなみに僕が作ったのはこんな感じ。(追記:何かまた他の環境でエラーが出た。ValueError: string length not a multiple of item sizeってなるんだけど、おそらくこれは読み込むファイルの行数が何かの倍数になってないと駄目だよ、とかそういう意味っぽい。)
pythonのコードはtex_ts.py

実行の仕方は
python tex_ts.py 読み込みたいテキストファイル名
です。ソースファイルのSAMPFREQを変えると面白いです。
第三項音楽で大海君がやってたのと同じようなことだね。僕のやつの方が圧倒的に適当だけど。こういう感じでインタプリタをプレイヤーにして、txtファイルで曲配布、みたいにできたらいいな。

tex/tsp(prcessing+ess)

text to sound processing
processing+essで作ってみた。
tex/tsp

brainf*ckとかbefungeみたいな感じで視覚的で変なプログラミング言語で音がするってのが理想なんだけど、とりあえずラピッドプロトタイピングと言うことで。textfield内に以下の記号を打ち込んで作曲。上下キーで過去に打ち込んだデータを再入力もできる(controlP5のおかげ)。
src(音源系):
~
sine wave
^
triangle wave
/
saw wave
[
square wave
=
mute

white noise
ホワイトノイズはスペース(空白)だよ。いいでしょ。

ctl(操作系):
<
pan left
>
pan right
+
volume up
-
volume down
{
sample rate up(44100)
}
sample rate down(22050)
サンプリングレートはもうちょっと色々いじれると面白いんだけど、処理速度の関係で今は2つだけ。これでピッチとか変える。

exmaple
< >/} /{~=^

enjoy!

日曜日, 2月 04, 2007

creative code

processingの本が出るみたい。
Processing:Creative Coding and Computational Art

p5のc++版みたいなopenframeworksも気になるところ。

土曜日, 2月 03, 2007

20070203

借りてるPowerBookのハードディスクもおかしくなってしまって(大変な時期なのに...)、意気消沈しながら岐阜へ買い物。新年に合わせて寝具などを変えようと思ってたのがのびのびになってて今。parcoがなくなって空中分解したVillage Vanguardと無印良品へ。Village Vanguardではパスタのレシピ本、無印では両手鍋やグラタン用の耐熱皿、石鹸やシーツなどを購入。

最近は家事が楽しい。掃除も一度思いっきり綺麗にしたら汚すのが嫌になってこまめに手入れするようになった。確かに気を抜くと自炊もしなくなるし掃除もさぼってしまうんだけど、人を呼ぶとか道具買っちゃうとかすると頑張らざるを得なくなる。そうやって自分を追い込むのが好きっていう性格をうまく利用する。家事にかかる手間なんて時間的にはwebみたりしてなんだかんだだらだらしてるのとそんなに変わんない(むしろwebサーフィンの方が効率には悪影響)ので、リズムを作るためにもちゃんとやっていきたい。おいしい料理ができたら創作意欲も満足するし、綺麗に掃除した時の清々しさはたまらない。というかまさにそれで、家事すらまともにできないで何が情報デザイン、インタラクションデザインだと。アルゴリズムとか言ってんなと。

他の点からも同じことは言えて、例えばいい音楽を追求するように、いいシャンプーが欲しいし、いい感じの皿を探したい。かっこいいグラフィックを求めるように、部屋をかっこよくしたい。本来そうあるべきだと思う。とにかくいいものを探す。なければ作る。