概説:
Max アプリケーション

イントロダクション

この章では、Max アプリケーションについて簡単に述べ、このマニュアルで使用される基本的な用語を紹介します。

コンピュータプログラミングや MIDI の経験があまりない場合、この章で読んだ全てのことをすぐに理解できないかもしれませんが、大丈夫です。Max チュートリアルの各章では、基礎的なことからスタートし、多くのテーマを非常に詳しく取り上げています。Max は複雑なアプリケーションであり、誰でもがすぐに全てを「会得」できるとは思っていません。この概説では、とりあえず、アプリケーションや基本的な要素を身近なものにして下さい。

オブジェクトによるプログラミング

Max で作業をする場合、オブジェクトを使ってグラフィカルにアプリケーション開発を行ないます。オブジェクトはテキストやアイコンを持ったボックスとしてスクリーン上に表示されます。このオブジェクトとオブジェクトをお互いに接続し、動作するプログラムを作ります。


Max でグラフィカルに書かれたシンプルなプログラム

Max にはおよそ200 に及ぶ様々なオブジェクトがあります(また、MSP では 200 を超えるオーディオ処理オブジェクトが、さらに Jitter では マトリックスとビデオ/画像処理を行なう 140 ほどのオブジェクトが追加されます)。これらは、それぞれ1つ、または特定の処理を実行します。さらに、あなたがMax でプログラムを書き、それを保存した後、そのあなたが書いたプログラム自体を、他のプログラムの中で「オブジェクト」として使用することもできます。

Max プログラムはパッチャーウィンドウの中で作りますが、このウィンドウは描画プログラムのような動作をします。オブジェクトをパレットから選択し、そのオブジェクトを置きたい所でクリックします。

オブジェクトは、次のような様々なタイプのボックスです。

オブジェクトの上部にはインレットがあり、これを使って他のオブジェクトからの情報を受信します。

また、オブジェクトの下部にはアウトレットがあり、これを使って他のオブジェクトに情報を送信します。

2つのオブジェクトはパッチコードによって接続されます。そのためには、あるオブジェクトのアウトレットから他のオブジェクトのインレットへドラッグして下さい。パッチコードをドラッグする場合、相手側のオブジェクトの内側に達すると、その相手側のオブジェクトのインレットが「拡大」し、マウスボタンを離した時に接続できることを示してくれます。


パッチコードを受け入れるために「拡大」しているインレット

ノーマルオブジェクトとユーザインターフェイスオブジェクト

最も一般的なタイプのオブジェクトは、上下が二重線で表示されるオブジェクトボックスです。

オブジェクトボックスによって実行される動作は、その中に書かれている名前によって決まります。名前は、動詞のようなもので、オブジェクトが実行する動作を記述しています。この名前は makenoteのような単語か、+ (加算)や > (より大きい)のようなシンボルです。

通常、オブジェクトはインレットから受信した情報に応じて、アウトレットから情報を送信します。オブジェクトの個々のインレットやアウトレットは、それぞれ異なった目的を持っています。これについては、Max リファレンスマニュアル(Max Reference Manual)の「オブジェクト(Objects)」セクションに詳しく書かれています。個々のインレットやアウトレットの使い方に関する簡単な記述は、下に示すように、パッチャーウィンドウのアシスタンスエリアに表示されます。マウスをインレットの上に移動させると、アシスタンスエリアに説明文が表示されます。

 


delay オブジェクトの右インレットのアシスタンスを表示させています

オブジェクトの中には、インレット、またはアウトレットのどちらかを持たないものがあります。これは、そのオブジェクトが、パッチの外部と情報の送信、受信を行なうためです。例えば、midiout オブジェクトはアウトレットを持ちませんが、これは、値を直接 MIDI に送信するためです。

もう1つのタイプのオブジェクトは、ユーザインターフェイスオブジェクトです。これは、ボタンやダイアル、スライダ、キーボードなどの形をしていて、他のオブジェクトからのメッセージに対応するだけでなく、マウスによるクリックやドラッグにも対応します。これらは、マウスを使ったプログラムのコントロールを可能にしたり、数値や他のメッセージをスクリーン上に様々な方法で表示する手段を提供してくれます。は、オブジェクトの上にマウスを移動させると、アシスタンスエリアにそれぞれのオブジェクトの名前が表示されます。

