エクスターナル:
Max の機能拡張

2種類の Max オブジェクト

このマニュアルの様々な個所で、ビルトインオブジェクトとエクスターナルオブジェクトについて述べられているのを目にしたかもしれません。この違いは大きなものではありませんが重要です。ビルトインオブジェクトは Max アプリケーションの一部です。

エクスターナルオブジェクトは C言語のコードによる別のファイルで、Max 環境に「リンクされている」ものです。これは、そもそも、コードが Max の一部でないということがわからないような方法で行なわれているものです。このマニュアルの中で、特定のオブジェクトについて、それがビルトインなのかエクスターナルなのかについてほとんど言及されていないのはそのためです。

加えて、Max オブジェクトには2つの種類があります。

・ノーマルオブジェクト:パッチャーウィンドウの中で、その名前や特徴(例えば、borax,&& など)が書かれたオブジェクトボックスとして表示される Max オブジェクト。

・ユーザインターフェイスオブジェクト:パッチャーウィンドウのパレットの中のアイコンとして表示され、パッチャーウィンドウの中で、特徴のあるグラフィカルな外観で表示される Max オブジェクト。

エクスターナル・ユーザインターフェイスオブジェクトは、max-startup フォルダに置かなければなりません。そうすることによって、作業を始める前から、これらのオブジェクトのアイコンがパレットで利用できる状態になります。ノーマル・エクスターナルオブジェクトは Max サーチパス内の他のフォルダに置くことができ、必要なときにロードされます。

ノーマル・エクスターナルオブジェクトは、MIDI 以外のハードウェアデバイスへのアクセスを提供することができます。また、Max オブジェクトの基本セットにはない機能(例えば、シンボルまたは数値によってインデックス付けされた任意のリスト構造の格納と検索を行なうことができる coll オブジェクトのようなもの)を実装することができます。キーボードスライダ ksliderのような、エクスターナル・ユーザインターフェイスオブジェクトは、パッチャーウィンドウの中にカスタムインターフェイスを構築するために重要なものです。

エクスターナルオブジェクトを探索可能な状態にしておく

Max はドキュメントを読み込むときに、エクスターナルオブジェクトを見つける必要があります。エクスターナルオブジェクトがロードできない場合、Max ウィンドウに次のようなエラーが表示されます。

・error: objectname: no such object

開いたパッチャーの中では、上下がグレーのライン(すなわち、インレットもアウトレットもない状態)になっているオブジェクトボックスが表示され、ユーザインターフェイスオブジェクトでない場合には、ボックスの中にオブジェクト名が表示されます。

読み込んだパッチの中に、見つからないユーザインターフェイスオブジェクトがある場合、カッコの中にオブジェクト名が書かれたグレーの輪郭のボックスが表示されます。

不明なユーザインターフェイスオブジェクトへの参照を含むパッチを読み込んだ場合、パッチを開く際にパッチコードの接続が台無しになっているかもしれません。多くの不明なユーザインターフェイスオブジェクトを持ち、その上埋め込みの preset オブジェクトが含まれているパッチを開こうとした場合、Max ウィンドウに不幸なエラーメッセージが大量に表示される結果となるでしょう。

Max が自動的にエクスターナルオブジェクトを見つけられるようにするために、エクスターナルオブジェクトは File Preferences ウィンドウで指定されたフォルダに置かなければなりません。フォルダを追加するためには、Options メニューから File Preferences... を選びます。

手動でMax 環境にエクスターナルオブジェクトをロードすることができます。それには、エクスターナルオブジェクトをダブルクリックするか、File メニューから Install... を選び、標準オープンファイルダイアログでインストールしたいエクスターナルオブジェクトの場所を指定します。

エクスターナルオブジェクトの開発プロセスの中では、Install... を使って「改訂された」エクスターナルオブジェクトのコピーを Max 環境にインストールすることはできません。これは、Max アプリケーションが再起動されるまで、Max は最初のオブジェクト定義を使用し続けるためです。

エクスターナルオブジェクトが参照されたとき(そのエクスターナルオブジェクトを使ったMax ドキュメントが読み込まれたとき、または、オブジェクトボックスにオブジェクト名が入力されたとき)に自動的にロードされるようにしたい場合、エクスターナルオブジェクトのファイル名はオブジェクト名と一致していなければなりません。たとえオブジェクト名がファイル内のリソース名に由来するものであったとしても同様です。

オブジェクト・マッピング

