タイムライン:
Maxメッセージのグラフィックスコアを作成する

イントロダクション

タイムラインは(スコア楽譜のような)Maxメッセージのスコアを作ります。タイムラインにスコアを演奏するよう指示すると、タイムラインは指定されたのメッセージを指定された時刻に指定されたパッチに送信します。

タイムラインの作成には3つの基本的なステップがあります。

  1. タイムラインと通信を行なうことができるパッチを少なくとも1つ作成(あるいは修正)します。このパッチには1つ以上の ticmdオブジェクトが含まれなければなりません。サブパッチで inlet オブジェクトを使って親パッチからのメッセージを受信する場合と同様に、ticmd を使ってタイムラインからのメッセージを受信します。このような、 ticmd オブジェクトを使ってタイムラインと通信を行なうパッチを「アクション」と呼びます。

  2. タイムラインを作成し、タイムラインの中に1つ以上のトラックを作成します。トラックは、すでに作成した特定のアクション(パッチ)に応答し、それらと通信を行ないます。

  3. タイムラインのトラックにイベントを配置し、そのトラックのアクションの中にあるticmd オブジェクトに送信するメッセージを指定します。

アクションの作成

inlet からメッセージを受信するパッチであれば、タイムライントラックからメッセージを受信するパッチに簡単にコンバートできます。例えば、次に示すパッチはシンボル、intfloat をインレットで受信し、それらをMax ウィンドウに表示するものです。

しかし、このパッチがタイムラインからメッセージを受信するためには、次に示すようにinlet ticmd オブジェクトで置き換える必要があります。

ticmd オブジェクトは2つ以上のアーギュメントを必要とします。最初のアーギュメントはタイムラインが ticmd オブジェクトを参照するためのコマンド名です。それに続くアーギュメントは ticmd が受信するメッセージの型を示すもので、これによって ticmd が持つアウトレットの数が決定されます。コマンド名の後に続くそれぞれのアーギュメントはアウトレットを作り、そのアウトレットから送信される情報の型を指定します。i は int、 f は float、l はリスト、s はシンボル、bbanga は任意のメッセージを表します(それぞれの ticmd オブジェクトの最後にもう1つアウトレットがあることに気づくと思います。これについては後述します)。

少なくとも1つ以上の ticmd オブジェクトを持つパッチであれば、アクションとして使用することができます。このパッチはどこに保存しても構いませんが、これを タイムラインアクションフォルダ(Timeline Action Folder : Edit メニューの File Preferences... コマンドで指定されます)に保存した場合には、自動的にタイムラインのポップアップ・トラックメニューに表示されます。Max を最初にインストールした状態では、タイムラインアクションフォルダは Max application フォルダの中の tiAction という名前のフォルダです。

タイムラインの作成

新規にタイムラインを作成するには、New メニューから Timeline を選びます。あるいは、新しいオブジェクトボックスの中に timeline と入力することによって新規にタイムラインを作成することもできます。どちらの場合でも、グラフィック・タイムラインエディタ・ウィンドウが開きます。

最初にタイムラインエディタ・ウィンドウを開いたときには、トラックは含まれていません。ウィンドウ内で新規にトラックを作成する(そして、特定のアクションをロードする)ためには、Track ボタンをクリックし、ポップアップメニューからアクションファイルの名前を選択します。ポップアップメニューは Timelint Action フォルダに含まれているすべてのパッチを表示します。必要なアクションパッチの名前が表示されない場合には、ポップアップトラックメニューから Other... を選ぶと、標準ファイルオープンダイアログでアクションをロードすることができます。

トラックの作成が完了すると、トラックの最も左の部分にある小さいMaxアイコンをダブルクリックすることによってアクションの表示、編集が可能になります。

イベントの作成

イベントはタイムライントラックの中に置かれるオブジェクトです。イベントは、そのトラックのアクションの中にある指定された ticmd オブジェクトに1つ以上のメッセージを送信します。タイムラインにイベントを配置するためには、トラックの右側部分で、Macintosh では、[Option] + クリック、Windows では [Alt] + クリックします。すると、アクションの中の ticmd オブジェクトの名前に対応した名前を含むポップアップメニューが表示されます。また、単にトラックのイベント部分をクリックし、配置可能なイベントを含むポップアップメニューが表示されるまでマウスを押し下げておき、その中から選ぶという方法によって、タイムライントラックにイベントを配置することも可能です。