comment のように何も行なわないオブジェクトもあります。comment オブジェクトによって、自分が何をしたかを思い出すことができるような記述や、プログラムの動作を他の人に説明するための記述を行なうことができます。また、comment オブジェクトは、他の人にプログラムの使用法を示すために、ユーザインターフェイスのラベルとして用いることもできます。

プログラムの作成が終わったら、これを パッチというMax ドキュメントとして保存することができます。パッチに単語によるファイル名(数字で始めてはいけません)をつけておけば、これを他の Max パッチの中でオブジェクトとして使うことができます。その場合、オブジェクトボックスの中にこのファイル名を書き入れるだけです。

オブジェクトや、それに関するより詳しい説明は、このマニュアルの「オブジェクトとエクスターナル」という章や、Max トピックスマニュアル (Max Topics Manual) の「カプセル化」という章を参照して下さい。

アーギュメント

たいての場合、オブジェクトボックスの中には、オブジェクト名の後に単語や数値が追加されています。これは、オブジェクトの初期状態を規定したり、オブジェクトの特性を指定するためのものです。この追加された単語などをアーギュメントと呼びます。

例えば、メトロノームの役割をする metro オブジェクトを作る場合、metro という名前の後に数値を書き入れて、メトロノームの刻みの間に何ミリセカンドの間隔を置くかを指定することができます。

いくつかのオブジェクトではアーギュメントは必須ですが、それ以外のオブジェクトではアーギュメントはオプションです。オブジェクトボックスに必須のアーギュメントを書き込み忘れた場合、Max はMax ウィンドウにエラーメッセージを表示してその事実を知らせますが、オブジェクトの作成は拒否されます。オプションのアーギュメントを書き込まない場合、Max はアーギュメントとしてデフォルトの値を提供します。個々のオブジェクトに与えることができるアーギュメントの型や、デフォルトの値については、Max リファレンスマニュアルの「オブジェクト(Object)」セクションに詳しく記述されています。

メッセージ

実際にパッチコードを通して送られるものは何でしょうか? メッセージは一つのオブジェクトから他のオブジェクトへ渡される情報です。メッセージは、数値、スペースで区切られた数値のリスト、単語(Max ではこれをシンボルといいます)、或いは任意の単語と数値の組み合わせのいずれでも構いません。メッセージの内容は、メッセージの型を決定します。

Max メッセージの型には次のようなものがあります。

int メッセージが1つの整数のみから成る場合 (127 のようなメッセージ)、これはMax によってint型のメッセージであると解釈されます。メッセージでは int 127とすることもできます。

float メッセージが1つの浮動小数点数のみから成る場合 (3.973.、.97 のようなメッセージ)、これはfloat(floating-point number の省略形です)型のメッセージであると解釈されます。小数点によって、Maxはその値がfloat であることを理解します。 intと同様に、メッセージをfloat 3.97とすることもできますが、これは必須ではありません。

list スペースで区切られた2つ以上の数値(60 79 1.02 4のような形)は、list型と呼ばれます。メッセージは list という語で始まる必要はありません(使用しても構いません)。Max は数値の後に何かが続く形のメッセージを、全てリストとして認識します。実際に、最初が数値で始まっている限り、リストの中に数値と同じように語を(メッセージの中に、1 start 768のように)含めることも可能です。リストは256 個までの要素を持つことができます。

bang メッセージ bangは特別なメッセージで、「あなたが行なうべきことを実行しなさい」ということを意味します。例えば、random オブジェクトは、メッセージ bangを受信した時に、ランダムに選んだ数値をアウトレットから送信します 。

symbol シンボル(symbol)は単語、及び数値以外の文字を収めたものです。多くのシンボルは、特定のオブジェクトが受け取った場合に意味を持つコマンドです。個々のオブジェクトが的確に理解できるシンボルは、Max リファレンスマニュアルの「オブジェクト(Object)」セクションに挙げられています。例えば、MIDI 演奏を記録するseq オブジェクトの場合、インレットで受信した start、stop、record、delay、print といったようなメッセージに対応します。これらのメッセージの全ては、インレットで数値(または bang)だけを受け取ることを前提としている * (乗算)のようなオブジェクトでは意味を持ちません。

any message 実際に、任意の語や数値の組み合わせが可能なメッセージです。いくつかのオブジェクトは任意の型のメッセージを扱うことができます。しかし、たいていのオブジェクトは上記のメッセージの型のうちの1つを受信することを前提としていて、他の型のメッセージを理解しません。

