#001 RjDj(Single Album)

iPhone,そして「いつか音楽と呼ばれるもの」#001

App Storeのミュージックカテゴリの目玉であるRjDjについて,その可能性に言及しているBlog記事をあまり見ないので,早い者勝ちってことで先に書いておく(別に勝ち負けはないでしょうが・・笑).
かなり技術的にも突っ込んだ話を含め,iPhoneのプラットフォームとしての可能性を探っていく.

RjDj is promoting a music genre that we call “reactive”.(http://rjdj.me/)

figure_1.PNGfigure_2.PNG
図1. Sceneのリスト画面 / 図2. EargasmのPlay画面

RjDjはReactive Music(反応音楽)のプラットフォームである.それはiPhoneアプリケーションという形で登場した.App Sotreの登場によってReactive Music(反応音楽)という新たな音楽ジャンルが誕生したのだ.Reactive Musicはリリース元のReality Jockeyによると,リスナーの周りにある環境音を積極的に利用するものであるとのことである.

RjDj は,RjDj SingleとRjDj Albumがリリースされているが,SingleはAlbumに収録されているEcholonのみのヴァージョンである.以下,Albumについて解説する.まず,アプリケーションの説明から始めよう.このアプリケーションはまずScene(シーン)と呼ばれる曲をリスト[図 1]から選ぶことから始まる.各Sceneはそれぞれ特徴をもっており,iPhoneのマイク・インプットに反応して様々な曲を聴かせてくれる.例えば,RjDj Singleにも収録されているEcholonは取り込まれた音に様々なディレイ(遅延)をかけるSceneである.Eargasm[図 2]はパッド系のドローンの中にiPhoneのマイクから取り込まれた音が混ざっていき,非常にトリップ感を持つSceneとなっている.RjDjのサイトにあるデモ・ムービーでも使われているWorldQuantizerはマイク・インプットからリズムを作り出すSceneである.このSceneは説明にパーカッシブな(アタックのある)音のある場所での観賞が指示されている[図 3].Noiaも同様に外部音からリズムを作り出すSceneであるが,外部音を加工して使うのではなく,内蔵のドラム・キットとベースが外部音に反応して変化していくSceneである.この他,現在6つのSceneが収録されている.

figure_3.PNG
図3. WorldQuantizer

さて,なぜ冒頭でプラットフォームと書いたのか,順番に説明していこう.
結論から書くと,RjDjはPure Dataというパッチプログラミング言語のRuntime(実行環境)をiPhoneへ移植したものであり,RjDj,反応音楽における曲(楽譜)であるSceneは実はPure Dataのパッチなのである.

Max/MSPとPure Data

このBlogの読者には釈迦に説法かもしれないが,まず,Max/MSP(Cycling ‘74),Pure Data(http://PureData.info/),いわゆる音響合成・生成プログラミング ソフトウェアについての解説から始めよう.
Max/MSPはMac OS XとWindows,Pure Dataはそれに加えてUNIX系OS上で動作するバージョンが配布されている.Max/MSPは有料,Pure Dataはオープンソースのフリーソフトウェアである.ともに”オブジェクト”と呼ばれるブロックを線で繋いでいくことで,比較的簡易にプログラミングが行えるソフトウェアである.

figure_4.pngfigure_5.png
図 4. Max/MSPのプログラミング例 / 図 5. Pure Dataのプログラミング例

例えば,[図 4]は,Max/MSPにおいて440Hzのサイン波[cycle~ 440]を振幅0.5(半分)[*~ 0.5]で鳴らす[dac~](デジタル・アナログ・コンバーター)処理となる.[図 5]は,Pure Dataで同様の処理を行う例である(正確にはコサイン波).

このように,一般的なテキストベースの言語(例えば,C言語)に比べ,処理の流れが把握しやすくなっていること,またGUIと処理内容が一体化していることによる一覧性が特徴である.このことからヴィジュアルプログラミング言語と呼ばれることもある.また,テキストベースの言語がその記述をソースコードと呼ぶのに対し,ヴィジュアルプログラミング言語では[図4,5]のような,オブジェクトの記述・配置情報を一般に「パッチ」と呼ぶ.
[図4.5]は非常に単純な処理であり,それだけで判断を下すわけにもいかないが,Pure DataとMax/MSPが非常に似た機能を持つことが分かると思う.これはMax/MSPはMiller Pucketteという音楽家が作曲のために設計したMaxの発展形であり,Pure DataはMaxを経て彼自身が設計し直したものであるためだ.

Pure Dataの移植であるRjDj

これでRjDjの解説に戻れる.先にも述べたが,実はRjDjはPure DataをiPhoneに移植したものであり,RjDjにおけるSceneはPure Dataのパッチでなのである.Mac OS X,Windows,LinuxなどでPure Dataを用いて作成したパッチがRjDjで,つまりiPhone上で動作しているのだ!

Sceneの構造

では実際にSceneの構造を見てみよう.RjDjのScene制作者用Wiki(http://trac.rjdj.me/)によると,Sceneの構成はStructure of a RjDj Scene(http://trac.rjdj.me/wiki/ComposerGuidelines)にあるとおり,以下のようなフォルダー階層を持つ.
MyScene.rj
|- _main.pd
|- image.jpg
|- Info.plist
|- myloop.wav
`- myabstract.pd

_main.pdがパッチの中心であり,その他の.pdはパッチャーと呼ばれるパッチで作ったオブジェクト(パッチ・オブジェクト)である.image.jpgがSceneの表紙[図 2]で表示される画像となる.パッチをRjDjで動作させるためには,いくつかのルールに則ってパッチを作る必要があるが,必要なファイルを揃え,RjDjに転送するだけで,パッチが再生できる仕組みになっている(現在,ユーザーがRjDjにSceneを転送する仕組みは提供されていない).

パッチの仕組み

さらに深く,RjDjの仕組みを理解するために,RjDj Single収録され,RjDj Albumに収録されている6つのSceneの中で最も単純なパッチ構造をもつSceneであるEcholonのパッチを解説してみよう.[図 6]は見やすくするために,オリジナルから少々レイアウト変更し,2つオブジェクトを追加している.

準備

お使いのコンピューターにSubversionがインストールされていれば
ターミナルで
svn co http://rjdj.me/svn/rjdj_scenes/trunk rjdj
を実行することでSceneがダウンロードできる.2008.11末現在,リリーズ済みの6 Sceneを合わせて既に28のSceneが登録されている.これらのパッチの中から例えばEcholonをMac OS X,Linuxなどで動作させるためには,Pure Data(Pd-extended)をダウンロードし,音が出ることを確認した上で,Sceneとともにダウンロードされるrjdjlibフォルダ内のファイルをEcholon.rjフォルダ内にコピーし,[図 6]の”for test play”以下,2つのオブジェクトを追加するとよい.これにより,iPhone上でSceneを選んだ際に送られる再生用のメッセージがシミュレートできる (同様にplay 0で停止のメッセージとなる).
これらの準備が整い,お使いのコンピューターにマイク・インプットがあれば,iPhoneでEcholonを再生しているのと同様に動作する.

figure_6.png
図 6. Echolonのパッチ(_main.pd)

Echolonの処理内容

パッチプログラミング経験が無い方には少々難しいが,簡単に説明していこう.このパッチは大きくわけて,playback direct input部分とtest1と名付けられた短い録音(ディレイ音)の処理部分からなる.このtest1部分はtest1という名前の短いレコーダーを使っていると考えてもらえばいい.playback direct input部分で,マイク入力をそのまま再生しながら,加えてディレイであるtest1を再生する仕組みである.
一つ工夫がなされているのは,test1を[vd~]というディレイ再生用オブジェクトのディレイ時間をランダムに変え,ヴァリエーションを生み出していることである.test1にはlop~(ローパスフィルター)で1000Hz以下の音がカットされ,playback direct input部分との差異化がなされている.最終的にこのディレイ音をL/Rそれぞれ違う長さ(1500msと1000ms)で再生することで音に広がりを付加している.
このようにテキストベースの言語で書いたのではかなり大変な処理を,オブジェクトを繋ぎ合わせることで実現でき,かつ,処理を[図 6]のように一覧できるのがパッチ・プログラミングの特徴である.

soundinput/soundoutput

soundinput/soundoutputについても解説しておこう.Sceneの構造の解説の際にも書いたが,Pure Data,Max/MSPともに,オブジェクトを組み合わせて作ったパッチを,オブジェクトとして利用できる「パッチャー」という仕組みが提供されている.soundinput/soundoutputともに,[図 6]ではオブジェクトのように見えるが,実はこれはパッチなのである[図 7].

figure_7.png
図 7. soundoutputパッチャーの内部

これによって,ある機能をパッチで実現出来た場合,それをまとめてオブジェクトとして扱うことで拡張がしやすくなるという利点がある

RjDjにおけるPure Dataの移植手法

ソフトウェアの移植において,問題となるのはOSに依存したAPI(アプリケーション・プログラミング・インターフェイス.ここではOSの持つ機能を使うためのコード)部分であり,特にグラフィックとオーディオ処理部分が問題となる.RjDjにおいて問題となるのはオーディオ部分である.RjDjはオーディオ・インプット/アウトプット専用のパッチャーsoundinput/soundoutputを使用するように指示してあり,おそらくiPhone上ではこのパッチャーオブジェクトをiPhone専用の処理に置き換えることで対応していると思われる.この仕組みによりコンピューターとiPhone上でのパッチの動作に互換性を持たせている.

figure_8.png
図 8. send / recieve オブジェクトの使用例

また,iPhone特有のデバイス,例えば,加速度センサーの値はPure Dataのsend/receiveオブジェクトを使うことで可能としている.どういうことか.Pure Data,Max/MSP共に,[図 8]のように,共通の名前(ここではmessage)を持つsend/receiveオブジェクトを用意することで,sendに与えられたデータを同じ名前をもつreceiveオブジェクトに,線を繋がず送ることができる[図 8].
この仕組みを利用し,RjDj(本体)がsendオブジェクトを使う場合と同様のデータを送り(つまりsendの動作をシミュレートし),パッチ内のrecieveオブジェクトがその値を受け取ることでiPhone特有のデバイスのデータを扱えるようにしている.例えば,加速度センサーの値は[receive accelerate]とすることで取得可能となっている(現在収録のSceneは加速度センサーを利用していないようである).この仕組みの利点は,通常,加速度センサーを持たないコンピューター上でも,[send accelerate]にiPhoneの加速度センサーの値をシミュレートした値を送るだけで,iPhone上での動作がシミュレーションできることである.iPhoneとPure Dataの特性を理解した,非常によく考えられた移植手法だと言えるだろう.

なぜPure Dataなのか

なぜPure Dataの移植というアプローチがとられたのか,今までパッチ・プログラミングの利点について述べてきたため,既にお分かりかと思う.RjDjのような,いわゆるインタラクティブな音楽のプログラミングは,テキストベースの言語で行うことも可能であるが,比較的難しい.最も単純な構造をもつEcholonでさえも,iPhoneの開発用言語であるObjective-C(もしくはC言語)で記述すれば,おそらく数千行のコードと数十倍の時間がかかるだろう.Pure Dataのように,オブジェクトを繋ぎ,動かしながらその動作を見つつ調整できたほうが簡単で,一覧性もある.何より,ヴィジュアルプログラミング言語はオブジェクトの接続を行いながら,実際の処理,つまり音を出しながら試行錯誤が可能である.これは単純に時間的なコストとスキル習得の難易度だけでは計ることができない利点である.そこでRjDjが選択したのが,Pure DataのiPhoneへの移植であったのだ.これによって,豊富な処理能力を持ったコンピューターで試行錯誤の上,パッチを作り,そのパッチをiPhone上で動かすということが可能となった.また,オブジェクトが機能を抽象化して提供しているため,例えば,フィルター(例えば[lop~])をかけたい場合,フィルターのオブジェクトに接続するだけで処理が実現できる.思いついたアイディアをすぐに試すことができるのだ.

もう一つ,この選択は大きな可能性を提示したと思われる,それはiPhone(App Store)とパッチプログラミング文化との接続がなされたということである.

パッチプログラミング文化との接続

2008年11月末現在,自身のSceneを動作させることはできないが,おそらく対応がなされことと思われる(希望的観測・憶測).
(もし対策されなくとも)これは,RjDjの登場により,iPhoneという音楽を聴くためのデバイスとMax/MSP・Pure Dataにおけるパッチプログラミング文化が接続されつつあることを意味する.
ここまで,Pure DataとMax/MSPを並列してきたのは.それぞれは別の名前をもつソフトウェアではあるが,共通の祖先をもつパッチプログラミング文化としてとらえる必要があると考えるからだ.実際,Pure Dataの音響処理拡張オブジェクトがMSPとして移植され,Max/MSPが誕生したという歴史的事実に加え,双方共通のオブジェクトが3rd partyによって開発・移植されているものも多い(例えばfreeverb~).RjDjはPure Dataの移植を選択したことで,この文化を継承,さらに発展・洗練させる可能性を獲得したと考える.
筆者はPure Dataのコミュニティに属したことがないため,Max/MSPに限って話を進めると,Max/MSPはコミュニティが比較的活発で,パッチを公開しているユーザーも多く存在する(した).しかし,それを音楽として配布するというよりは,アプリケーションとして,ツールの配布という面が強かったように思う.しかしRjDjというプラットフォームの登場によって,CDでもmp3でもなく,BloomのようにiPhoneアプリケーションでもなく,パッチ自体が曲としてやりとりされる状況が生まれつつあるのだ.これによって,パッチプログラミング言語で作らているが,配布のためにCDなどのメディアに固定され配信されていた曲が,新たな配信方法を得たのである.iPhoneで反応音楽を,もしくはもっと他の形の音楽を配信するという明確な目標のもとに,既存のPure Data・Max/MSPユーザーによる,パッチプログラミング文化の発展・洗練は十分起りうるだろう.また,パッチプログラミング文化は比較的マニアックな層がその中心であったが,膨大なiPhoneユーザーによる新たなコミュニティ形成の可能性も十分ある.
もう一つ,RjDjは移植のために商用のMax/MSPではなく,オープンソースであるPure Dataを選択するしかなかったのだが,それによって,RjDjがPure Dataにその成果を還元することも十分あるだろう.このように,Pure DataのiPhoneへの移植は多くの可能性を提示することとなった.

対応デバイス・機能拡張の可能性

RjDjの今後の発展について検討しておく.
Scene制作者用Wikiに「Information relating to porting the RjDj client to new host machines」というページがあり,Androidの情報があることから,移植が検討されているようであり,今後も目が離せない.RjDjの拡張としては,SHOUTcast Radio(http://www.shoutcast.com/)へのストリーミング等,ネットワーク対応が検討されているようである.また,Pure DataはC言語でオブジェクトを開発することが可能である.Pure C(C言語のみ)で書かれたオブジェクトであれば,iPhone OSとコンピューター(例えばMac OS X)双方に対応できるため,オブジェクトによるRjDjの拡張も可能である.
そのような拡張オブジェクトとして,Pure Cではないが,多くのOSが対応している3DグラフィックAPIであるOpenGLをベースとした,グラフィックの拡張であるGEM(Graphics Environment for Multimedia)が既に有り,RjDjへの移植がなされればBloomのようなSceneが作成可能になるかもしれない*.
Reactive Musicにおいて,グラフィックはおまけかもしれないが,RjDjの可能性がReactive Musicに限定されるのは惜しい.

*注. iPhoneが採用しているOpenGL ES(OpenGL for Embedded Systems)はOpenGLと一部互換性がないため,移植は比較的困難であろうが.

RjDjが生み出すコンテクスト

Max/MSP,Pure Dataが10年以上の歴史を持つように,Reactive Music,それ自体は以前から存在していたとも言える.例えば,自身の声をリアルタイムで録音し,プロセッシングするLiveパフォーマンス等が多く見受けられる.しかし,RjDjの新しさはそこではない.iPhoneのポータビリティによって,環境音を積極的に取り込むReactive Musicが持ち運べるようになったことが新しいのだ.
また,注目すべきなのは,Reactive Musicはその音楽の重要な要素である環境音のコントロールをユーザーに”委譲”していることである.つまり,Sceneの制作者は,どのような環境で聞かれるのかは予測できないし,どのような環境で聞くかはユーザーに任されている(しかし,WorldQuantizerのようにヒントを提示することは効果的であると思う).
その結果,Sceneは環境音次第で様々に変化する.しかし,コントロールの全てを放棄しているわけではなく,その変化はアルゴリズムによって(Echolonの仕組みを思い出して欲しい)一定の構造を持っている.このアルゴリズムによる構造の制御がReactive Musicにおける核である.そして適度なコントロールの放棄によって,多様なヴァリエーションとコンテキストを生み出すことに成功している.

RjDjを起動したiPhoneを持って外を歩いてみよう.車が左右に通り過ぎていく.その発する加速音がReactive Musicを”演奏”する.砂利道を歩く.ザク,ザクという音が次々とリズムを生んでいく.そのリズムがあなたの歩くリズムを変え,音楽も変わる.その変化に高揚し,立ち止まり,口笛を吹いてみる.そのメロディもまた音楽となっていく.見ている景色,そこにあるものの変化と音楽が一体となり,全てが音楽のように感じられる.シーン(景色)がScene(パッチ)を演奏する.Sceneはシーンを変えてしまう.ウォークマンによる,いつもの景色が違って見える,という経験から,RjDjによって景色が音楽を奏で,その音楽によって景色が変わってしまう,という経験へ.そこで鳴る”音”自体は聞きなれた環境音であり,決して新しくはない.しかし,RjDjによる”体験の新しさ”がいつも聞いている音を新しく響かせるのだ.このようにRjDjは,コンテクスト(= 意味を決定する背景・状況)の重要性を提示している.また,以上のことから,なぜ曲をSceneと名付けたのかも明白である.

以上のように,RjDjはプラットフォームとしてのiPhoneの可能性をいち早く察知し,かなり理想的な形での実装と配信を行ったと思う.そして,iPhoneとApp Storeを活かし,様々な可能性を見せてくれている.
「生成音楽」「環境変換装置」というキーワードを早くから提唱していたAudible Realitiesのメンバーとしては,この二つを組み合わせ,さらにパッチプログラミング文化とも接続してしまったRjDjの登場には,やられた!としか言いようがない.
続けて心情告白するならば,RjDjは(SONASPHERE以降の)ここ5年間で一番の衝撃であった.ソフトウェアとしても,音楽としても.まさに,やられた!(2)

RjDjの近ごろの状況はというと,リリース直後の一度のupdate以来,updateされていない.そのため,かなり大きな変更を伴って登場してくれるのではないかと期待している.

ちなみに筆者は通学の自転車でRjDjを聴くことが日課となっている.
(自転車だと,SceneはEargasmがお勧め)

One Comment

  1. Tokyo Max Users Group » Blog Archive » RjDj: スタッフ制作デモ2 said:

    [...] #001 RjDj(Single Album) [...]

Leave a Reply