お待たせしました。JAZZMUTANT Lemurコントローラのレビュー第2段です。
前回の記事はおかげさまで好評だったようです。「読んだよ!」という声を、各方面の知り合いから聞きました。フィジカルコントローラに対する興味の強さと、Lemurへの期待の大きさを改めて感じました。今回はLemurの自由度の高さをわかっていただくために、専用エディタソフトウェア" JazzEditor"をつかったインタフェースのデザインについて書きたいと思います。前回書いたように、Mac,・Windows両方のバージョンが用意されています。機能的な違いはありませんが、今回の記事はMac用のソフトウェアを基に書きました。現時点での仕様に基づいてのレビューですので、実際に発売されるものとは異なる可能性があります。ご了承ください。

JazzEditorソフトウェアを立ち上げると、上の写真のような画面が現れます。この上で自分なりのインタフェースをデザインして行くわけですが、まずは言葉の定義を簡単にしておきましょう。
Object (オブジェクト) - フェーダーなどのコントローラ上の各部品。
Interface (インタフェース) - Objectを配置してつくった一つの画面のセット。
Expression (エクスプレッション) - Objectの各パラメータ同士の関係を現す数式。
このうち、ちょっとわかりにくいのが「インタフェース」の概念ではないかと思います。こんな風に考えるとわかりやすいかもしれません - いくら自分でコントローラをデザインできるといっても、画面の大きさは物理的に限られています。曲によってコントロールしたいパラメータはまちまちになるのは、よくあることですよね。曲が変わるたびに、毎回コントローラをロードするのはどう考えても面倒です。そこで、複数のコントローラのセットをいっぺんに本体にロードして、切り替えて使うことが考えられました。このコントローラの画面のセットひとつひとつのことを、インタフェースと呼ぶ! - ということです。
現在用意されているオブジェクトとしては、以下のようなものがあります (JAZZMUTANTのホームページでそれぞれのイメージを見ることができます)。
Area - 指を置いた点のX, Y座標を出力する
Area2D - 複数の点を扱えるArea
Fader - フェーダー
Keyboard - 鍵盤
Monitor - 他のオブジェクトのパラメータの数値を表示する
Multislider - フェーダーを複数並べたもの
RingArea - ノブの代わりになるもの(円周上にそって指を動かす事で数値を変えられる)
Toggle - ボタン
これらはあくまでも現時点で用意されているもので、本体のファームウェアをアップデートする事で簡単に新しいオブジェクトを追加する事ができるそうです。今後、どんどん新しいオブジェクトを追加していくとのことですから、多いに期待して待ちましょう。以下では、具体的にArea2Dオブジェクトを例に挙げて、インタフェースのデザインについて詳しく説明したいと思います。

このオブジェクトは、複数の点に対応したカオスパッド(KORG)のようなものですが、各点が仮想的な物理法則に従って空間上を連続的に動いているのが特徴です (この辺は、私のSONASPHEREの考え方に似ていますね)。平面上に複数のボールを転がして各ボールの座標(X,Y)をとるオブジェクトと考えるとわかりやすいかと思います。当然各ボールの位置は指でタッチすることで操作できます。イメージがわかないという方は、JAZZMUTANTのホームページ上で公開されているMPEGムービーを見てください。こうした動的に変化するインタフェースは、従来の物理的なコントローラでは実現が難しかったものです (フェーダを上下に動かすだけでも難しいことは、ムービングフェーダを搭載したミキサーの値段を見れば一目瞭然!)。
Area2Dオブジェクトをインタフェース上に新しく作成すると、下のような画面になります。このときにオブジェクトの名前を決めてあげる必要があります。オブジェクト名は、オブジェクトのパラメータにアクセスするために必要になるので、わかりやすい名前をつけることをお勧めします。ここでは、area1とつけておくことにしましょう。インタフェース上に置いたオブジェクトは、普通のグラフィックソフトのような感覚で好きな場所にドラッグしたり大きさを変えたりといった操作ができます。