オブジェクトは、自分が理解できないメッセージを受け取った場合、そのメッセージを全く無視するか、エラー報告を表示します。多くの場合、Max はプログラム編集の間に、このようなミスを犯すことを制止することも行ないます。あるオブジェクトのアウトレットを他のオブジェクトのインレットに接続しようとした場合、Max は、そのパッチコードを流れると推測されるメッセージがどんなものであるかを分析することに最善を尽くします。Max は、そのメッセージを理解できないインレットにアウトレットを接続させません。パッチコードを接続しようとした時にインレットがハイライトしない場合、Max はその接続を行ないません。

アトリビュート

バージョン4.5 以降では、いくつかの Max/MSP オブジェクト(特に、mxj及び pattr ファミリのMax オブジェクトである pattrpattstoragepattrhubautopattr)は、アトリビュートを使います。アトリビュートはMax オブジェクトの動作を指定するもう一つの方法です。これは、Jitter(ビデオや OpenGL を含むマトリックスベースのデータによる作業を可能にする、Max/MSP のエクステンション)の中で考案され、広く使われています。

既に Jitter を持っているのであれば、これがどのように働くかについては熟知しているでしょう。このセクションでは、まだアトリビュートを使ったことのないユーザのために説明したいと思います。

アトリビュートを使うと、オブジェクトに保存されているカレント(現在)の値を初期化、変更したり、その値を知ることができます。また、個々の値と定義済みのアトリビュート名が結びつけられていることによって、オブジェクトボックスに書き込むアーギュメントの順序や、複雑なオブジェクトの各インレットが何を行なうかについて覚えている必要がなくなります。Max/MSP の将来のバージョンでは、より広範囲な Max/MSP オブジェクトでアトリビュートが実装されるでしょう。

アトリビュートは、アーギュメントとしてオブジェクトボックスの中に、オブジェクト名に続けて入力することも、また、オブジェクトが作られた後は、Max メッセージを使ってセット(及び取得)することもできます。オブジェクトボックスに書き込むアトリビュートの場合、@シンボルの後にアトリビュート名と1つまたは複数のアーギュメント(任意の種類のMax データ:int、float、シンボル、リスト)を続けます。オブジェクトが認識できるアトリビュートであれば、いくつでも、どのような順序ででも、オブジェクト名の後に入力することができます。


アトリビュートを書き込むことも、Max メッセージを使ってセットすることもできます。

@ と、設定のために書き込まれるアトリビュート名の間にスペースを入れない点に注意して下さい。@ はオブジェクトに対して、これに続く語を、前のアトリビュートのアーギュメントとしてではなく、アトリビュート名として解釈するように命じるものです。オブジェクトは書き込まれたアトリビュートと書き込まれたアーギュメント(訳注:この「アーギュメント」は、アトリビュートに対するアーギュメントではなく、従来の意味での「アーギュメント」を意味しています。)を同時に持つことができますが、その場合、まず最初にアーギュメントが書き込まれていなければなりません。

別の(そして非常に有用な)アトリビュートの機能は、アトリビュートを持ったオブジェクトに対して、解釈できるアトリビュートが何か、或いは、任意のアトリビュートが現在保持している値が何かを尋ねることができるということです。

アトリビュートを持ったオブジェクトに getattributesメッセージを送ると、そのオブジェクトが理解できる全てのアトリビュート・シンボルのリストを、attributesという語の後に続けてメッセージとして出力します。


オブジェクトはどのようなアトリビュートを持っているのでしょう?

getstateメッセージは、考えられるアトリビュートの問い合わせを全て一度に行なったのと同じように、オブジェクトの全てのアトリビュートをダンプアウトさせます。


オブジェクトのステート(状態)を調べます。

その後、routeunpack、その他の Max オブジェクトを使って、必要に応じてアトリビュートを抜き出すことができます。

また、getの後に(スベースを明けずに)アトリビュート名を続けた Max メッセージを使って、知りたいと思う任意のアトリビュートの値をチェックすることができます。結果の値は、オブジェクトの右アウトレットから(アトリビュート名から始まる)メッセージとして出力されます。このメッセージを使って、アトリビュートの現在の値を見つけることができます。これは、最初にアトリビュートを設定していない場合でも可能です。

アトリビュートに関するより詳しい情報や、特定のオブジェクトでの使用法に関しては、Max リファレンスマニュアルの pattrpattrstoragepattrhubautopattrpatcherargsオブジェクトのページを参照して下さい。

数値

