kxmxyx.github.io

blog

Processingで体験するサウンドアートの世界

これは ドリコム Advent Calendar 2014 の13日目の記事です。

12日目は motsat さんによる 今いるチームが、トラブルを少なくするためにやっている事(人間系)です。

自己紹介

  • twitter@k_m_y_
  • 2013年6月ドリコム入社
  • サーバサイドエンジニアとPMやってます。あと部長。
  • Ruby暦は9年程、Processing歴は7年程、club VJ歴は6年程

VJ
CLASH@ageHaで披露したProgrammer3名による3面同時VJ(中央スクリーンが自分)

UI
VJ中の画面(場所は代官山Air)

本日の話

普段Processingを使ったVJをやっているので、Processingで手軽に体験できるサウンドアートの世界を紹介します。

なぜProcessingか

NAMIKIBASHIに影響を受け、映像制作について興味を持ち始める。 Max/MSP/Jitterに何度も挑戦するが、Maxにどうしてもなじめず、Processingへ。(Max/MSP/Jitter高かったのに・・・)

cyclo.

2011年にリリースされたcyclo.(池田亮司とCarsten Nicolai(Alva Noto)によるユニット)のアルバム「id」

Cyclo.id

このCDには下記のような記述あります。

this record is not mastered in order to keep the original lissajous figures and locus of cycloid movement. to observe, please play on an xy phase scope. any data compression such as mp3 will distort this visualization.

Google先生による翻訳はこちら。

このレコードは、元のリサージュ図形とサイクロイド運動の軌跡を維持するために習得されていない。観察するために、 X-Yの位相範囲で再生してください。任意のデータ圧縮は、 MP3などのこの可視化が歪みます。

翻訳すると逆によく分からない感じになってしまいましたが、つまり、xy phase scope(リサージュ・メーター)でビジュアルが見れるよ、圧縮はするなよ、とのこと。

(当時の自分)リサージュ・メーターなんて持ってないよなぁ・・・作るか。

という訳で、作ったのがこれです。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import ddf.minim.*;

Minim minim;
AudioPlayer out;
int s = 512;
float w =  s/3;
String file = "id#00.wav";

void setup(){
  size(s, s);
  minim = new Minim(this);
  out = minim.loadFile(file);
  out.play();
}

void draw(){
  background(0);
  stroke(255);
  translate(width/2, height/2);
  rotate(-PI/4);

  for(int i = 0; i < out.bufferSize(); i++) {
    point(-out.right.get(i) * w, out.left.get(i) * w);
    point(-out.right.get(i) * w, out.left.get(i) * w);
  }
}

ちなみに、数ヶ月後に発売した日本盤には全トラックの映像が付いてきます。こちらで作られる映像よりも繊細で奇麗です。

※rotateは日本盤の映像と合わせるために後で入れました

※音源は別途購入、又はレンタルしてきましょう

本家の動画を見る

実際の映像は池田さんのサイトで確認可能です。

http://www.ryojiikeda.com/project/cyclo/

cyclo. id#00 (Carsten Nicolai & Ryoji Ikeda) from PopRally MoMA on Vimeo.

cyclo.のアルバムは音源を聴くだけでも十分楽しめる作品ですが、ビジュアルも合わせた方が圧倒的に楽しいのです。

手軽だからこそ、難しい

Processingは結局Javaコードに変換されます。 追加したclassは全てPAppletを継承したメインclassのインナークラスとして定義されます。つまり、1アプリケーションは1つの巨大なclassからなります。ちょっとしたコードを書いて楽しむ分にはお手軽で良いのですが、大規模アプリケーションを組もうとすると結構大変。

逆に考えると、この制約の中で実現するためにどうしたら良いか、色々設計に考えを巡らす必要があるので、プログラミング養成ギプスのような働きをするような、しないような。

少なくとも自分にとっては、この制約の中でVJ用フレームワークを制作したことがプログラミングスキルの向上につながったのは間違い無いと思っています。

まとめ

ドリコムには多種多様なエンジニアが在籍しています。

我々と共に活躍してくれる仲間を募集しています。

14日目は gerry です。