pattr チュートリアル 2:
Autopattr のバインディング

イントロダクション

Max の pattr オブジェクトを使って、データの管理を支援することができます。そのためには、pattr をオブジェクトにバインドしてそのオブジェクトのデータを参照する方法、あるいは pattr 自身にデータを格納する方法が用いられます。pattrhub オブジェクトを使うと、パッチャーの階層を通して、pattr オブジェクトに格納されているデータへの遠隔的な問い合わせを行ったり、このデータを設定したりすることができます。このチュートリアルでは、pattr ファミリに対する2つのパワフルな拡張を見ることにします。その2つとは、多くのオブジェクトからなるグループを pattr システムに簡単にバインドできるようにするautopattr、そして、複数の pattr オブジェクトが保持しているデータの「ステート」を格納し、復元する広範囲なシステムを提供するpattrstorageです。

自動的なバインド

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

チュートリアルパッチを眺めて下さい。パッチの左上隅にあるmetro オブジェクトに接続されたトグルボックスをクリックし、パッチをスタートさせて下さい。このパッチは、パラメータに基づいてアルゴリズミックに描画を行います。パラメータは‘drawing’ という名前のパッチャーに接続された rslider オブジェクトとナンバーボックスオブジェクトに格納されているものです。 ‘reset’という名前の receive オブジェクトにbang を送信するメッセージボックスを使って、lcd ディスプレイをクリアし、drawing というサブパッチの中にある counter オブジェクトをリセットすることができます。

右下隅にあるautopattr というオブジェクトには、いくつかのメッセージボックスオブジェクトが接続されていて、その中には drawing をコントロールするための様々な設定の例が書かれています。

autopattr オブジェクトは、pattrhub とほとんど同じ機能を持っていて、パッチ内の pattr システムに公開されたオブジェクトに対して値の問い合わせや送信を行うことができます。

パッチをアンロックして、toggle オブジェクト以外の描画インターフェイスコントロールの内の1つ(最上部の rslider オブジェクト、あるいはナンバーボックスオブジェクト)を選択して下さい。Object メニューから Name… を選んで下さい。

パッチの中の4つの「コントロール」オブジェクトが名前( 'range'、'angle'、 'offset'、 'desynch' )を持っている点に注意して下さい。ユーザインターフェイスオブジェクトのグループを作り、それらに名前を与えると、autopattr オブジェクトは自動的にこれらのオブジェクトを pattr システムに対して公開します。そして、まさにこのオブジェクトそれぞれにバインドされたpattrオブジェクトがあるかのように動作します。この意味では、autopattr は 一組の pattr オブジェクトとして機能するとも言え、1つのオブジェクトによって、複数のオブジェクトをパッチャーストレージに含めることが可能になります。

autopattr オブジェクトのデフォルトの動作は、パッチャー内の名前のついたユーザインターフェイスオブジェクトだけを、そのオブジェクトが作られたときに公開するものです。autopattr の autoname アトリビュートが 1 にセットされていると,パッチャー内のすべてのユーザインターフェイスブジェクトに自動的に名前をつけ、それらを pattr システムに公開します。autopattr オブジェクトは、Max の preset オブジェクトと同様に、2番目のインレット(訳注:「アウトレット」が正しいと思われます)に接続されたすべてのオブジェクトを除外します。また、autopattr の左インレット(訳注:「アウトレット」が正しいと思われます)にオブジェクトが接続されている場合には、その明示的に指定したオブジェクトだけに名前を付け、pattr システムに公開することができます。

autopattr オブジェクトは、pattr や pattrhub オブジェクトの機能の多くを結合させたものであるため、多数の Max オブジェクトを1つのオブジェクトによって素早く管理下に置き、同じオブジェクトを介してそれらのデータの問い合わせやセットを行うことができるようにします。

ステートの格納

pattrstorage オブジェクトに接続されている‘clientwindow’と書かれたメッセージボックスをクリックして下さい。ウィンドウが表示され、パッチに公開されている全ての pattrオブジェクトと、それらに関する情報を表にしたものを見ることができます。描画エンジンをコントロールするオブジェクトの設定を変更し、新しいセッティングを反映してウィンドウが更新されるようすを見て下さい。