Max では整数値と小数値(小数部分をもつもの)は区別されます。Max では、整数値は intと呼ばれるデータ型、小数値は floatと呼ばれるデータ型になります。Max によって float から intへ変換される場合、floatの小数部分は四捨五入ではなく切り捨てられます。したがって、4.1という数値が intに変換される場合、これは 4になります。同様に、4.999999という数値が intに変換される場合も 4になります。MIDI 情報を扱うプログラムを書く場合、通常は intを用います。オーディオ情報を扱う場合には、おそらく floatを用いることが多いでしょう。Max では、MIDI データは常に intで表されます。また、Max では、たいていの場合、時間はミリセカンド単位で表されますが、これは intと floatのどちらを使うことも可能です。

intを任意の16進数として入力することが可能です。16進数は MIDI の仕様書や他のコンピュータ関連のドキュメントで頻繁に使われる、16進に基づいた記数法です。16進数の前に 0x(ゼロと小文字のx)をつけて、0xf0(10進数の 240 と同じ値になります)というように書き表します。

メッセージの順序

多くの場合、オブジェクトは複数のアウトレットを持っていて、通常、「同時に」すべてのアウトレットからメッセージを送信します。実際には、Max の中で全く同時に行なわれるものはありません。これらは、同時と思われるほど速く実行することができますが、Max がメッセージを送る順序を理解していることは重要です。

オブジェクトがいくつかのメッセージを「一度に」、それぞれのアウトレットから送信する場合、実際の順番は右から左になっています。最も右のアウトレットが、まず最初にメッセージを送信し、その後そのすぐ左のアウトレットというように、最も左のアウトレットまで続きます。これは実際、すべての Max オブジェクトにあてはまります。

左の例では、メッセージが右から左の順 (right-to-reft order)で出力されている様子を示しています。右の例では、1つのアウトレットから多くのパッチコードが引き出され、それらはすべて他のオブジェクトの異なったインレットに接続されています。この場合、メッセージは、受信するオブジェクトのスクリーン上の位置によって右から左の順に送信するよう決められています。受信側の2つのオブジェクトが完全に垂直方向に並んでいる場合(他のオブジェクトより右に寄っていない場合)には、順序は下から上になります。つまり、スクリーン上で下の位置にあるオブジェクトが最初にメッセージを受信することになります。

オブジェクトが複数のインレットを持っている場合、右から左の順にインレットでメッセージを受け取ることが前提になっています。通常、オブジェクトは受け取ったメッセージを格納しておき、最も左のインレットでメッセージを受信した後に、何らかの演算を行なってアウトレットからメッセージを出力します。大多数のオブジェクトは最も左のインレットで受信したメッセージによって「トリガ」されます。このルールにはいくつかの例外もありますが、ほとんどすべてのオブジェクトで、最も左のインレットはトリガを行なうインレットです。

これには意味があるということを覚えておいて下さい。なぜなら、オブジェクトが右から左の順でメッセージを送信するため、結果として、オブジェクトが受け取る最後のメッセージが、常に出力をトリガするメッセージになるからです。

オブジェクトの中には、左インレットで数値のリストを受信するものがあります。その結果は、各々のインレットで右から左の順に数値を受け取った場合と同じになります。

最後に、同じアウトレットからいくつかの場所にメッセージが送信され、そのメッセージが受信側のそれぞれのオブジェクトのトリガになってメッセージを送信させる場合を想像して下さい。この場合処理はどのような順序で行なわれるのでしょうか?その答えは、メッセージが受信側のオブジェクトをトリガし、そのオブジェクトの出力が次に送られます。このメッセージは、メッセージが送られても何の動作も起こさなくなるまで、次々と他のオブジェクトをトリガしていき、その後、Max は最初の送信側オブジェクトに戻って次のメッセージを送信します

次の例で、+ オブジェクトの左インレットにメッセージが送信される前に、3、4、5 がすべて実行される(それ以上メッセージがトリガされない所まで達する)という点に注目して下さい。

ウィンドウ

Max には6つのタイプのメインウィンドウがあります。その6つとはパッチャー(Patcher)、テキスト(Text)、テーブル(Table)、タイムライン(Timeline)、Max ウィンドウ、New Objectリスト(New Object List)です。

最初の4つのタイプのウィンドウは、いくつでも必要なだけ開くことができますが、New オブジェクトリストと Max ウィンドウは1つだけしか開くことができません。envmovie のような他のオブジェクトは、自分自身のウィンドウを開きます。

