Detonate:
MIDI シーケンスのグラフィカルな編集

detonate の使用

detonate オブジェクトは柔軟なシーケンシング、グラフィカルな編集作業、スコアの追従を行なうことができるオブジェクトです。このオブジェクトは、時間、デュレーション(持続)、およびその他の情報と共にノートのリストを記録することができます。ノートのリストはシングルトラック(format 0)、またはマルチトラック(format 1) MIDI ファイルとして保存することができ、detonateseq、あるいは Cubase のような他のシーケンサによってあらかじめ保存されている MIDI ファイルを読み込むことができます。detonate オブジェクトをダブルクリックすると、その内容がグラフィックエディタ・ウィンドウに表示され、その中でマウスを使ってノートの追加や修正を行なうことができます。また、このオブジェクトは、ほとんど follow オブジェクトと同じような「スコアリーダ」として動作することもできます。これは、入力されてくるピッチ値を観察し、入力されたピッチが保存されているスコアの中のカレントのピッチと同じである場合にそれを報告します。

seqfollowtimeline などの他のシーケンシングオブジェクトと異なり、実際には、 detonate は自分自身の内部クロックによって動作するわけではありません。タイミングやデュレーションの情報はパッチの他の部分から detonate の中に記録されなければなりません。そして、パッチは、その情報を使って、detonate から再生されるノートのリズムや速さを決定しなければなりません。これは、detonate に、思うような動作を正確に行なわせるためには、何らかの Max プログラミングによる処理の追加が必要になるということを意味しますが、一方で、ノンリアルタイム・レコーディング、連続して変化する再生テンポ、望むようなリズムでのシーケンスのイベント1つ1つのトリガといったような、他のシーケンシングオブジェクトでは得ることのできないような録音・再生オプションをプログラミングできるということも意味します。

detonate へのレコーディング

detonate はMIDIノートのシーケンサとして使用することができ、ピッチ、ベロシティ、MIDI チャンネル情報を格納することができます。基本的な MIDI 情報は、ノートが発生するタイミングや、ノートが終了するまでのデュレーション(持続時間)を指示するための時間情報と結びつける必要があります。ノートが発生するタイミングは、各々のノートイベントごとに左インレットで「デルタタイム」を記録することによって決定されます。「デルタタイム」は前のノートの開始からそのノートの開始までの時間をミリ秒で表した数値です。ノートのデュレーションは最後に4番目の(デュレーション)インレットで受信している数値によって決定されます。


デルタタイムとノートの持続時間をノートイベントの一部としてレコーディングします。

デュレーションは、最後に受信した同じピッチを持つノートオフメッセージ(ベロシティが 0のノート)によって決定することもできます。ノートオンの後に、対応するノートオフイベントが受信されると、2つのイベントの間のデルタタイム(実際には、その2つのイベントの間に他のイベントがあれば、それらのデルタタイムの合計)を使ってノートオンメッセージのデュレーションを設定し、ノートオフイベントを別のイベントとしてレコーディングすることはありません。


ノートオンとノートオフの間のデルタタイムに基づいて、detonate にデュレーションを決定させます

トラックナンバは6番目のインレットに与えます。これは、レコーディングされたノートを別々のストリームに分け、マルチトラック MIDI ファイルとして保存する場合に役に立ちます。異なったトラックにレコーディングされたノートはグラフィックエディタウィンドウでは異なった色で表示されます。トラックナンバは、 detonate で一定の音だけをミュートしたり、プレイバックの際に一定の音だけを変更したりする場合の判定基準として用いることができます。

7番目と8番目のインレットは追加情報をノートイベントの一部としてレコーディングしておきたい場合に使用します。例えば、それぞれのノートごとに別々のビブラートデプスやパン位置をレコーディングし、そのデータをプレイバックの際に送信するといったことが可能です。


追加情報はそれぞれのノートイベントに結び付けられます。

detonate エディタ・ウィンドウ

ロックされたパッチャーで detonate オブジェクトをダブルクリックすると、グラフィックエディタ・ウィンドウが開き、その内容を見たり、編集したりすることができるようになります。レコーディングされたノートはエディタウィンドウ上で「ピアノロール」のような画面として見ることができます。時間が x 軸、ピッチが y 軸として表示され、各ノートのデュレーションは時間軸上の長さの割合で、ベロシティはノート上の数値として表されます。マルチトラックファイルの各トラックは異なった色で表示されます。

特定のノートを選択して編集するためには、ウィンドウの左上にあるパレットから選択ツールを選び、編集したいノートの上でクリックするか、ノートを囲むようにドラッグします。複数のノートを選択することも可能です。そのためには、それらのノートを囲むようにドラッグするか、1つずつ [Shift] + クリックします。