このメニューからコマンド名を選んだとき、実際には、どの ticmd オブジェクトにメッセージを送信するかを指定しています。 タイムラインは、アクションの中の ticmd オブジェクトが持っている biflsa、というアーギュメントに基づいて、そのイベントにどのような種類のメッセージが適しているかを認識し、トラックの中にそのメッセージのためのオブジェクト(エディタと呼ばれます)を配置します。

トラックの中に、bang、シンボル、リストを送信するイベントを置いた場合、Max は messenger というオブジェクトを提供します。messengermessage オブジェクト(メッセージボックス)と同じ形をしていますが、メッセージの送信先である ticmd オブジェクトのコマンド名を示すラベルを持っている点が異なります。

1つの数値をイベントとして置いた場合、intfloat エディタを使用することができます。これは、ナンバーボックスオブジェクトと同じ形をしています。

トラック内へのイベントを配置が完了すると、そのイベントの内容の編集(ticmd オブジェクトに送信されるメッセージの変更)や、トラック内の新しい場所へのドラッグ(メッセージが送信されるタイミングの変更)が可能になります。また、1つのトラックからイベントをカット、またはコピーして、そのイベントの配置に適した他のトラックの中にペーストすることもできます。

アクションが(前に挙げた PrintThreeThings アクションの例のように)異なった種類の ticmd オブジェクトを含んでいる場合、トラックは異なった種類のイベントエディタを持つことができます。次の例では、タイムラインが演奏される際、タイムラインは、タイム 0 のときに int 60 を、タイム1000 ミリ秒(1秒)のときに float 3.14 を、さらにタイム 2000ミリ秒(2秒)のときに シンボル start を送信し、それらがMaxウィンドウに表示されます。

Display ボタンをクリックして、ポップアップメニューから Time Units を選ぶと、時間を表示するフォーマットを選択することができます。この例のような 分:秒:フレーム という時間表示(フィルムやビデオ用)ではなく、ミリ秒による時間表示を選択することが可能です。

タイムラインを作成する3つのステップ(アクションの作成、タイムラインの作成、タイムラインイベントの作成)が完了すると、タイムラインウィンドウの左上隅にあるテープレコーダのようなコントロールを使って、タイムラインを演奏することができるようになります。

edetonate エディタ

edetonate というイベントエディタは detonate オブジェクトのグラフィックエディタ・ウィンドウと同様な働きを持っています。これは、タイムラインからticmd にリストメッセージを送信するために使用することができます。edetonate をタイムライントラックに配置した後は、これをダブルクリックしてグラフィック・ノートイベントエディタ・ウィンドウを開くことができます。このグラフィックエディタウィンドウに関する詳細は、トピックス「Detonate」 を参照して下さい。

detonate オブジェクトは、ノートイベントのシーケンサとしての性格を持っているため、特にアクションパッチでノートイベントとして使用されるリストの送信に適しています。タイムラインが演奏される際、detonate は書き込まれたノートオンイベントを送信し、また、個々のノートのデュレーション値によって指定された時間を経た後、対応するノートオフメッセージを送信します。detonate エディタを選択し、Object メニューから Get Info... を選んでSend Note-Off オブションのチェックを外すことによって、ノートオフメッセージを送信しないように設定することができます。同じダイアログボックスで、Explode Label ボックスにエディタの名前を入力することができます。同じ名前を持つすべての detonate エディタは同じデータを共有します。また、タイプイン・アーギュメントとしてその名前を持っている1つの detonage オブジェクトとデータを共有することも可能です。


タイプイン・アーギュメントを持った1つの detonate オブジェクトは、タイムライン
の中にある同じ名前を持ったすべての
edetonate エディタとデータを共有します。

タイムライン上での edetonate の水平の長さが実際のデュレーションを決定するという点に注意して下さい。edetonate エディタウィンドウの中でのタイムとデュレーションの値は、実際には相対的な時間になり、タイムラインが演奏される際にその長さはスケールされ、タイムラインの中で edetonate が占めている時間に合わせられます。edetonate エディタを選択し、Object メニューから Fix Width コマンドを選ぶと、edetonate の長さは、収められているシーケンスの長さと同じになります。その後、edetonate(あるいはそれが関連づけられているパッチャー内の detonateオブジェクト)の内容に何らかの変更を加えた場合には、再び Fix Width コマンドを適用して、演奏の際に時間がスケールされないようにしなければなりません。

etable エディタ

