DATA チュートリアル 1:
データの可視化

イントロダクション

このチュートリアルでは、Max 環境で数値データのストリーミングを作成したり、観察したりするための様々なテクニックについて調べます。ここでは multislider オブジェクトに注目します。multislider にはデータの値を作成するモード、およびデータの値をモニタするモードという2つのモードを持っています。さらに、watchpoint のモニタについても見ていきます。これはデバッグツールで、これを使うと、データを生成しながら、パッチコード内に流れるメッセージを見ることができます。

Max のようなモジューラシステムを使用する際には、オブジェクト間で受け渡されるメッセージのすべてを追跡することが難しい場合があります。メッセージや値をモニタすることができるツールの利用は、パッチの微調整を行なう場合や、パッチの動作上の問題点を突き止める場合の手助けになります。ここで使用する2つのツール、multislider と watchpoint はデータを追跡するために2つの異なったメカニズムを提供します。multislider がランタイム(実行時)のモニタリングに適した手段であるのに対し、watchpoint はプログラミング時やデバッグ時に威力を発揮するものです。

データ生成ツールとしての multislider

チュートリアルを開いて下さい。

チュートリアルを見て下さい。このパッチには、様々なタイプのグラフを生成し、表示するオブジェクトがたくさんあります。実際には、これらは同じ multislider というオブジェクトのすべてのバージョンです。1 と表示されたパッチから見ていきましょう。ここには、multislider の様々なスライダを順に進みながら、ステップごとに MIDI によってノートを生成するシーケンサがあります。multislider の出力は 0 から 127 の間(標準のMIDIノートの範囲)の値を取り、16 ステップ分のシーケンスデータを提供します。toggle によって metro をオンにすると、counter オブジェクトによってステップナンバーが生成され、prepend オブジェクトによって fetch メッセージが作られ、さらにこのメッセージによってmultislider の16個の値を問い合わせていることがわかります。これが、このステップシーケンスを行なうパッチの基になる部分です。ここでは、自動的に生成されたデータ(パッチの中のuzi と drunk を中心としたセクションで実行されます)を使用することも、multislider オブジェクトの個々のスライダを直接編集して作られたデータを使用することもできます。

このアプリケーションでは、multislider の右アウトレットからの出力が使われています。multislider がスライダのバンクとして使用されている場合(これは、Slider Style というアトリビュートがThin またはBar に設定されている場合です)、左アウトレットはすべてのスライダの値を1つのリストとして出力します。この出力は bang メッセージが送信された場合、または、完全な新しいデータセットが送信された場合にのみ行なわれます。fetch メッセージは、multislider の右アウトレットから、個別のスライダの値(スライダのナンバーは1から始まります)を出力させます。

multislider オブジェクトのインスペクタを眺めて、様々な設定があることに注意して下さい。このオブジェクトは選ばれた色のセットと、4段階で変化する選ばれた "candycane" 色を持っています。インスペクタを閉じて、multislider の中でドラッグすると、シーケンスによって演奏されるメロディを変更することができます。uzi に接続された button オブジェクトをクリックすると、新しい drunk によるメロディが生成されます。

データ表示ツールとしての multislider

2 と表示されたパッチャー領域を見て下さい。ここではスクリーン上のマウスの動きをモニタリングしています。toggle を使ってパッチの上部にある metro をスタートさせ、スクリーン上でマウスを動かしてみて下さい。上側にある2つの描画エリアでは、カレントのマウス位置のX、Y 座標を(WTHITM パッチオブジェクトによって)追跡しているのに対し、下側の大きなグラフ領域では、これらの値を、上にあるロジックによってスケールし、変更して、連続して移動する4つのラインとして表示していることがわかるでしょう。

これまでのチュートリアルでは、lcd オブジェクトを使って、マウスの追跡情報をクリエイティブな手段で描画していました。しかし、ここではその代わりに multislider オブジェクトを使っています。multislider の最も一般的な使用方法は、スライダのバンクとしての使い方です。しかし、multislider には、データのストリームから得た情報の表示に便利なモードがいくつかあります。このモードは "Slider Style" アトリビュート(インスペクタにあります)のオプション項目になっています。これらはScroll オプションと呼ばれます。このオプションでは、入力された値を受け取って、表示されているデータの最後に追加し、表示をスクロールしてその値が見えるようにします。この機能は、エレクトロニクス分野でのテスト機器などでよく見られる、スクロールするグラフィック表示と同じような、シンプルなインターフェイスを提供します。

パッチの上部にある2つの小さな multislider オブジェクトは、WTHITM パッチオブジェクト(以前のチュートリアルでも使用したものです)から入力されたデータを表示します。このデータは、マウスの動きを 0.0 から 1.0 の範囲の数値にスケールしたものです。この値が multislider に(表示のために)入力され、その後、multislider からその下の小さなパッチ部分に送られます。ここでは、このデータから4つの値(X 座標、Y座標、およびスクリーンの中心からの距離とその角度を表す1組の極座標)を生成しています。この値は下の multislider に送信され、どちらもどぎついグラフィック(赤と緑!)で表示され、独特の表示になっています。この multislider では4つのデータストリームは同時に表示されます。