選択ツールで選択されたノートの1つをドラッグするだけで、ノートが発音されるタイミング、ピッチ、デュレーションを変更することができます(tweak(微調整) ツールを使うと、より細かい解像度でドラッグすることができます)。ノートのどこをクリックするかによって、カーソルの形が変わります。

  • ノートの左側をクリックした場合、水平にドラッグすることによって、選択されたノートが発生するタイミングを変更することができます。
  • ノートの右側をクリックした場合、水平にドラッグすることによってノートのデュレーションを変更することができます。
  • ノートの中央をクリックした場合、垂直にドラッグしてノートのピッチを変更することができます。

また、ウィンドウ上部にあるナンバーボックスをドラッグすることによって、選択されたノートの任意のパラメータを変更することもできます。スコアに新しいノートを追加したい場合には、鉛筆ツールでドラッグするだけで追加できます。書き込む場所によって、ノートがスタートするタイミング、ピッチ、デュレーションが決定されます。それ以外のすべてのパラメータは、ノートを書き込んだときにウィンドウ上部に表示されている値によって決定されます。

エディタウィンドウの表示の変更

ウィンドウの左下にあるリサイズアローをクリックすると、スコア表示のズームイン、ズームアウトを行なうことができます。

スコアの一部分をズームインするためには、ズームツールを選び、拡大したい場所をクリックします。Macintosh では [Option] + クリック、Windows では [Alt] + クリックすることによってその場所をズームアウトすることができます。

ノートの表示は、通常はこの章で述べられているような形になっていますが、各々のパラメータの表示方法を設定し直すことで表示方法を変更することができます。パラメータ名の左にあるアイコンをクリックすると、アイコンがポップアップメニューになり、そのパラメータの表示方法を選ぶことができるようになります。そのため、例えば、ノートの上の数値でベロシティを表示する代わりに、MIDI チャンネルの表示を選択することができます。


与えられたパラメータの表示を変更するために、アイコンはポップアップメニューになります

実際には、ポップアップメニューから Edit Parameter... を選ぶことによって、パラメータの表示方法に関する、それ以外の多くの要素を変更することが可能です。

ここでは、パラメータ名、値が取ることのできる最小値と最大値、指定されない場合にノートに適用されるデフォルト値を変更することができます。Graph Interval はパラメータが y軸の値として表示された場合にのみ、表示に影響を与えます。これは、値が y軸に沿って表示される間隔をコントロールします(上の例では12半音ごとに表示されます)。Default Scaling は、パラメータが表示される軸のデフォルトのズームを決定する係数です。1は最も大きいズームを表し、値が大きくなるほどスケールは小さくなります。パラメータ1(ピッチ) の場合のみ、y 軸数値の代わりにMIDI ノートとして表示することができます。このオプションは他のパラメータではすべて使用不可になっています。スタートタイム(最も左のパラメータ)は x軸にのみ表示されるため例外として扱われます。そのため、Graph Interval と Default Scaling というパラメータは x 軸を表しています。

すべてのパラメータの名前と特徴が容易に変更できるという事実は、detonate が任意の数値のリストを集めるものとして使用できることを意味しています。detonate はノートイベントを表すリストを保持しておくために設計されていますが、この数値は(Max のなかのほとんどすべての数値がそうであるように)実際にはあらゆるものを意味することができます。そのため、実質的には、値をグラフィカルに表示し、編集したい任意の整数リストの集合を格納、復元するためにdetonate を使用することができます。

編集用のショートカット

コンピュータのキーボード上の特定のキーは編集ツールを切り替えるためのショートカットになっています。鉛筆ツールを使用している場合、Macintosh では [Option] キー、Windows では [Alt]キーを押すと、テンポラリの(選ばれている)ツールを選択ツールに変更することができ、その逆も同様です。Macintosh では [Command] キー、Windows では [Control] キーを押すと、テンポラリは tweak(微調整)ツールに変更され、Macintosh では [Control] キー、Windows では 右クリックによってテンポラリはズームツールに変更されます。ノート上で [Shift] + クリックを行なうと、そのノートがカレントの選択範囲に追加され、あるいは選択範囲から除外されます。

detonate を使う上でのテクニック

detonate をノートイベントを時間軸上でプレイバックするシーケンサとして使用するためには、a) 個々のイベントのデュレーションとデルタタイムの録音を行なうために値を作成し、b)何らかのタイミングオブジェクトを使って detonate がノートデータを出力するスピードをコントロールする必要があります。ノート間の時間を決定するために、おそらく、デルタタイム値を用いることになるでしょう。

次の例は、リアルタイムで、受信したMIDI ノートメッセージから直接デルタタイムとデュレーションをレコーディングする簡単な方法を示しています。