1つの整数を受信する ticmd オブジェクトにメッセージを送信することが可能なイベントエディタには、実際には、int (ナンバーボックスのような形をしたもの)、etableefunc の3種類があります。

etable エディタを作成すると、トラックのイベント領域にはグレイのボックスが表示され、その左上隅には対応する ticmd オブジェクトの名前が表示されます。

このボックスをダブルクリックすると、何度も目にしたことのあるようなテーブルエディタが表示されます。

テーブルエディタに何らかの変更を加えると、それが etable に表示されます。タイムラインを演奏する際には、etable は、格納している値を、左から右へという順で対応するticmd オブジェクトに送信します。タイムラインによって演奏された etable からの値は ticmd オブジェクトの中央アウトレットから出力されます。

etable の右下隅をクリックし、ドラッグすることによって、etable のサイズを変更することができます。etable を水平方向にサイズ変更した場合、タイムラインでのデュレーションが変更され、それによって値が送信される速さが変わります(etable を垂直方向にサイズ変更しても、ticmd に送信されるデータには何の影響も及ぼしません)。

タイムラインが演奏される際、etable の左端に達すると対応する ticmd オブジェクトの左アウトレットから bang が出力されます。

etable の内容は、通常、それを含むタイムラインと共に保存されます。etable を既存の table オブジェクトとリンクさせることも可能です。etable をクリックして、Object メニューから Get Info... を選ぶと、etable のラベルを入力することができるようになります。ラベルがつけられた場合、etable はロードされている同じ名前の table オブジェクトのデータを共有します。この table オブジェクトは開かれているパッチに存在するか、またはタイムラインの中のアクションに存在するものが対象となります。etable にラベルがつけられた後でも、ダブルクリックしてその内容をグラフィカルに編集することができます(リンクされている table の内容も変更されます)。

efunc エディタ

efunc エディタを作成すると、etable の場合と同じようなグレーのボックスが表示されます。この efunc エディタボックスの中をクリックすることによって点が指定され、その点の位置に対応する x、y のペアの数値が格納されます。efunc の中をクリックすると、クリックした場所に対応する x、y の実際の値がタイムラインウィンドウの上部に表示されます。違った場所をクリックするごとに、新しい x、y の数値のペアが作成され、efuncはすべての点を左から右へ線分で結びます。


すでに入力済みの点は、ドラッグするだけで移動させるこ
とができます。ドラッグの際には点の座標が表示されます。

タイムラインが efuncエディタの中にあるデータを再生する場合には、それぞれの x、y ペアのうちの yの値(縦軸の値)を、対応する ticmd オブジェクトの中央インレットから、x の値に対応したタイミングで送信します。efunc は、 デフォルトでは点と点の間の補間は行ないません。これは、点と点を接続している線分に沿って中間値を送信するわけではないということです。タイムラインに点と点の間の値を補間させる(点の間の「ランプ(傾斜)」を値で埋める)ためには、efunc を選択して 、Object メニューから Get Info... を選び、Interpolation Time Grain に 0 以外の値を入力します。この数値によって補間の解像度が決定されます。この数値が 1 の場合、最も高い解像度による補間が行なわれ、efuncticmd に対して、毎ミリ秒ごとにその時点での値を送信するようになります。値が 100 の場合には、efunc はその時点での値を毎秒10回送信するようになります。それ以外の値についても同様です。

Object メニューから Get Info... を選んで、efunc のx 座標、y 座標の最大値を指定することによって、x、y グラフの値の範囲を設定することもできます。また、ラベルを入力することによって、このラベルと同じ名前を持った funbuff オブジェクトにefunc エディタをリンクさせることも可能です。efunc エディタを funbuff オブジェクトとリンクさせると、efunc エディタによって funbuff を編集することができるようになり、その結果は同じ名前(ラベル)を持つすべての funbuff オブジェクトに反映されます。

efunc エディタの水平方向でのサイズ変更は etable エディタのサイズ変更と同じ効果(サイズ変更によって、タイムラインの演奏の際に数値の送信に費やされる時間の合計(デュレーション)が変更される効果)を持っていますが、補間出力のグレイン(補間出力をする時間間隔)は変わりません。

emovie エディタ