Windows では、それぞれの Max のウィンドウには、[最小化]、[最大化]、[ウィンドウを閉じる]という標準のアイコンがあります。Macintosh のウィンドウには、[ウィンドウを閉じる]、[Dock に送る]、[ウィンドウの最小化/最大化]という標準のアイコンがあります。

Macintosh 版では、ウィンドウの右側に透明な長球があり、パッチャーのロック、アンロックの状態のトグルとして使うことができます。

Max ウィンドウ

Max アプリケーションを起動すると、最初にMax ウィンドウが表示されます。これは、Max がユーザに対してメッセージを表示する場所です。

Max を起動した後、、いくつかのエクスターナルオブジェクトから、それ自身がスタートアップ処理の間にロードされたことを通知するメッセージが表示されるのを目にするかもしれません。

プログラムの編集や実行を行なっている間に生じた何らかのエラーメッセージや警告がMax ウィンドウに表示されるかもしれません。あなたの書いたプログラムのデバッグとして、任意の瞬間にパッチコードを流れているものが何なのかを Max に正確に表示させ、パッチが適切に動作しているかどうかを見ることができます。Max ウィンドウへの表示に関する、より詳しい情報は、Max トピックスマニュアルの「デバッグ」の章を参照して下さい。

パッチャーウィンドウ

Max アプリケーションをロードした後は、新しいパッチャーウィンドウを作る(File メニューのNew サブメニューから Patcher を選択して)か、すでに存在するパッチを(File メニューの Open... コマンドで)開いて、プログラミングを始めます。

Max では、パッチャーウィンドウの中にオブジェクトを置き、それをパッチコードで接続してパッチを作ることによって、プログラムが「書かれ」ます。パッチを作ったら、それを実行し、実際に考えていた通りの動作をするかどうかを確認することができます。後で再び実行や編集ができるように、パッチをMax ドキュメントとして保存することができます。

パッチャーウィンドウはロック、またはアンロックにすることができます。アンロックの場合、オブジェクトを移動させたり、新しいオブジェクトを作ったり、オブジェクトどうしを接続したりして、パッチャーを編集できます。ロックされている場合、何らかの動作を行なうオブジェクトをクリック(sliderのような場合)して、パッチャーを操作することができます。ウィンドウのロック/アンロックの状態はウィンドウ上部のパッチャーパレットがあるかどうかによって示されます。パレットが見えている場合には、そのウィンドウはアンロック状態です。

いくつかの異なった方法によって、パッチャーをロック、またはアンロックにすることができます。

・View メニューから Edit を選択するか、Macintosh では [Command] + E、Windows では [Control] + E のキーを押します。

・ウィンドウの空きスペースで、Macintosh では [Command]+クリック、Windows では [Control]+クリックします。

・Macintosh では、ウィンドウの右横に、ロック/アンロック状態のトグルとして使うことができる透明な長球があります。

新しいパッチャーウィンドウを作った時には、すでにアンロック状態になっています。ウィンドウ内にオブジェクトを置くには、パレットの中の目的のアイコンをクリックします。

カーソルの形がパレットアイコンと同じ形になります。

パッチャーウィンドウの中の、オブジェクトを置きたい場所でクリックします。

1つまたは複数のオブジェクトを選択し、ドラッグすることによって、新しい場所へ移動させることができます。オブジェクトを選択して、カット、コピー、複製などの編集作業を行なったり、オブジェクトボックスにテキストが含まれている場合には、Font メニューを使ってフォントやフォントサイズの変更を行なうことができます。またオブジェクトのグローバー(オブジェクトの右下隅にある小さな長方形)をクリックして、オブジェクトのサイズを変更することができます。グローバー(これが見えないこともあります)の上にマウスを移動すると、カーソルが2方向、または4方向の矢印に変わります。オブジェクトのサイズ変更を行なうにつれて、アシスタンスウィンドウにオブジェクトのサイズの変化と、その時点での大きさがピクセル単位で表示されます。

いつでも、パッチャーウィンドウをロックして、そのパッチを使ってみることができます。ウィンドウがロックされるとオブジェクトパレットが消え、特定のオブジェクトをクリックしてユーザインターフェイスの一部として操作することができます。パッチの編集が終了し、適切に動作するかどうかを確認するためのテストを終えた場合は、 File メニューから、save as を選択して、パッチを保存します。次回 Max ドキュメントを開いた時には、パッチャーはロック状態で開かれ、すぐに使えるような状態になっています。

New Object リスト(New Object List)