pattrstorabe オブジェクトは、多くの高レベルなパラメータ管理の機能を提供します。クライアントウィンドウはパッチ内で pattr に公開されている全てのオブジェクトの名前(pattr オブジェクトや autopattr オブジェクトによってコントロールされるものを含みます)を表示します。ウィンドウの最後の列には、各オブジェクトの現在の値が表示されます。その間の2つの列は復元の優先度、およびオブジェクトの補間モードについて表示しています。前者は、オブジェクトが保存されているステート(状態)に復元される場合の順序の微調整を行うために変更することができます、後者は中間的なステート(後述)に対してオブジェクトがどのように応答するかを示しています。

pattrstorage に接続されている‘storagewindow’と書かれたメッセージボックスをクリックして下さい。コントロールオブジェクトのリストを表示するウィンドウが開くはずです。描画エンジンをコントロールする4つのオブジェクトを使って好みのセッティングを作成して下さい。満足するセッティングができたら、pattrstorageの上にある int オブジェクトに接続されている button オブジェクトをクリックして下さい。これは pattrstorage に対して、 store 1 というメッセージを送信します。

pattrstorage に対して storeの後に整数値を続けたメッセージを送信すると、公開されているオブジェクトすべての現在のステートをキャプチャし、それらをプリセット(またはステート)としてオブジェクト内の該当するナンバーのスロットに保存するよう命じたことになります。その後、スロットはストレージウィンドウの1列を受け取り、スロットナンバーが列のヘッダ(最も上の行)に表示され、その下にそれぞれの値が表として示されます。ステート 0 は特別なスロットで、ステートを、ファイルに保存せずにテンポラリとして保存することができます(下記参照)。

これで、プリセットを保存したので、pattrに公開されているオブジェクトの1つを変更して下さい。ストレージウィンドウがどのように反応するかに注目して下さい。オブジェクトの値を、最後に保存または復元を行ったスロットの値と異なったものに変更すると、ストレージウィンドウの中では、該当のオブジェクトの値がイタリック体で表示されます。(訳注:Max5(ver.5.0.2)ではイタリック体になっていません。)

コントロールオブジェクトを変更して、さらにプリセットのステートを作成して下さい。その後、int オブジェクトに接続されているナンバーボックスをインクリメント(増加)し、button をクリックして、そのセッティングをpattrstorage に格納して下さい。すでに使用されているスロットナンバーを再利用する(例えば、ステートをスロット2 に保存し、その後再び保存する)と、古いセッティングが上書きされる点に注意して下さい。また、pattrstorage に複数のステートを保存すると、最後のステートがボールド体で示され、それ以前のステートが通常の字体で示される点にも注意して下さい。(訳注:実際にはボールド体で表示されるのではなく、セルの背景色が変わります。他の「ボールド体で表示」と書かれた部分も同様です。)

‘recall a preset’と表示されたナンバーボックスをクリックし、すでに格納した値のうちの1つにセットして下さい。ユーザインターフェイスオブジェクトは保存されている値に復元され、ストレージウィンドウ内のそのスロットを表す列がボールド体で表示されます。

pattrstorage に整数値 (int) を送ると、その整数に対応したスロットを復元します。保存されていないスロットを呼び出そうとしても問題は生じません。pattrstorage はこれを無視します。

補間

'interpolate between presets'と表示された浮動小数点ナンバーボックスをクリックして下さい。すでに保存されている隣り合った2つのスロットの間の値(例えばステートを1と2に保存している場合には、1.5)を入力して下さい。pattr に公開済みのオブジェクトはこの2つのステートの間の補間された値になります。ナンバーボックスの中でマウスをドラッグして下さい。そうすると、1つのステートから他のステートへ滑らかに推移する効果が得られます。同様に、コントロールされているオブジェクトは滑らかに補間されます。