前に述べたように、新しいタイムラインをトラックを作成し、これを特定のアクションに割り当てたとき、アクションの中にある各々の ticmd オブジェクトのコマンド名は、そのタイムライントラックのイベント部分に置くイベントとして利用できるようになります。さらに、タイムラインで使用されるアクションの1つがムービーオブジェクトを含んでいて、その中に(ムービーファイルを指定するタイプイン・アーギュメントや read メッセージによって)すでにQuickTime ムービーが読み込まれている場合、そのアクショントラックにムービーウィンドウが開かれ、新しいタイプのイベントエディタを使用できるようになります。この新しいイベントエディタは emovie と呼ばれています。このエディタでは、トラック内に start イベントを置くことができ、このイベントは直接 movie オブジェクトに送信されます(ticmd を経由する必要はありません)。

トラックに emovie イベントを置くと、ムービーの開始時間がわかりやすいように「サムネイル」というムービーのミニチュアフレームがトラックに表示されます。

もちろん、アクションの中で、他のメッセージを送信する場合と同じように、ticmd オブジェクト経由で movie オブジェクトにメッセージを送信することも可能です。

例えば、ムービーの読み込みを行なうメッセージ(read という語の後にムービーファイル名を続けます)や、ボリュームを設定するためのメッセージ、ムービーの開始を行なうためのメッセージは、すべてタイムラインから ticmd を経由して送信することができます。

タイムライン・ウィンドウの機能

タイムライン・ウィンドウの左上隅には、タイムラインを演奏するために、テープレコーダのようなコントロールがあります。その次には時計のアイコンと数値が表示されています。この数値はタイムラインによって認識されている「カレントタイム(現在の時刻)」(タイムラインの進行の現在位置)を示しています。このカレントタイムはまた、タイムライン上の小さな矢印でも示されています。カレントタイムの次には、カレントカーソルポジション(現在カーソルがある位置)が表示されています。この表示は、実際にマウスでトラックにイベントを配置する際に、位置の基準として使えるため便利です。

新しいトラックを作成するには、Track と表示されたポップアップメニューからアクションを選択します。トラックの左側部分には、トラックナンバとトラック名が表示されます。トラック名は最初はトラックのアクションと同じ名前に設定されていますが、この名前は自由に変更することができます(名前をクリックして編集するだけです)。名前を変更しても、トラックに割り当てられたアクションには影響を与えません。

トラックナンバをクリックすると、トラック全体が選択されます。複数のトラックを選択する場合、トラックを1つ選択した後に、他のトラックのトラックナンバを [Shift] + クリックします。1つ以上のトラックを選択すると、Edit メニューのコマンドを使ってそのトラックを編集することができるようになり、カット(切り取り)、コピー、ペースト(貼り付け)、すべてのイベントのクリアなどが可能になります。トラックを再配置するためには、トラックを選択し、Edit メニューから Cut を選んだ後、カットしたトラックを配置したい場所の上にあるトラックを選択して、Edit メニューから Paste を選びます。新しいトラックを作成したとき、他のトラックが選択されていない場合には、新しいトラックのトラックナンバは常に1になります。選択されているトラックがある場合には、新しいトラックは、選択されているトラックの中で最も大きいトラックナンバを持ったトラックの後に配置されます。トラックの下側のエッジを上下にドラッグするだけで、トラックが表示される高さを調整することが可能です。これによって、イベントを配置するために、トラックの垂直方向のスペースを広げることができます。

トラック名の隣にある小さなMax アイコンをダブルクリックすると、そのトラックのアクションパッチを見ることができ、さらに編集も可能です。同じアクションに対して複数のトラックがある場合、そのアクションパッチに何らかの変更を行ない、保存すると、それらすべてのトラックに直ちに反映されます。

個々のトラック内のすべての内容(トラック名、アクション名、およびすべてのイベント)を別のファイルとして保存しておき、後でタイムラインに再びロードすることができます。トラックの小さなMax アイコンをクリックしてマウスボタンを押したままにしておくと、ポップアップメニューが表示されます。メニューにはOpen Track File... と Save Track As...という2つの項目があり、これによって個々のトラックの保存、再ロードを行なうことができます。

