チュートリアル 7:
数値を扱うユーザインターフェイス

Slider(スライダ)とDial(ダイアル)

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

このチュートリアルでは、数値の表示と変数を行なうことができるユーザインターフェイス要素をいくつか使ってみましょう。メッセージとオブジェクトインスペクタを使って、オブジェクトの外観や動作を変更し、希望通りの動作を行なうように設定します。

数値の表示と編集はMax パッチの心臓部です。データがセンサ、MIDI デバイス、スクリーン上のコントローラなど、どこから入力される場合でも、数値データはテストや、操作が容易で、プログラムのコントロールのために簡単に使用することができます。

数値を扱うUI オブジェクト

07mNumericalUserInterfaces という名前のパッチを見て下さい。パッチの左側は、相互に接続されたメッセージボックス、スライダ、ノブ、ナンバーボックスがあります。Max の基本的な「スライダ」オブジェクトは slider と呼ばれ、パッチのインターフェイスとしての必要性に応じて、水平方向にも、垂直方向にも使用することができます。「ノブ」は dial オブジェクトと呼ばれます。

slider オブジェクトの「つまみ」をドラッグして、接続されたナンバーボックスに表示される結果を見て下さい。slider の出力は slider の出力範囲に基づいた整数値になります。slider は水平の場合でも、垂直の場合でも同じように動作します。

垂直のスライダの隣にあるダイアルも同様な機能を持っています。しかし、現在の設定では、ノブの針の位置を変更するためには、マウスポインタを円運動させる必要があります。この設定の変更は、このチュートリアルで後ほど見ることにします。

水平スライダのすぐ上にある button をクリックして下さい。これは何も機能していないように見えます。しかし、slider に接続されたナンバーボックスを変更し、もう一度 button をクリックすると、slider がbang を受信した場合、最後に格納されていた値を出力することがわかります。このように、、slider は数値エディタと同様、数値格納ツールのような動作を行ないます。

最後に、パッチをアンロックしてみましょう。マウスポインタを slider や dial の右下隅に置くと、小さなサイズ変更ボックスが現れ、カーソルは、オブジェクトのサイズ変更が可能になったことを反映して形を変えます。サイズ変更ボックスをドラッグすると、オブジェクトのサイズが変更されますが、オブジェクトの機能は同じままです。これにより、ユーザインターフェイス要素の操作方法は変更せずに、パッチのレイアウトを使いやすいように変更することができます。

UI オブジェクトの動作の変更

3つのユーザインターフェイスオブジェクトは、同じ出力範囲を共有しています。範囲は 30 から 156 です。明らかに、これは私たちが普通に(「通常」と言い換えてもよいでしょう)期待するような動作ではありません。デフォルトでは、これらのオブジェクトは 0 から 127 の範囲で数値を出力します(これは、MIDI の数値範囲に倣ったものです)。この範囲は、オブジェクトにメッセージを送信することによって、簡単に変更できます。

オブジェクトの上にはメッセージボックスがいくつかあります。このメッセージボックスは接続されたナンバーボックスから入力された数値を使ってメッセージを構成します。以前のチュートリアルで見たように、これはコマンドを他のオブジェクトに送信するためのメカニズムです。この場合、このメッセージボックスを使って、slider オブジェクトと dial オブジェクトの動作を変更しています。最初のナンバーボックス(size $1 というメッセージボックスに接続されています)を50 に変更し、その後でスライダやノブを動かしてください。出力される値の範囲が変わっていることがわかるでしょう。この状態では、30 から 79 までの値を出力することができます。なぜ 80 ではないのでしょうか?これは、size メッセージが、オブジェクトが持つ離散的なステップ数を設定するためです。最初のステップが 30 の場合、50 ステップでは最大値 が79 になります。

次は、min メッセージをトリガしているナンバーボックスを調整してみましょう。このナンバーボックスの値を0 に変更すると、slider オブジェクトと dial オブジェクトは0 から 49 の範囲でメッセージを出力するようになります。min および size メッセージを組み合わせて使用することにより、オブジェクトが値を出力する範囲を、パッチ作成に必要なあらゆる範囲に設定することができます。

3番目のナンバーボックス(mult メッセージボックスに接続されているもの)を 5 に変更すると、出力範囲は 0 〜 245に、1つのステップ幅が 5 になります。この結果は、現在設定されている範囲の値に 5 を掛けた値によるものです。

スライダを動かした場合、中間の値をみて驚くかもしれません。例えば、最初の4つの値は、0 - 5 - 10 - 15 ではなく 0 - 4 - 9 - 14 が表示されます。これは、インターフェイスオブジェクトが出力を計算する方法に基づくものです。インターフェイスオブジェクトは、中間の値を0 から 値の範囲(max - min - 1 :最大値 - 最小値 - 1 )までに保とうとします。この値に mult の値が掛けられ、最小値にあわせるためにオフセットされます。このことは、例え値が0を通過してしまうとしても、出力が常にmult のステップサイズを持つということを意味します。