これを lcd オブジェクトを使って行なおうとすると、かなり難しい処理になります。しかし、multislider でこのようなマルチライン表示を行なうことは簡単です。ここでは、4つのスライダを作って、表示領域(この場合は -1.0 から 1.0)を設定し、あとはオブジェクトの魔力を発揮してもらうだけです。このケースでは、マウスのX 座標と Y 座標を使って、4つの異なったデータストリームを作っています。そのストリームのそれぞれはグラフの独立したセクションとして表示されています。

Watchpoint でデータストリームを見る

multislider は数値データのストリームを見る場合に便利ですが、Max には同様にデータをモニタする組み込みシステムがいくつかあります。すでにオブジェクトやパッチコードでいっぱいになったスクリーンがある場合、multislider のような大きなグラフィック表示によってスクリーン上のスペースを取られたくないと考えると思います。また、データが非常に速く生成されている場合や、非常に多くの場所から送信されている場合、これをMax ウィンドウに表示させることもしたくないでしょう。何か良い手段はないでしょうか?それが watchpoint です。

watchpoint は、パッチに変更を加えずに、パッチコードが送信するメッセージを見ることができるようにするためのアタッチメントです。パッチコードをクリックして、コンテキストメニューを表示させると、2つのwatchpoint に関するオプション、"Add Watchpoint Monitor" と "Add Watchpoint Break" があることがわかります。最初のオプションでは、watchpoint をセットし、メッセージの値をモニタすることができるようにします。これに対し、2番目のオプションでは、選ばれたパッチコードでメッセージを見るときにパッチの動作を停止させます。この機能は、以前のチュートリアルでメッセージの順序を見るために使用しました。パッチコードを通過する値をいくつか見てみましょう。

Debug メニューから Watchpoint を選ぶことによって、Watchpoint を管理することができます。この項目を選ぶ、1つのwatchpoint ごとに1列(パッチコード上の、色付きの数字が書かれた円で識別します)の表示領域を持ったウィンドウが開きます。toggle オブジェクトを使ってパッチの中の1つのセクションの metro オブジェクトをスタートさせると、メッセージが生成が開始します。そして、その結果がWatchpoint ウィンドウに表示されることがわかるでしょう。ウィンドウ全体と個々の列幅のサイズは変更することができます。そのため、より多くのデータを見る必要がある場合には、ウィンドウを大きくして、列幅を広げて下さい。watchpoint3 のすべての値を見るためには、Value という列の幅を広げる必要があるでしょう。ValueとCount という列の間にあるヘッダのセパレータ(縦線)を選択して右に動かすと、Value の列幅を広げることができます。

Watchpoint ウィンドウの各列の内容はほとんどそのまま理解できるでしょう。

- 最初の列はwatchpoint の識別子を示しています。
- 第2の列は、watchpoint に割り当てられている動作のタイプを示しています。
- 第3の列は、メッセージを送信しているオブジェクトのクラスを示しています。
- 第4の列は、watchpoint が含まれるサブパッチを示しています(メインパッチにある場合は空白になっています)。
- 第5の列は、最後に受信したメッセージの値、およびそれに関連した値です。
- 第6の列は、このwatchpoint で受信したメッセージの数を示しています。
- 第7(最後)の列は、このwatchpoint で見た直前の3つの値のヒストリ(履歴)が表示されます。

訳注:現在(ver 5.0.2)このチュートリアルパッチには watchpoint が設定されていません。そのため、以下の記述はわかりにくいのですが、実際にいくつか watchpoint を設定してみると良いでしょう。

パッチのセクション 1 をスタートさせ、表示されているWatichpoint ウィンドウの周りでマウスを移動させると、最初の3つの watchpoint がマウスの動きを追跡していることがわかるでしょう。ウィンドウのフォーマット(そして、watchpoint の位置)は、watchpoint 1 と 2 で表示されるX、Y座標を素早く理解する助けになります。この座標は0.0 から 1.0 の浮動小数点数にスケールされています。また、cartopol オブジェクトと「πで割っている」(/ 3.1415)演算オブジェクトによる、X、Y座標への影響は、watchpoint 3の第3と第4の値(pack オブジェクオtによって送信されています)を見ることによって確認できます。watchpoint によって、計算の値が期待する範囲に収まっているかどうかを素早く、容易に確認することができます。

前のチュートリアルで見たように、watchpoint を "break" または "break/watch" に変更すると、デバッグを有効にした場合に特別な働きを持ちます。watchpoint で何らかのメッセージを見ることができた場合、プログラムは停止し、デバッグモードでステップスルーを行なうことができます。パッチが停止すると、デバッグウィンドウが表示され、デバッグウィンドウがパッチのスタックトレースを表示している間、パッチの動作を見ながら、1度に1つのメッセージでパッチをステップスルすることができます。

結び

このチュートリアルでは、新しいオブジェクトには1つだけ(multislider)しか触れませんでしたが、データのストリームを生成し、追跡するための重要なテクニックを数多く紹介しました。multislider には組み込みのデータ表示オプションがあり、生成され続ける数値データを非常に簡単に追跡できるということを見ました。デバッグを目的とする場合、watchpoint を使って、プログラムを変更することなしに、任員のパッチコードの任意のメッセージを追跡できるということも見ました。

参照

multislider スライダのアレイ、およびスクロール表示