チュートリアル53:
パッチャーストレージの詳細

イントロダクション

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

自動的なバインド

・チュートリアルパッチ 53.autopattr.Bindings.pat を開いて、パッチの左上隅にあるmetro オブジェクトに接続された toggle ボックスをクリックし、パッチをスタートさせて下さい。このパッチは ‘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 オブジェクトのデフォルトの動作は、パッチャーの中の名前のついたユーザインターフェイスオブジェクトだけを、オブジェクトが作られた時に公開するものです。autopattrautoname アトリビュートが 1 にセットされていると,パッチャー内のすべてのユーザインターフェイスオブジェクトに自動的に名前をつけ、それらを pattr システムに公開します。Max の preset オブジェクトと同様に、autopattr オブジェクトは、2番目のインレット(訳注:「アウトレット」が正しいと思われます)に接続される任意のオブジェクトを除外します。また、autopattr の左インレット(訳注:「アウトレット」が正しいと思われます)にオブジェクトが接続されている場合には、名前を付け、pattr システムに公開するために、いくつかのオブジェクトだけを明確に指定することができます。

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

ステートの格納

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

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

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

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

・これで、プリセットを保存したので、pattrに公開されているオブジェクトの1つを変更して下さい。ストレージウィンドウがどのように応答するか見て下さい。

最後に保存、または復元を行ったスロットの値から外れるようにオブジェクトの値を変更すると、ストレージウィンドウの中では、該当のオブジェクトの値がイタリック体で表示されます。

・コントロールオブジェクトを変更して、さらにプリセットのステートを作成して下さい。その後、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つのスロットの値がイタリック体で表示されていることに注意して下さい。

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

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

参照

autopattr pattr ユーザの考える負担を軽減します。
pattr パッチャーに特化された、名前付きデータのラッパー
pattrhub pattr オブジェクトをあなたのために動作させます!
pattrstorage pattr データの閲覧、修正。プリセットの格納と復元
patcher パッチ内にサブパッチを作成
preset 他のオブジェクトのセッティングを保存、復元
lcd パッチャーウィンドウ内でグラフィックを描画