訳注:最後の段落の説明はよくわかりません。実際に、slider のsize を 50、min を 0、mult を5 に設定してスライダを動かしてみたところ、0 - 5 - 10 - 15 ... という値が出力されますが・・?

ナンバーボックスのオプションとインスペクタ

パッチの右側は、ダイアモンド型に接続されたナンバーボックスの配列になっていて、それぞれは異なった表示フォーマットが設定されています。最も上のナンバーボックスは今まで慣れ親しんできた10 進数の数値を表示しています。そして、左側に小さい三角形があり、このナンバーボックスが編集可能であることがわかりやすいようになっています。これに接続されている2つのナンバーボックスはそれぞれ異なった表示形式になっています。左のボックスは、情報を16進数(基数 16)で表し、右のボックスは、情報を MIDIノートの値とみなして表示しています。

一番下のナンバーボックスは表示する文字の変更の様子を示していて、数値がボールドフォントで表示されています。さらに、ボックスの左側の三角形がありません。これは、限られたスペースでより多くの桁数を表示したい場合や、この値が編集できないものであることを暗に伝えたい場合に役立ちます。

このようなナンバーボックスのバリエーションは、すべてオブジェクトのアトリビュートの変更によるものです。アトリビュートはオブジェクトインスペクタを使って変更することができます。ウィンドウにはオブジェクトのすべてのアトリビュートと、このアトリビュートを編集するためのインターフェイスがあります。パッチをアンロックして、マウスを1つのナンバーボックスの左側の真ん中あたりにおいて下さい。"i" と表示された小さな円が現れます。この円をクリックして、オブジェクトインスペクタを表示させて下さい。

インスペクタの表示の初期設定では、利用できるすべてのアトリビュートが表示され、目的によって色分けされています。さらに、インスペクタの上部にはいくつかのタブがあり、特定の目的で使用されるグループだけを表示することができるようになっています。"All" というページを下までスクロールすると、"Display Format" と表示されたアトリビュートがあることがわかるでしょう。このアトリビュートには、それぞれ個別な値がいくつかあります。設定されている値をクリックすると、利用できる表示形式を見ることができます。選択できる表示形式には、"Decimal"(10進数)、"Hex"(16進数)、"Octal"(8進数)、"Binary"(2進数)、"MIDI"(MIDI ノート表示)、"MIDI C4" (MIDI ノート表示)があります。これが、10進数表示のバリエーションのすべてで、用途によって便利に使い分けることができ、値の入力や表示をそれぞれの形式で行なうことができます。

訳注:"MIDI" は 60 (キーボード中央のC音を表すノートナンバ)をC3 で、"MIDI C4" は C4 で表示します。その他の値もこれを基準として表示されます。

"Appearance" タブをクリックすると、ナンバーボックスのアピアランス(外観)に関係したアトリビュートだけを表示させることができます。その中に "Draw Triangle" という項目があります。これは、パッチの最も下にあるナンバーボックスでは無効になっていたものです。インスペクタでこのアトリビュートのオン、オフを設定して、オブジェクトの表示が直ちに変更されるようすを観察して下さい。インスペクタの値を変更すると、オブジェクトに対して即座に適用されます。

インスペクタで使用されている名前は、オブジェクトをコントロールするためのメッセージと必ずしも同じでありません。それぞれのアトリビュートに対応するメッセージを知るにはどうすれば良いのでしょうか?アトリビュートに対応したメッセージを作成する最も簡単な方法は、インスペクタのアトリビュート名をクリックして、これをロックされていないパッチにドラッグすることです。アトリビュート名は、適切なメッセージによってフォーマットされたメッセージボックスに変換されます。これは、アトリビュートをプログラムからコントロールしたい場合に便利な方法です。

インスペクタの使用

パッチをアンロックして、独自の小さなユーザインターフェイスを作成してみましょう。オブジェクトパレットを開いて slider、dial、ナンバーボックスを選んで下さい。これらをいろいろな大きさにサイズ変更し、移動させて、面白いレイアウトを作って下さい。slider がアスペクト比(縦と横の長さの比)によって、垂直方向のものから水平方向のものに変化する点に注意して下さい。オブジェクトを接続して、オブジェクトが相互に関連して動くようすを見て下さい。そして、オブジェクトを表示用、編集用として使ってみて下さい。それぞれのオブジェクトのインスペクタを開き、アピアランスを変更して下さい。色の変更や、(もしよければ)オブジェクトの動作を変更してみて下さい。終了したら、パッチをロックして、オブジェクトの外観や動作が思った通りのものであるかどうかを確認して下さい。

結び

数値データの表示や編集を行なう形式は数多くあります。このチュートリアルでは Silider オブジェクトや dial オブジェクトの使い方、そして、ナンバーボックスの様々なフォーマットで数値を表示させる方法を見てきました。さらに、メッセージやオブジェクトインスペクタを使ってオブジェクトの動作を変更しました。Max プログラミングでは数値データを使用することは非常に重要です。そのため、このようなデータの表示や変更を行なうために数多くの方法が用意されていることは、とても役に立ちます。

参照

slider 解像度の調整が可能な、垂直/水平方向のスライダ
dial 円形のスライダ