ここでは、record メッセージを detonate に送信すると同時に、タイマをスタートさせています。受信した個々のノートメッセージはタイマに経過時間を報告させ、タイマを再スタートさせます。この経過時間はピッチ、ベロシティ、チャンネルと共にレコーディングされます。個々のノートイベントのデュレーションの値は detonate 自身が計算します。detonate はノートオンからノートオフまでの間に経過した時間を測り、その時間差をデュレーション値として使用して、その後、ノートオフメッセージを捨てます。detonate が「リアルタイム」という意識をまったく持たずに動作している点は注目すべきところです。detonate は忠実に受信したデルタタイムをレコーディングするだけで、受信したメッセージの間で実際にどれくらいの時間が経過したかについては特に注意を払いません。単に受信した順にノートイベントを格納するだけです。そのため、多くの MIDI シーケンシングアプリケーションが持っている「ステップレコーディング」機能のように、detonate にノンリアルタイムでノートをレコーディングすることは容易にできます。


detonate をノンリアルタイムの「ステップ」レコーダとして使用

そして、当然のことながら、リズムやノートのデュレーションを「人工的に」作りだすことが可能であるのと同様に、すべてのノートのパラメータは、MIDI を介して演奏される代わりに Max によってアルゴリズミックに生成することが可能です。次の例では、ボタンをクリックすると、様々なピッチ、ベロシティ、パンニング、リズムを計算する数式を使って、即座に1000 個のノートによるメロディを作曲し、レコーディングしています(チュートリアル 44 のサンプルパッチでは、この結果を、調べたり、聴いたりすることができます)。

detonate は、start メッセージを受信した場合、最初のノートイベントのデルタタイムを出力するだけで他の動作は何も行ないません。その後、next メッセージを受信するたびに detonate は現在のノートのデータの残りを出力し、次のノートののデルタタイムを出力します。そのため、次に示すように、このデルタタイムを単に次のnext メッセージを送信するまでのディレイタイムとして使用することができます。


次のノートのデルタタイムは、次のノートをトリガするまでのディレイタイムとして使用されます。

スコア上の最後のノートが next メッセージによってトリガされると、その次にはもうノートが存在しないため、detonate は次のデルタタイムを出力することができません。このとき、detonate は最後のノートが演奏されたことを示すサインとして、デルタタイムの代わりに -1を出力します。パッチでこのサインを監視し、これを何らかの処理のトリガとして使用することができます。次の例では、スコアをループ再生させるために、最後のノートの演奏が完了したときに「スコアの終わり(end-of-score)」のサインを使って detonate を再スタートさせています。


-1 というデルタタイムは最後のノートの演奏が終わったことを示しています。

タイムライン の中での detonate の使用

edetonate というタイムラインイベントエディタは、タイムラインからリストメッセージを送信することができます。tiCmd にリストメッセージを送信する任意のタイムラインイベント用として edetonate をタイムライン上に置くことができ、そのイベントを表します。これをダブルクリックすると、独自のエディタウィンドウが開き、ノートイベントを書き込むことができます。そして、タイムラインがノートを演奏する際には、タイムライン上の edetonate の長さによって表される時間の範囲でノートが送信されます。

ノートイベントが生じる実際の時間はタイムライン上のイベントの長さによって決まります。これは、edetonate のエディタウィンドウで表示されるタイムユニットが、実際には相対的なタイムユニットであることを意味します。前の例で、例えば、個々のノートが1秒間のノートとして edetonate に書かれていて、イベントがちょうどタイムラインの1秒分の長さになっている場合、実際には、タイムラインの演奏の際にリストメッセージが1/6 秒ごとに送信されます。

しかし、edetonate 内のノートを、グラフィックウィンドウで書かれたものと正確に同じ速さで演奏したい場合には、edetonate を選択し、Object メニューから Fix Width を選んで下さい。edetonate の長さは変更され、ノートは edetonate のエディタウィンドウで書かれたものと同じ速さで演奏されます。

edetonate エディタを選択し、Object メニューから Get Info... を選ぶと、名前を割り当てることが可能になります。 これによって、同じ名前を持っている他の edetonate エディタや、パッチャー内でその名前をタイプイン・アーギュメントとして持つ1つの detonate オブジェクトと内容を共有することができます。

また、Send Note-Offs のチェックを外すことによって、edetonate によるノートオフメッセージの送信を止めさせることもできます。Send Note-Offs がチェックされている場合、 edetonate はノートイベントのデュレーション情報を使用して、対応するノートオフメッセージを ticmd に送信するタイミングを決定します。

参照

detonate

ノートイベントのグラフィックスコア

follow ライブパフォーマンスとレコーディングされたパフォーマンスとの比較
シーケンシング MIDI パフォーマンスのレコーディングと再生
タイムライン Max メッセージのグラフィックスコアを作成します
チュートリアル44 detonate によるシーケンシング