Display ポップアップメニューを使うと、タイムラインウィンドウの外観を、必要に応じて変更することができます。タイムユニットはいくつかの異なったフォーマットから1つを選んで表示させることができます。このフォーマットには、ミリ秒、MIDI クロック、SMPTE フォーマットによる 分:秒:フレーム(24fps。25fps、30fps)があります。トラックを縦方向にたたんで1行で表示させ、多くのトラックを一度に見ることができます。また、トラックを拡げて、全体を表示できる高さに戻し、すべての内容を見ることもできます。Display ポップアップメニューから Show Mute Buttons を選ぶと、トラックの左部分にミュートボタンが表示されます。これは、トラック毎にイベントを停止させる場合に役立ちます。さらに、Autoscroll While Playing というオプションによって、演奏の際に、タイムラインを時間の進行にあわせてスクロール表示させるか、あるいは最初の表示のままにしておくかを選択できます。Display メニュで指定した設定はすべてタイムラインファイルの一部として保存されます。タイムラインのクロックは、ロードされているパッチの中の任意の setclock オブジェクトに合わせることができます。タイムラインウィンドウの上部にある小さな時計アイコンをダブルクリックすると、現在ロードされているすべての setclock オブジェクトを項目として持つポップアップメニューが表示されます。

ポップアップメニューからそれらのうちの1つを選ぶと、そのsetclock オブジェクトにタイムラインを合わせます。ポップアップメニューから Internal を選ぶと、タイムラインが、Max内部のミリ秒によるクロックに合わせるように設定を戻します。

Macintosh では [Command]キー、Windowsでは [Control]キーを押し下げたままでイベントをクリックすると、そのイベントのメッセージがアクションパッチの中の ticmd オブジェクトに送信されます。これによって、タイムラインを編集しながら、メッセージの効果をテストすることができます。タイムラインウィンドウの上部のルーラ(時間目盛り)のすぐ下にあるタイム選択エリアでタイムラインの一部を選択し、ループボタンをクリックすると、タイムラインの一部をループ再生することができます(これも、編集しながらタイムラインをテストする場合に役に立ちます)。

marker と呼ばれるもう1つのイベントエディタがあります。これは、パッチの中の comment オブジェクトと同じような働きを持っています。marker には、タイムライン内のイベントに関するコメントや注を書き込むことができ、(さらに重要な点は)タイムライン上の特定のポイントを指定することができます。パッチ内の timeline オブジェクトが、メッセージsearchの後にタイムライン内の marker の最初の語を続けたメッセージを受信すると、タイムラインの現在位置を示すポインタは、その marker の位置に移動します(marker の検索の例は、チュートリアル41を参照して下さい)。タイムラインウィンドウに新規のマーカートラックを作成することもできます。このトラックは marker イベントを保持するだけで、他には何も実行しません。

timeline オブジェクトが メッセージ markers の後に timeline のアウトレットナンバの内の1つを続けたメッセージを受信すると、トラック内の marker それぞれが持つ最初の語を、指定されたアウトレットから送信し、これを menu オブジェクトへ格納することができます。この menu を使って(menu の出力するテキストの前に search という語を追加することによって)、タイムライン上の現在位置を示すタイムポインタを、特定の marker の位置に移動させることができます。

パッチ内でのタイムラインの使用

これまでは、タイムラインエディタウィンドウの使用法について説明をしてきた岳でした。アクショントラックや、それらのアクションに送信されるメッセージからなるスコアの作成を完了した後は、このスコアを後日使用するために保存したいと考えるに違いありません。Edit メニューから Save を選び、タイムラインを保存して下さい。Max はタイムラインファイルをパッチとは異なるものとして認識します。再びファイルを開くと、タイムラインエディタウィンドウの中にタイムラインのスコアが再度表示され、これを演奏したり、さらに編集を加えたりすることができます。タイムラインをファイルとして保存しておくと、これを自動的にパッチの中へロードすることもできます。

パッチの中で timeline オブジェクトを作るとき、アーギュメントを書き込まない場合、新しいタイムラインエディタウィンドウが自動的に開きます。しかし、タイムラインファイル(Max のファイルサーチパス内に置かれている必要があります)のファイル名を timeline のアーギュメントとして書き込んだ場合には、そのタイムラインファイルが自動的にロードされ、 timeline オブジェクトに play メッセージを送信することによって、タイムラインスコアを演奏することができるようになります。

read メッセージを使うと、同じ timeline オブジェクトに別のタイムラインファイルをロードし、演奏することができます(すでに読み込まれていたタイムラインスコアは置き換えられます)。