オブジェクトボックス(パレットの最も左のアイコン)をパッチャーに追加すると、Max は(Option メニューの New Object List がチェックされている場合には)New Object リストウィンドウを開きます。このウィンドウは2つの列に別れています。左の列はオブジェクトのカテゴリのリストで、右の列は選択されたカテゴリに属するオブジェクトの名前のリストです。

オブジェクトのリストをスクロールしてそのうちの1つをマウスで選ぶか、標準の「ファイルを開く」ダイアログの場合と同じように、コンピュータキーボードからオブジェクト名の最初の2〜3文字を入力します。(これは、特に、カテゴリが All Object の場合には、オブジェクトの完全な名前を入力するために役立つショートカットです。)

作りたいオブジェクトのオブジェクト名が選択されたら、そこでダブルクリックするか、[Return]、[Enter]、あるいは、スペースキーを押すと、オブジェクトボックスに名前が入力されます。オブジェクトのヘルプファイルを開きたい場合は、その名前の上で Macintosh では、[Option] + ダブルクリック、Windows では [Alt] + ダブルクリックします。New Object リストに表示される名前の中に必要なものがない場合は、[Delete]([BackSpace]) キーを押すと、ボックスの中にテキスト入力を行なわずにウィンドウが消えます。

テキストウィンドウ(Text Window)

パッチャーウィンドウに加え、シンプルなテキストウィンドウを開いて、ノートとして使用したり、特定のオブジェクトの内部にあるデータを編集したりすることができます。新しいテキストウィンドウを作るには、File メニューの New サブメニューから Text を選びます。

テーブルウィンドウ(Table Window)

テーブルウィンドウは数値の配列を表示、編集するために使います。データにアクセスするためにパッチャーウィンドウにtableオブジェクトを置き、このようなテーブルに表示される数値を対応するtableに含めることも可能です。

タイムラインウィンドウ(Timeline Window)

タイムラインは、グラフィカルに表示された Max メッセージの配列です。このメッセージは、特定のパッチの特定のオブジェクトに対し、特定の時刻に送られます。タイムラインは、タイムラインウィンドウの中のコントロールを使って実行したり、timelineオブジェクトを含むパッチの中から実行することができます。新しいタイムラインウィンドウを作るためには、File メニューの New サブメニューから Timeline を選ぶか、オブジェクトボックスに timelineと書き込みます。

より詳しい情報は、Max トピックスマニュアルの「タイムライン」の章を参照して下さい。

Max ドキュメント

Max が自動的にドキュメントを見つけようとする場合、まず最初に開かれているパッチが含まれているフォルダを見に行きます。その後、File Preferendes ウィンドウ(Options メニューから File Preferences... を選ぶとアクセスできます)で指定されているフォルダを見に行き、さらにその後Max アプリケーションが含まれているフォルダを見に行きます。この検索順序は「ファイルサーチパス」と呼ばれます。

Max ドキュメントには多くの種類があります。Max アプリケーションには次のようなドキュメントが含まれています。

  • max-startup フォルダにはエクスターナルオブジェクト(アプリケーション自身には含まれていないオブジェクト)があり、Max は起動の際にこれらを自動的にメモリに読み込みます。

  • externals フォルダには追加のエクスターナルオブジェクトがあります。

  • max-help フォルダには、個々のオブジェクトの動作のデモンストレーションを行なうサンプルパッチがあります。

  • Max Tutorial フォルダには、Max チュートリアルの Max チュートリアルセクションに対応したサンプルパッチがあります。(このパッチは Max アプリケーションの動作に必要なものではありません)

  • patches フォルダの中には、Maxのエディタと 初期設定ファイル( prefernces files)を含むeditors フォルダ、MaxやMSP のいくつかのオブジェクトのアトリビュートを設定するために用いられるインスペクタを含む inspectores フォルダ、いくつかのUI オブジェクトで使う画像を含む picts フォルダ、便利なユーティリティやガイドパッチを含む extras フォルダがあります。

  • tiAction フォルダには、タイムライン の「アクション(action)」パッチがあります。

注:Max/MSP を使っている場合、この他にオーディオ専用の目的で作られたフォルダがあります。これらのフォルダに関する情報は、MSP ドキュメントを参照して下さい。