Max/MSP オブジェクトの中には、オブジェクト名に特定のOS ファイルシステムで予約済み、または他の意味を持つ文字を含むものがあります。これらの Max オブジェクトはオブジェクトボックスに入力するオブジェクト名と異なるファイル名を持っています。例えば、!/ オブジェクトのエクスターナルファイル名は、実際には rdiv です。オブジェクトボックスに !/ を入力したとき、Max は max-objectmappings.txt というテキストファイルを使います。このファイルは、Max が起動される際に読み込まれ、入力した名前とエクスターナルオブジェクトの名前を関連づけます。max-objectmappings.txt はファイルマッピングの完全なリストを含んでいます。このファイルと他の object-mapping ファイルは、Macintosh では、/Library/Application Support/Cycling’74/init 、Windows では、C:\Program Files\Common Files\Cycling’74/init にあります。(訳注:バージョン 4.6 では、Max アプリケーションフォルダのサブフォルダとして Cycling’74 フォルダがあり、その中に init フォルダがあります。)

エクスターナルオブジェクトとコレクティブ

コレクティブファイルを作るためにFile メニューから Save As Collective… を選ぶと、作られるファイルにはパッチ、すべてのサブパッチャーファイル、および、使用されているエクスターナルオブジェクトが含まれます。

場合によっては、コレクティブをロードしたときに、すべてのエクスターナルオブジェクトが含まれずに、"no such object" エラーが表示されるかもしれません。これは、エクスターナルを含む標準のサーチパスが指定されていないことを意味します。例えば、pcontrol オブジェクトによって動的にロードされる他のパッチャーファイルを使うパッチの場合、これらのファイルはpatcher キーワードを使って明示的にコレクティブ・スクリプトに含める必要があります。コレクティブの作成に関するより詳しい情報は、Max トピックスマニュアルの「コレクティブ (Collective)」セクションを参照して下さい。

エクスターナルオブジェクトのロードの際のエラー

エクスターナルオブジェクトのロードのエラーが出る場合、Max はオブジェクトが見つからない場合と同じ動作をします。上下がグレーのラインで表されるオブジェクトボックスにオブジェクト名が表示(ノーマルオブジェクトの場合)されるか、グレーの矩形の中にカッコで括られたオブジェクト名が表示(ユーザインターフェイスオブジェクトの場合)されます。

エクスターナルオブジェクトの中には、ソフトウェアライブラリの追加が必要なものがあります。例えば、MSP エクスターナルオブジェクトは、MaxAudioLib というライブラリを必要とします(Macintosh では、このライブラリは Max/MSP および Max/MSP ランタイムアプリケーションに組み込まれています)。Max ウィンドウに次のようなエラーメッセージが表示された場合、エクスターナルオブジェクトが使用できるように、指定されたライブラリを取得するか使用可能にする必要があります。

・error: can’t fragload objectname: missing LibraryName (function name)

これは、必ずしも1つの直線的な手順で行なえるとは限りません。あるライブラリではMax アプリケーションフォルダに置く(例えばCycling'74 の Jitter ライブラリ)必要があり、また、他のライブラリでは OS にソフトウェアをインストールしておく(例えば、Apple の QuickTime ライブラリ)ことが、エクスターナルにとって必要になる場合もあります。不確かな場合は、問題となっているエクスターナルオブジェクトのドキュメントを参照して下さい。

サードパーティ製のエクスターナルオブジェクト

Max 自身によって提供されるオブジェクトに加え、サードパーティーの開発者から得られる数百に及ぶエクスターナル Max オブジェクトがあります。その中には商用パッケージもありますが、ほとんどは無料の非商用アプリケーションとして得ることができます。乱数生成からビデオによる動作認識まで、あらゆることを実行する興味深いオブジェクトのコレクションがあることがわかるでしょう。私たちはエクスターナルオブジェクトの開発者のリスト専用の Web ページを、次の URL で維持管理しています。

http://www.cycling74.com/community/.

サードパーティ製のエクスターナルの中には、プラットフォーム固有のものがあり、使っているプラットフォームで使用できないこともあります。(あなたが mxj オブジェクトを使って Java でエクスターナルを開発している場合、Java 言語のプラットフォーム固有のエクステンションに依存していない限り、通常オブジェクトはクロスプラットフォームで使用できます。)

注:サードパーティ製のエクスターナルオブジェクトを使用するコレクティブやMax でビルドされたアプリケーションをリリースする前に、その配布の許可を確認したかどうかチェックしなければなりません。ライセンスや使用に関する情報がオブジェクトと共に明示されていない場合、オブジェクトの著作者に確認することを強く推奨します。Max オブジェクトは GPL(GNU パブリックライセンス)のもとにリリースされているため、商用ソフトウェアに含めることはできません。

サードパーティ製のオブジェクトを使っているときに不具合やクラッシュが起きた場合は、オブジェクトの著作者にコンタクトを取って下さい。Cycling'74 では、エクスターナルオブジェクトの製作を行なう開発者を援助するために努力していますが、それらのオブジェクトのサポートは行なっていません