pattrstorage に浮動小数点数を送ると、保存されているステート間の値を補間します。fade a b n というメッセージを使うと、同様に隣り合っていないステート間の補間を行うことができます。この場合、a と b はスロットナンバー、n は 0.0(100% a の値)〜 1.0(100% b の値)の値を取ります。ストレージウィンドウでは、補間を行われている2つのスロットの値がイタリック体で表示されていることに注意して下さい。(訳注:実際にはイタリック体で表示されるのではなく、セルの背景色が変化します)。

ファイルの保存と読み込み

2〜3個のステートをプリセットスロットに保存したら、pattrstorage オブジェクトに接続されている‘write’とかかれたメッセージボックスをクリックして下さい。ファイル保存用のダイアログが表示され、サフィックス .xml を使ってファイルを保存するかどうか尋ねます。ファイルを任意の場所に保存し、テキストファイルを読むことのできるアプリケーション(例えば Max)で開いて、ファイルに目を通して下さい。

pattrstorage オブジェクトは、プリセットのステートを集めたものを、XML(eXtended Markup Language) ファイルとして読み込み、書き出します。このファイルは、ファイル内の様々なデータの型の識別子として、ネストされたタグを使ったフォーマットを採用しています。

チュートリアルパッチの XML ファイルの例は、次のようなものになるでしょう。

<?xml version="1.0" encoding="iso-8859-1" standalone="yes"?>
<pattrstorage name = "u518000001">
<slot number = "1">
<pattr name = "angle" value = “60.” />
<pattr name = “desynch” value = “7” />
<pattr name = “offset” value = “0.” />
<pattr name = “range” value = “50 100" />
</slot>
<slot number = “2”>
<pattr name = “angle” value = “33.5” />
<pattr name = “desynch” value = “39” />
<pattr name = “offset” value = “8.8” />
<pattr name = “range” value = “50 147" />
</slot>
</pattrstorage>

最初の、私たちのデータ全体を包んでいるタグは、pattrstorage オブジェクトに属する情報を定義しています。 <pattrstorage>タグは、pattrstorage のアーギュメントの名前を示すものでもあります。これは、pattrstorage オブジェクトのアーギュメントとして明示的に指定しない場合、ランダムに生成されます。

<pattrstorage> タグの間には、<slot> タグがあり、保存されたステータスを定義しています。スロット 0 がファイルに保存されていない点に注意して下さい。個々の <slot> の中には、<pattr> タグがあり、公開されたオブジェクトの名前、およびそのステートのためにプリセットされた値が書かれています。

1つのスロットの数値データを変更し、このXML ファイルを保存して下さい。その際、値の前後にあるクォーテーションマークをちゃんと保って置くように注意して下さい。'read'というメッセージボックスをクリックし、ファイルを選択して、再びパッチに読み込んで下さい。ストレージウィンドウが新しいプリセットの値に更新され、この値によって復元を行うことができます。

XML は簡潔で、可読なフォーマットなため、pattrstorage を使って保存したプリセットファイルは非常に簡単に編集できます。pattrstorage を使って設定を行なうようにパッチを作っておけば、そのパッチのためのプリセットファイルを、ソフトウェアの一部(例えば Max)を使って自動的に生成することも可能です。

結び

autopattr オブジェクトは、pattr と pattrhub オブジェクトを複合した機能を持っていて、1回の簡単な操作によって、自動的に複数のユーザ・インターフェイス・オブジェクトを pattr システムに公開することができます。このオブジェクトによって(autoname アトリビュートを使って)、pattr システムに組み込むためにオブジェクトに対して自動的に名前付けを行うことができます。それだけでなく、最初の2つのアウトレットを使って、それぞれ、オブジェクトを明示的にpattr システムに組み込んだり、除外したりすることもできます。pattrstorage オブジェクトによって、pattrに公開されたオブジェクトの現在の設定を見ることができ、セッティングのステート(状態)をナンバーを持つスロットに(save メッセージによって)保存したり、(オブジェクトに整数値(int)を送ることによって)それを復元したりすることができます。さらに、プリセットスロットの値の間を補間することができ、そのうえ、格納されたステートを、簡単に読むことができる XMLフォーマットのファイルとして保存し、読み込むことができます。

参照

autopattr pattr ユーザが考える負担を軽減します。
pattrstorage pattr データの閲覧と修正、プリセットの格納と復元を行ないます。