次のような様々なドキュメントを、Max を使ってあなた自身が作ることを期待します。

  • パッチャーウィンドウで作るパッチ。これは最も多く作るドキュメントでしょう。パッチは Max で書かれた動作するプログラムです。

  • collfunbuffmtrpresettable等のようなオブジェクトで使用するデータを含むバイナリファイルやテキストファイル。

  • seq または detonateオブジェクトによって保存される MIDI ファイル。

  • エンベロープ関数を記述するスクリプトファイル。

  • タイムラインとタイムラインアクションパッチ

Max がこれらすべてのドキュメントの動向を把握するためには、様々なファイルを探す時に使うフォルダ名を指定しておく必要があります。フォルダ名の指定を行なうために、Options メニューから File Preferences... を選んで下さい。

File Preferences ウィンドウはプログラムよって使用される重要なフォルダ名を表示します。Startup Folderは、max-startup と呼ばれ、アプリケーションが起動する際に、ここから自動的にエクスターナル・オブジェクトをロードします。ヘルプファイル用のフォルダは max-help と呼ばれます。Timeline Action Folder はタイムラインで使用されるファイルが収められるフォルダで、tiAction と呼ばれます。それ以外に、Max がファイルをロードする際に調べるための6つのフォルダ(および、そのサブフォルダ)を指定することができます。

これが File Preferences ウィンドウです。

フォルダ名がドット・スラッシュ( ./ ) で始まっている場合、Max アプリケーションがあるフォルダのサブフォルダであることを示します。それ以外の場合、指定する名前は、そのフォルダを含むボリューム名(ディスクドライブ)から始めなければなりません。

デフォルトでは、Max は、./externals、./patches、./ examples というフォルダで、パッチ、エクスターナルオブジェクト、テーブル等のファイルを検索します。これらの名前の下のスロットにフォルダ名を追加することによって、他のフォルダを指定することができます。

MIDI

Max には、MIDI システムで利用できるポートでMIDI データの送受信を行なうために、多くのビルトイン・オブジェクトがあります。MIDI メッセージを送信するオブジェクトにはアウトレットがありません。これは、オブジェクトが MIDI データをMax アプリケーションの外部へ送信するためです。同様に、外部から MIDI メッセージを受信するオブジェクトでは、メッセージは他の Max オブジェクトからではなく、MIDI デバイスのインプットから受け取ります。midiinおよび midioutオブジェクトは、MIDI メッセージを全く分析せず、生の MIDI データを一度に1バイトずつ送受信します。これらのオブジェクトは MIDI データのレコーディング、処理、再生をするオブジェクトに接続することができます。

おそらく多くの場合、特化された MIDI オブジェクトを使うことになるでしょう。これは、Max に送られてくる生の MIDI データをフィルタリングし、極めて重要な情報だけを出力します。例えば、noteinオブジェクトは MIDI ノートオン・メッセージだけを監視し、探しているデータを受信すると、キーナンバ、ベロシティ、チャンネルナンバを出力します。同様に、bendinオブジェクトは入力されるピッチベンドメッセージだけを監視し、ピッチベンドの量とチャンネルナンバを出力します。これ以外の特化された MIDI 入力オブジェクトには、コントロールチェンジデータ用の ctlin、ポリフォニックキープレッシャー・データ用の polyin、アフタータッチ・データ用の touchin、プログラムチェンジ・データ用の pgmin、リアルタイムメッセージ用の rtin、システムエクスクルーシブ・メッセージ用の sysexinがあります。

チャンネルボイス・メッセージを受信する、特化された MIDI オブジェクトには、対応する送信用のものがあります。これらは、Max オブジェクトから数値を受け取り、その数値を、指定された MIDI チャンネルで送信するボイスメッセージのデータとして使います。特化された MIDI 送信オブジェクトには、noteoutpolyoutctloutpgmouttouchoutbendoutがあります。

MIDI処理

ひとたびMIDI オブジェクトによって MIDI データが受信されれば、Max の他のオブジェクトによって修正や処理を行なうことができます。Max には、特に MIDI データを扱うために設計されたオブジェクトが数多く存在します。

midiparseオブジェクトは midiinから数値を受け取り、MIDI メッセージのタイプを分析して、MIDI チャンネルボイスデータを特定のアウトレットから出力します。seqオブジェクトは、midiinから受け取られるデータのシーケンスをレコーディングする、シンプルな MIDI シーケンサです。これは、後でそのデータを再生でき、再生スピードを変えることもできます。mtrはマルチトラックシーケンサ・オブジェクトで、データの中の多くの別々のトラックをレコーディングすることができ、それらを一斉に、あるいは独立して再生することができます。detonateオブジェクトは、グラフィカルな編集ウィンドウを持つ複雑なマルチトラックシーケンサで、スコア形式で見ることができる機能を持っています。数値を適格な MIDI メッセージにフォーマットするために、midiformatオブジェクトがあります。これは、MIDI メッセージを準備し、midioutへ送って、Max から外部へ送信します。