実際にこのような動作を行なうためには、タイムラインファイルが Max のファイルサーチパス内(Edit メニューの File Preferences.. コマンドによって指定したフォルダ、または、ロードしようとするパッチと同じフォルダ)にあり、 そのタイムラインで使用されるアクションパッチも特定の場所(File Preferences ダイアログで指定された Timeline Action フォルダ、または、timeline オブジェクトを含むパッチと同じフォルダ)になければなりません。timeline オブジェクトは、オブジェクトのコントロールや、パラメータの変更を行なうために、他にも非常に多くのメッセージを理解します。詳細は、Objects セクションの timeline のページを参照して下さい。

メッセージがタイムラインから送信されると、すべてのアクションは、ほとんどの場合目に見えないアクションパッチ内で起きるため、パッチの中でタイムラインを演奏することは、やや不思議なものに感じられるでしょう。しかし、タイムラインとそれを含んでいるパッチとの間で相互作用の関係(インタラクション)を作ることも可能です。タイムラインのイベントトラックから送信されるメッセージ(アクションの中の ticmd オブジェクトに送信されます)は、timeline オブジェクトのアウトレットからリダイレクト出力させることができます。実際、アクションはそれ自身で timeline オブジェクトのアウトレットからメッセージを出力させることができます。このようなインタラクションは、アクションパッチの中の tiout オブジェクトを使い、timeline オブジェクトが自分自身でアウトレットを作成することによって実現できます。

timeline オブジェクトに書き込まれる2番目のアーギュメントは、オブジェクト自身が持つアウトレットの数を指定します(最初のアーギュメントは、自動的に読み込まれるタイムラインファイルの名前です)。

メッセージをこれらのアウトレットから出力するためには、タイムラインで使用されるアクションの中で、少なくとも1つのアクションはtiout オブジェクトを持っていなければなりません。アクションの中の tiout オブジェクトに送られる、あらゆるメッセージは、そのアクションを使用する timeline オブジェクトの対応するアウトレットから出力されます。次の例は、このアクションを使用する timeline オブジェクトの左アウトレットから整数を、2番目のアウトレットからシンボルを出力するように特別に設計されたアクションです。

timeline のアウトレットから出力される実際のメッセージは、タイムラインイベントエディタで発生したものである必要はありません。メッセージはアクションパッチ自身の内部で生成されたものでも構いません。次は、"countseconds" イベントを理解するアクションの例です。

タイムラインメッセンジャーイベント countseconds start が発生すると、アクションは timeline オブジェクトの左アウトレットから整数を送信し始め、countsecontds stop イベントが発生するまで続けます。

そのため、このケースでは、タイムラインがシンボル(startstop)を ticmd に送信し、それをきっかけとして、アクション自身が整数(start メッセージを受信してから経過した秒数のカウント)を tiout に送信して、これが timeline オブジェクトのアウトレットから出力されます。。

これまで見てきたように、タイムラインはタイムラインウィンドウのボタンによって、あるいはパッチの中の timeline オブジェクトのインレットで受信したメッセージによってコントロールできます。タイムラインをコントロールする第3の方法は、自分自身によるコントロールです。アクションパッチは、thistimeline と呼ばれるオブジェクトを持つことができます。これは、そのアクションを使用しているタイムラインにメッセージを送り返すことができるものです。アクション内の thistimeline のインレットで受信したメッセージはタイムライン自身に送信されるため、そのアクション自身を使用しているタイムラインをコントロールすることが可能になります。

このアクションの例では、トラックの "goto" イベントは、タイムラインの位置を、タイムライン自身が与えた任意の時刻に移動させます(ここでは、タイムラインは自分自身に対して、タイムライン上の 5 秒の位置に移動するよう命じています)。この例の中では、アクションに条件が組み込まれているため、スペースバーが押し下げられている場合にだけ、アクションによって"goto" イベントが発生します。タイムラインとタイムラインを含むパッチ、そしてタイムラインが使用するアクションの間に生じるインタラクション(相互作用)は、考えられる限り複雑なものにすることができます。あらゆる瞬間に、timeline オブジェクトを含むパッチ、タイムライン自身、タイムラインが使用するアクションの中のどのオブジェクトが実際に動作するのかを確実に把握するために、プログラムは慎重に計画される必要があるでしょう。

参照

mtr マルチトラック・シーケンサ
setclock タイミングオブジェクトのクロックの速さを修正します
thistimeline タイムラインからタイムライン自身にメッセージを送信します
ticmd タイムラインからのメッセージを受信します
timeline 時間の流れに基づいた、Max メッセージの「スコア
tiout timeline オブジェクトからメッセージを送信します
チュートリアル 41 Max メッセージのタイムライン