http://tokyomax.jp/rjdj/
http://rjdjtokyo.tumblr.com/
数日たちましたが、芸大の芸術情報センターで行われた、RjDj Sprint Tokyoにいってきた。初日だけだけど。二日目の内容が気になるところではあるけど、とりあえず初日で一通り自分でRjDjのシーンを作るための手順などは説明されていたので、備忘録的な意味で自分でまとめてみた。
1. 環境構築
自分の環境はMac OS Xなので、すべてMacベースで話を進めていく。同じものがWindows用にも用意されているので、ほぼ同じような手順で進められるとは思うけど。あと、PureData自体についての説明は省略するので、他のサイトなどで確認を。
まずは以下のものを用意します。
・Pd-extended (http://puredata.info/downloads)
RjDjのエンジン部分でもあるPureData本体をダウンロードする。RjDjのサイトでは、vanilla版を使うように、という説明が書かれていますが、iPhoneのタッチパッドのシミュレーションや描画のシミュレーションなど一部でgemなどを使ったりすることがあるので、extendedの方がよさそう。
・RjDj Composers Pack(http://more.rjdj.me/~fbar/cop/)
RjDjComposerPack_mac.zip というファイルをダウンロードする。ただし、2009/09/13現在の時点で一部足りないファイルがあるので、 pd-missing.zip もダウンロードする。いずれは一つのファイルにまとめられるはず。
ダウンロードできたら、まず、Pd-extendedをインストール。dmgファイルをダブルクリックすると、ライセンス確認の画面がでてくるのでOKをクリックし、チェックサムの確認が終わったあとに以下のようなウィンドウが表示される。このうち、Pd-extendedのアイコンをApplicationフォルダのアイコンにドラッグ&ドロップしてコピーします。これで完了。当然、デスクトップにマウントされているディスクイメージは取り出しておく。

続いて、RjDj Composers Packを解凍。pd-missing.zipの方も解凍。それぞれ、出来上がったフォルダをみるとこんな感じ。


このうち、pd-missing.zipを解凍して出来上がったpdフォルダの中身すべてを、RjDjComposerPack_macフォルダの中のpdフォルダの中にコピー。最終的には、RjDjComposerPack_macフォルダの中のpdフォルダはこんな感じに。

ここまで用意ができたら、次はPdの方の環境設定。先ほどApplicationフォルダにコピーしたPd-extendedを起動する。起動すると、こんな画面が表示されるはず。

続いて、Pd-extendedメニューからPreferencesを選んで、さらにその中のPathを選択する。

PD search path for patches and other filesというウィンドウが表示される。

表示されたら、Newボタンをクリックする。Add a new pathというファイル選択画面が表示されるので、先ほど解凍したRjDj Composers Packの中のpdフォルダを選択してChooseボタンをクリックする。

すると、選択したフォルダの場所が新たにPD search path for patches and other files画面の中に追加される。これは、RjDj関連のファイルをPd-extendedから参照できるようにするために登録している。

あとは、Applyをクリックして、OKボタンをクリックしてウィンドウを閉じる。
設定が正しいか確認するために、RjDj Composers Packの中のexample_scenesの中のHelloWorldWorldWorld.rjフォルダ内にある _main.pd というファイルを開く。以下のように、soundinputとsoundoutputのところに緑のvolumeスライダーが表示されていれば正しく設定されている。

確認ができたら、いま開いた _main.pd を閉じる。以上で環境設定が完了。
2. テンプレートを複製する
RjDj Composers Packには、シーン制作のための基本ファイルセットをまとめたテンプレートが用意されている。SceneTemplate.rj というフォルダがそれだ。シーンを作る際にはこのテンプレートを複製することから始めることになる。Scene Template.rj を選択して、ファイルメニューから複製を選ぶ。

複製されたフォルダの名称を変更する。ここでは、test1.rj というフォルダ名に変更する。必ず、フォルダ名のあとに .rj をつけるように。あと、日本語文字は使わず、半角の英数字のみで名称を付けるようにした方が安全かも。

テンプレートとして用意されているファイルの中身は以下のとおり。
・_main.pd
シーン作成するファイル。RjDjに転送された際、このファイルが自動的に読み込まれて実行される。この中に、音響処理部分を記述することになる。ファイル名を変更すると読み込まれないので注意すること。
・image.jpg
RjDjに読み込まれた際に表示されるイメージファイル。320x320のサイズのものであれば問題ないので自分の好きなものに置き換えることが可能だが、ファイル名は必ずimage.jpgとしておくこと。
・info.plist
XMLで記述された、シーンの基本情報。author(制作者名)、description(シーンの概要)、name(シーンの名称)、そしてcategoryを記述するようになっているが、現在のところcategoryは使われていないらしい。Mac OS Xだとこのinfo.plistをダブルクリックするとProperty List Editorというアプリケーションが起動されるので、この中でそれぞれの項目を編集することになる。Mac OS X以外の環境では、テキストエディタでこのファイルを読み込み、該当する箇所を編集することになる。これもファイル名は変更しないこと。

・LICENSE.txt
シーンのライセンス形態を説明しているファイル。どうやらGPLが採用されているようだ。GPL以外のライセンスで公開したい時にどうするのかは実は確認できていないので、機会があれば聞いてみたい。
・rj
フォルダの中に様々なPdのアブストラクトファイルが含まれている。これは、RjDjチームが用意しているライブラリで、シーン制作を非常に容易にしてくれている。このライブラリはかなりよくできているので、シーン制作以外の時にもかなり有益なものになるはず。

3. _main.pdを開く
先ほど作成したtest1.rjの中の_main.pd をPd-extendedで開く。以下のような画面が表示される。

soundinput と soundoutput があるので、その間に音響処理のための部分を構築すれば、iPhone上のRjDjに読み込まれた際に、マイクからの音(soundinput)を処理してそのままイヤホン(soundoutput)に結果を出力する、というシーンが作れるわけだ。
右側にいくつかボタンがあるが、declareで始まっているものは、_main.pd と同じ階層にあるファイルと、rjフォルダの中にあるファイルを参照するために必要なものなので削除しないように。pd LICENSEは、クリックすると作成したシーンがGPLライセンスベースであることを説明するウィンドウが表示される。これも基本的にはそのまま残しておく。
一番下にあるOVERVIEW というボタンをクリックすると、以下のようなウィンドウが表示される。

これは、テンプレート内に用意されていたrjフォルダ以下にあるライブラリの機能を説明している。例えば、effectsのeをクリックするとRjDjライブラリで用意されている様々な音響効果のアブストラクトが表示され、それぞれ簡単な説明がついている。

effectsの中の e_fbdelay というアブストラクトオブジェクトをクリックすると、その中の構造が表示される。

これだけではどのように使っていいかわからないので、いったん e_fbdelay.pd の画面を閉じて、今度はcontrolキーを押しながら e_fbdelay というオブジェクトをクリックしてみる。マウスボタンが2つある場合は、右クリックするとでてくると思う。すると、Properties、Open、Helpという項目からなるポップアップメニューが表示される。

この中のHelpを選ぶと、そのe_fbdelayのヘルプウィンドウが表示される。ここには、それぞれの入出力がどういう役割を持っているか、そしてその横にサンプルのパッチが用意されている。

このように、RjDjで用意されているライブラリにはすべてヘルプファイルが用意されているので、そのオブジェクトをどう使うかわからない場合は、まずはそれぞれのヘルプファイルを参照するといいだろう。
4. _main.pd を編集
実際に何らかの音響処理をするシーンをまずは用意してみよう。先ほど、RjDjライブラリの中から参照した、e_fbdelayというフィードバックディレイの効果をつけてくれるオブジェクトを使ってみる。iPhoneのマイクから入力されたサウンドソースを、左右それぞれ違うディレイタイムを設定して、ディレイ音が左右からパラパラと出てくるようなものを考えてみた。以下のような感じでパッチを用意してみる。

e_fbdelayは二つの引数を指定する。一つはディレイバッファの識別名称。もう一つは、最大のディレイタイムで単位はミリ秒。今回の場合、同じディレイバッファを違うディレイタイムで処理すればいいので、識別名称は同様のものを用意している。最大ディレイタイムは左右で違うディレイタイムを設定できるよう変えてある。
実際のディレイタイムの指定は、e_fbdelayオブジェクトの2番目のインレットにシグナル形式で値を渡す。そのため、ナンバーボックスのあとに sig~ が用意されている。ヘルプファイルを参照すればわかるが、それ以外のパラメータについては3番目のインレットに送ることで設定できる。ここでは、feedbackを0.3という値に設定。さらに、feedbackしすぎてハウリングを起こす傾向にあるので、最終的な出力をしぼってあげるために 0.1 をシグナルにかけることにした。

なお、ディレイタイムなどそれぞれの値はloadbangオブジェクトで起動時に設定されるようにしておかなければならない。iPhone上のRjDj内では基本的にはいま見えているオブジェクトやナンバーボックスなどは表示されないので。後ほど説明する加速度センサーやタッチパネルの情報を使って値を変更することはできるが、それ以外は基本的にボリュームスライダしかないので注意が必要。
調整ができたら_main.pdを保存して閉じる。
5. image.jpgとinfo.plist
_main.pdが用意できたら、続いてはimage.jpgとinfo.plistを編集する。image.jpgの方は、特に何もなければデフォルトのRjDjのイメージがそのまま利用されるが、なにか他の画像に差し替える場合は320x320のJPEG形式で画像ファイルを用意し、ファイル名をimage.jpgに修正して既存のものと差し替えることになる。
info.plistの方は、author、description、nameをそれぞれ編集する。手元では以下のようにしてみた。

6. rjz形式のファイルを用意する
実際にRjDjに転送してシーンとして利用するには、編集したtest1.rjフォルダをrjz形式に変更する必要がある。rjz形式というのは、.rjフォルダをzipでアーカイブした形式をさす。なので、Mac OS Xの場合は、test1.rjフォルダをコントロール+クリック、あるいは右クリックして「"test1.rj"を圧縮」という項目を選ぶことでzip形式にアーカイブできる。

出来上がったアーカイブはそのままだと「test1.rj.zip」というようになっているので、Finderで最後の .rj.zip の部分を .rjzに変更する。と、やりたいところなのだが、このままだとちゃんと拡張子がrjzとなっていない可能性が大きいので、次のようにして.rjzとなるよう変更する。
test1.rj.zipをコントロール+クリック、あるいは右クリックして「情報をみる」を選ぶ。

「"test1.rj.zip"の情報」というウィンドウの中の「名前と拡張子」という項目を開く。「拡張子を隠す」という項目にチェックがついていたらこれを外し、ファイル名のところを「test1.rjz」となるよう修正してウィンドウを閉じる。これで問題なく .rjz 形式のファイルが用意できる。

7. rjzファイルをiPhone上のRjDjに転送
あとは、iPhone上のRjDjにrjz形式のシーンファイルを転送して実際に動くかどうか試す、ということになる。RjDjでは、シーンファイルを転送するための方法が二つある。一つは、rjdj.me で用意されているWEBサービスを使う、というもの。もう一つは、RjDj Composers Packに付属のrjzserverというproxyサーバーを利用する方法。
ここでは、rjdj.meで用意されているWEBサービスを利用する方法について紹介する。
・http://rjdj.me/sharescene/ にアクセスしてアカウントを作成する
すでにrjdj.meにアカウントがある場合は飛ばしていいが、ない場合はまずはアカウントを作る。URLにアクセスすると、画面の右上の方に「signup」というリンクが用意されているので、これをクリックする。

すると、アカウント作成のための画面が表示されるので、「desired username」には希望するユーザー名を入力し、あとはメールアドレスとパスワードを入力する。なお、日本語が考慮されていないシステムであるため、各項目は必ず半角英数字で入力するように。

入力できたら、「get inside」ボタンをクリックする。うまくアカウントが作成されると「Welcome! You are now logged into RjDj.」というメッセージとともにこんな画面が表示される。これでアカウント作成は完了。

・再度、http://rjdj.me/sharescene/ にアクセス
アカウント作成後、再度 http://rjdj.me/sharescene/ にアクセスすると、先ほどと違って今度はシーンアップロードのための画面が表示される。このフォームに必要な情報を入力して、rjdj.meのWEBサービスにシーンファイルをアップロードすることになる。

・必要項目を入力
まず、「Rjzfile」というところにアップロードするシーンファイルを指定する。フィールドの横にあるボタンをクリックして、先ほど用意したtest1.rjzを選択する。
「Name of your scene」には、シーンの名称を付ける。今回はテストのためのアップロードなので、「test1」としておく。ここにあまり長いものをつけると、ダウンロードの際のURLが長くなるのでなるべく簡潔に。なお、先ほどのアカウント作成の時と同様に、ここでも日本語の文字は使わず、すべて半角英数字で入力するように。
「Notes for people downloading this scene.」には、簡単にどういうシーンなのか記述する。今回はテストシーンなので「test scene using e_fbdelay」としてみた。くどいようだが、ここも半角英数字で入力するように。試しに日本語で記述してみたが、エラーになってアップロードができなかったので。
次の二つあるチェックボックスについて、最初のものは、アップロードするシーンを一般公開する際にチェックをつける。ここにチェックをつけると、RjDjチームの方でシーンのチェックが入り、問題がなければ、http://rjdj.me/music/ にあるような形で一般公開され、誰でもダウンロードができる状態になる。今回はあくまでもテスト用のアップロードなので、チェックは外す。
二つ目のチェックボックスは、アップロードしたシーンを有償ダウンロードにしたい場合にチェックをつける。ここにチェックをつけると、RjDjチームからメールでコンタクトがあり、販売するにあたっての手続きが進められることになる。今回はあくまでのテスト用のアップロードなので、チェックはつけない。
最後の「Notes for the RjDj team」は、RjDjチームへなにか連絡事項があれば記入する。今回は当然何もないので空欄のままでいい。

・アップロード
以上、用意ができたら最後に「upload」ボタンをクリックする。シーンファイルのサイズによって異なるが、多少時間がかかるので、途中で止めたりせずに少し待つ。うまくアップロードされると、以下のような画面が表示される。

ここで注意したいのが表示されているURL。今回は、「Name of your scene」に「test1」と入力したので、 URLが
http://rjdj.me/sharescene/test1/
というようになっている。シーンの名称に指定した文字列がそのままURLに反映されるため、スペースを入れたり、変な記号を使うことはさけた方が安全。ちなみに、自分の場合は、パッチ制作の時点で何回かアップロードし直す必要があったので、
http://rjdj.me/sharescene/test1-5/
というURLになってしまった...。test1の方をダウンロードすると激しくハウリングを起こすので使わない方がいい...。
さらに、このURL が実際のシーンのダウンロードの際に必要となる。今回の場合、シーンは一般公開されないため、このURLをどこかにコピーするかメモしておかないとわからなくなるので注意が必要。このURLをiPhone/iPod touchで読んでいるメールアドレスに送る、というのが最も簡単な方法かも。
以上で、rjdj.meのWEBサービスを使ったシーンファイルのアップロードが完了する。
8. 実機で確認
アップロードしたシーンを実際に実機で動かし動作するか確認してみる。先ほどのURLをiPhone/iPod touchのメールアドレスに送り、メッセージ内のURLをtapするか、Safariを起動してURLを入力してアクセスする。

アクセスすると、installというボタンがあるので、これをtapする。

すると、RjDjが起動してファイルのダウンロードが開始される。

無事ダウンロードできると、Installed test1というメッセージが表示される。

これで、シーンのインストールは完了。あとは、シーン一覧の中にあるtest1という項目をtapして実際にシーンを動かしてみる。

さて、無事うまく動いているだろうか???