boraxオブジェクトは、noteinから受信したノートオン・データを分析し、ノートの持続時間(デュレーション)、ノートオンとノートオンの時間間隔、その瞬間に発音しているノートの数、すでに演奏されたノートの数などの情報を送信します。boraxpolyは両方とも、通過するノートにボイスナンバを割り当てます。また、polyでは、ノートのボイスを横取りし、発音しているノートにノートオフ・メッセージを送って、これをオフにすることができます。

stripnoteオブジェクトは、noteinから受信したノートオフ・メッセージ(ベロシティが 0 のノートオン・メッセージ)を除去し、正のベロシティ値を持つノートオン・メッセージだけを通過させます。makenoteオブジェクトは、stripnoteの逆の動作をします。これは、ノートオン・メッセージの後に、Max によって生成された ノートオフを追加し、ノートオンとノートオフを noteoutに送って送信させます。音が鳴り止まない状態を避けるために役立つように、bagflushmidiflushは受信したノートオン情報を把握しています。これを使ってまだノートオフを受信していない任意のノートをオフにすることができます。

Max は、ピッチベンド・データとして通常7ビットの値(0 ? 127 の値)だけを用います。また、ノートオフには、ベロシティが0 のノートオン・メッセージを使います。しかし、Max は14 ビット精度のピッチベンド値やリリースベロシティを持ったノートオフメッセージを認識し、送信する機能も持っています。これには、xbendinxbendoutxnoteinxnoteoutを使います。

以上のオブジェクトは、MIDI データを扱うために特化されたオブジェクトですが、Max では、MIDIの値は単に int(整数)として扱われるだけなので、考えられるあらゆる方法で処理することができます。例えば、pipeオブジェクトは、全ての数値をある一定時間だけ遅れさせてから通します。また、+ オブジェクトは MIDI のピッチ値に何らかの数を加算し、ピッチ変換をおこなうことができます。マニュアルの他のセクションで、Max で数値を処理する多くの方法のうちのいくつかを見ることができます。

MIDI データは、他の意味をもつように転用することができます。例えば、次の例では、ctlinで受信した MIDI キーボードのモジュレーションホイールからのデータを makenote(ベロシティ値を結びつけ、一定時間後にノートオフを追加します)に送って、その後 noteoutから送信しています。これによって、モジュレーションホイールでノートを演奏することができます。

Max では、数値の生成を、metrotempoclockerのようなタイミングを扱うオブジェクトによって自動的に行なうことも、あるいは、sliderdial、ナンバーボックスのようなユーザインターフェイスオブジェクトによってスクリーン上でインタラクティブに行なうこともできます。Max で生成された数値は、MIDI オブジェクトに送り、外部に送信して音楽として演奏することができます。

ヘルプ

ビルトイン、および、エクスターナルのMax オブジェクトに関するヘルプファイルはいつでも見ることができます。アンロック状態のパッチャーで、オブジェクトを、Macintosh では [option] + クリック、Windows では [alt] + クリックすると、そのオブジェクトのヘルプファイルが開きます。Option メニューの Help from Locked Patchers をチェックしておけば、ロック状態のパッチャーで任意のオブジェクトボックスを、Macintosh では[option] + クリック、Windows では [alt] + クリック (Windows)して、そのオブジェクトのヘルプファイルを開くこともできます。ヘルプファイルは、実際に操作できるパッチなので、オブジェクトが動作しているようすを見ることができます。次の例は、典型的なヘルプファイルを示しています。

アンロック状態のパッチャーでは、オブジェクトを選択して Help メニューの Help を選ぶことによってヘルプファイルを開くこともできます。New Object リストで、Macintosh では [option] キー、Windows では [alt] キーを押し下げたまま、リストからオブジェクト名を選択することによってヘルプファイルを開くこともできます。

それでも、オブジェクトについて疑問な点がある場合には、Max リファレンスマニュアルの「オブジェクト」セクションにある、オブジェクトに関する完全な記述を調べてみて下さい。それ以外の Max の関連事項について知りたい場合は、マニュアルの他の章を参照したり、Max オブジェクトシソーラスや索引から知りたい項目を探してみて下さい。