Area2Dオブジェクトには、複数のパラメータが設定されています。すべてのパラメータについて説明するのは、今回のレビューの主題ではないので、ここではFrictionパラメータだけをとりあげましょう。Frictionパラメータは、文字通りこの2次元空間の抵抗を表していると考えてください。Frictionがゼロだと、ボールを動かして指を離した後も、ボールはずっと動き続けます。逆にFrictionが大きいとすぐにボールは止まってしまいます。これらのパラメータは、エディタ上に直接値を入力することで設定できるのですが、ここでは、「別のオブジェクトを使ってパラメータを動的にコントロールする」という、もうちょっと高度なことをやってみます。
そのために今度はFaderオブジェクトを用意して、fader1と名前を付けておきます。Area2Dが各点のX, Y座標をとったように、Faderオブジェクトはフェーダの位置を出力します。ここからが重要なところなのですが、Area2DオブジェクトのFrictionパラメータの入力欄に、「fader1.x」 と入力することにしましょう。fader1.xは、「fader1というオブジェクトが持っているxというパラメータの値」、つまりfader1のフェーダの位置という意味になります。CやC++などのプログラミング言語をかじったことがある人でしたら、構造体、クラスの変数にアクセスする方法と同じと考えるとわかりやすいでしょう。こうしてできたインタフェースを本体にロードすると... fader1のフェーダをコントロールすることで、area1のFrictionパラメータが動的に変化し、指を離した後のボールの振る舞いが変化するというわけです。

さらに、ちょっとした数式を書くことで、値の変化の仕方をカスタマイズすることもできます。例えば、「フェーダの値が小さいときはゆっくり変化して、大きくなるにつれて劇的に変化するようにしたい」といった場合には、「pow(fader1.x, 2.0)」 と書くことができます。これもC言語的な書き方ですが、「fader1のx値の2乗」という意味になります。
(実は、このFaderオブジェクトもFrictionというパラメータを持っているので、area1上のボールの位置でfader1の動きをコントロールするなんてトリッキーなことも可能です。たとえば、area1上にボールが3つあるとして、そのうち最初のボールのx座標をfader1のFrictionに関連づける場合は、fader1のFrictionの欄に 「area1.x[0]」と書くことになります。プログラミング言語の配列の考え方です)
ちょっと細かい話になりすぎたかなという気もしているのですが、理解していただけましたでしょうか? 今回説明したかったLemurの特徴は次の二点にようやくできます。
1. 従来の物理的なコントローラでは実現が非常に難しかった動的に変化するインタフェースを、タッチスクリーン上のグラフィック表示として実現している。
2. オブジェクトのパラメータ間の関連づけを行うことで、インタフェースの振る舞いを画面上で動的にコントロールできる
Lemurが単に物理的なインタフェースをタッチスクリーン上に移したものではないということがわかっていただけると幸いです。
さて、2回にわたってJAZZMUTANT Lemurのレビューを書きましたが、肝心な点がまだ抜けていますね。Lemurからどのようにコントロール信号を受け取るのか、次回はそのあたりを説明したいと思っています。お楽しみに。Salut!
この記事へのトラックバックURL:
http://blog.mysound.jp/electronica/mt-tb.cgi/301
この記事へのトラックバック
» JAZZMUTANT Lemurレビュー from envol! VJ
JAZZMUTANT Lemurレビュー(1) JAZZMUTANT Lemurレビュー(2) メディアアーティストや大学教授、CISCOのバイヤーなどがライタ...
[続きを読む]
Tracked on 2005年05月14日 02:13
» JAZZMUTANT Lemurコントローラのレビュー第2段 from Rainymusk
Traksy:Product / Tech Archive
使ってみたい。。。。...
[続きを読む]
Tracked on 2005年05月15日 02:48
» jazzmutant Lemur from workdiary
【jazzmutant Lemur】
先日...
大学にてLemurというマルチタッチスクリーンデバイスについてのワークショップに参加しました。
とて...
[続きを読む]
Tracked on 2005年06月30日 03:18
» インテリジェントインターフェースLemurデモ from OTO-NETA
Lemur デモンストレーション(traksy) JAZZ MUTANT LEMUR (traksy) JAZZMUTANT Lemur レビューPart.2(...
[続きを読む]
Tracked on 2005年07月12日 02:57

