データ構造:
Max のデータ格納の方法

データの格納(ストア)

Max には情報の格納(ストア)や再呼び出し(リコール)のために、特別に設計されたオブジェクト群があり、1 つの数値の格納を行なうシンプルなオブジェクトから、任意のメッセージの組み合わせを格納するようなよりパワフルなオブジェクトまで幅広い範囲のものが存在します

シンプルな intfloatオブジェクトは数値を格納し、bang に応答してそれを出力します。これらは、従来のプログラミング言語の変数に相当するものです。value オブジェクトでは、1つの値を、別のパッチャーウィンドウから変更したり、取り出したりすることができます(グローバル変数のように機能します)。accum オブジェクトは 1 つの数値を格納しますが、それに対して加算や乗算ができます。

データ構造では、情報のグループを同じ形式で一緒に格納するため、特定の項目はその項目のアドレス(位置)を使って取り出すことができます。

配列

table オブジェクトは数値の配列で、テーブルに格納された個々の数値は、固有のインデックスナンバー(アドレス)を持っています。。左インレットでアドレスを受信すると、そのアドレスに格納された値が左アウトレットから出力されます。数値を格納し、それに容易にアクセスできるようにすることが、このような配列の主な効用ですが、tableオブジェクは、格納されている数値の修正や使用のために、数多くのパワフルな機能を持っています。

tableの中に格納された値はテーブルエディタ・ウィンドウでグラフィカルに表示され、グラフの x 軸をアドレス、y 軸を値として表示されます。このテーブルウィンドウ内に表示されている値は、グラフの内部で描画ツールを使って描画するか、グラフの領域のカットとペーストを行なうことによって変更することができます。

table に送信されるその他のメッセージによって、新しい値の格納、テーブルサイズの変更、テーブルのすべての値の合計の報告、様々なアドレス間での前後への移動、特定の値のアドレスの報告、テーブルの値についての統計的な情報の提供を行なうことができます。

funbuff オブジェクトはアドレスと値を格納しますが、table と違って、アドレスは任意の値を使用でき、アドレス間に隙間が存在していても構いません。funbuff がインレットで実際には存在しないアドレス(既存のアドレス間の隙間に該当する数値)を受信した場合、funbuff はその次の最小のアドレスを探し出し、そのアドレスの持つ値を出力します。

bag オブジェクトはアドレスなしで数値の集合を格納します。bag に数値を追加したり、bag から数値を削除したりすることができ、インレットに bang を送信すると、現在格納されている数値をすべて出力します。

複雑なデータ構造

preset オブジェクトもある種の配列と考えられますが、配列のそれぞれのアドレスには、パッチャーウィンドウ内の他のユーザインターフェイス・オブジェクトの設定が格納されています。preset オブジェクトのインレットでアドレスナンバが受信される(または、preset オブジェクトのボタンの1つがクリックされる)と、これらのユーザインターフェイスオブジェクトの設定は、preset に格納されている値に変更されます。このようにして、preset オブジェクトと同じウィンドウ内にあるすべてのユーザインターフェイス・オブジェクトは設定を保存し、復元します。また、preset オブジェクトのアウトレットをウィンドウ内のいくつかのユーザインターフェイスオブジェクトと接続することによって、presetがそれらのユーザインターフェイス・オブジェクトだけに影響を及ぼすようにすることもできます。

coll オブジェクト(collection の略)は数値、シンボル、リストを格納します。coll の1つのアドレスは数値、またはシンボルのどちらを格納することもできます。また、coll に格納されているデータをメッセージによって変更することができます。例えば、sub は格納されている場所にある1つの項目を変更し、merge はその場所にデータを追加します。また、nth メッセージによってcoll に格納されたリストの個々の要素にアクセスすることも可能です。

coll オブジェクトはタイム(時刻)、ピッチ、デュレーションのリストを持った「スコア」のレコーディングや再生に役立ちます。あるいは、coll を使って、特定の数値やシンボルが受信されたときにユーザに表示するメッセージのコレクションを格納しておくこともできます。


ノートのリストを「演奏」する場合のcoll の使用例               coll にテキストメッセージを格納する例

coll の内容を標準のMax テキストエディタで編集することができます。そのためには、パッチャーウィンドウがロックされている状態で、オブジェクトボックスをダブルクリックします。すると、標準のMax テキストエディタ・ウィンドウが開きます。使用されるテキストフォーマットについては、coll オブジェクトに関する説明の中で述べられています。

メッセージは、ある種のデータ構造であると考えられます。それは、メッセージがアーギュメントとして 256個 までの異なった要素を持つことができるためです。メッセージの内容はset および append メッセージによって変更することができ、メッセージボックスは、インレットで受信したメッセージのアーギュメントによって置き換えられる可変アーギュメントを持つことができます。メッセージボックスの個々の要素へのアクセスは、そのメッセージボックスの内容を他のメッセージボックスに送り、送られたメッセージボックスの可変アーギュメントによって行なうことができます。次はその例です。

ユーザインターフェイスオブジェクト menu は基本的にはシンボルの配列です。インレットでメニュー項目のナンバーを受信するとその項目のテキストが表示され、必要に応じて右アウトレットから送信することができます。項目のテキストは setitem メッセージによって変更することができます。マウスでメニュー項目を選択すると、シンボルを指定し、そのシンボルのアドレスが左アウトレットから出力されます。


項目はインデックスナンバー、あるいはマウスによってアクセスされます。

参照

coll 様々なメッセージのコレクションの格納と編集を行ないます
funbuff

x,y という数値のペアを一緒に格納します

menu コマンドの表示と送信を行なうポップアップメニュー
message 任意のメッセージを送信します
table 数値の配列の格納とグラフィカルな編集を行ないます
Tables

テーブルファイルの作成のためのグラフィカルな編集ウィンドウ