MIDI チュートリアル 5:
高度な MIDI シーケンシング

イントロダクション

このチュートリアルでは、seq オブジェクトの用途を拡げます。ここでは、新しい MIDI データのレコーディング、既存のファイルの読み込み、シーケンスのディスクへの書き出しを行ないます。また、seq オブジェクトの第2アウトレットを使って、現在格納されているシーケンスのループ再生を行ないます。

既存のシーケンスを利用できることは便利です。さらに、Max 内で新しいシーケンスのレコーディングが行なえるため、シーケンスやフレーズを作成、保存し、後で再利用することができます。このシーケンシングに関するチュートリアルでは、レコーディング、ファイル入出力機能、seq オブジェクトの出力を使ったループ再生の機能に焦点をあてます。

シーケンスのレコーディング

チュートリアルを開いて下さい

チュートリアルには、いくつかの領域があり、それぞれ様々なパッチのロジックを持っています。左端の領域(Recording と表示されています)では、今までのMIDI チュートリアルで見たような、MIDI 入力を選択する基本的な設定が示されています。seq オブジェクトは生のMIDI ストリームを前提に作られています。そのため、このレコーディング入力は midiin オブジェクトから直接行なわれています。

umenu から有効なMIDI 入力デバイスを選んで下さい。すると、このシーケンスに MIDI データをレコーディングできるようになります。さらに、midiout オブジェクトをダブルクリックして、有効な MIDI 出力デバイスを選んで下さい。midiin オブジェクトは、seq オブジェクトにデータを提供するのに加え、midiout にもデータを送っています。そのため、MIDI コントローラを演奏して、接続をテストすることもできるはずです。

メッセージボックスをクリックして、接続されたコントローラからMIDI データをいくつか送信して下さい。stop というメッセージボックスをクリックすると、レコーディングは停止します。その後、start というメッセージボックスをクリックすると、たった今レコーディングしたMIDI データを再生して聞くことができます。seq オブジェクトは完全な MIDI ストリームをレコーディングするため、コンティニュアスコントローラ、ピッチベンドメッセージ、プログラムチェンジ、その他あらゆる MIDI データを送信することができます。これらのデータもノートメッセージと同じようにレコーディングされ、再生されます。前のチュートリアルと同じように、ここでもseq とmidiout の間でmidiflush オブジェクトを使い、シーケンスをストップさせたときに鳴ったままになっているノートオンメッセージを停止させます。

シーケンスの読み込みと保存

シーケンスをレコーディングした後、それを保存したいと思うこともあるでしょう。そのような場合には、ファイル処理メッセージを活用します。右上の領域(File Handling という表示されています)には3つのメッセージが示されています。これらのメッセージは、seq が解釈し、ファイルの保存や読み込みを行なうものです。ここでは、write メッセージは重宝です。write メッセージをクリックすると、ファイル保存用ダイアログが開き、シーケンスをディスクに保存することができるようになります。write メッセージをクリックし、新しくレコーディングされたシーケンスをディスクに保存して下さい。

ディスクからファイルを読み込むには2つの方法があります。その1つは読み込むファイルを明示的に指定する方法、もう1つはファイルオープン用ダイアログを開いて、ディスクに保存されている任意の MIDI ファイルから選ぶ方法です。読み込むファイルを明示的に指定するには、read メッセージのアーギュメントとしてファイル名を使用します。アーギュメントを持たない read メッセージを送信すると、任意の利用可能なMIDI ファイルを選ぶことができるように、ファイルオープン用ダイアログが開きます。read seq_sc.midi というメッセージをクリックして、テスト用のシーケンスファイルを読み込んで下さい。現在読み込まれているシーケンスが変更されたことを確認するために、start メッセージを使ってシーケンスを再生して下さい。アーギュメントを持たない read メッセージをクリックして、保存してあるシーケンスを選んで下さい。start メッセージをクリックすると、以前私たちが演奏したシーケンスが再生されるはずです。

ループ再生

前のチュートリアルでは、シーケンスの再生が終了した時点でseq の右アウトレットから bang メッセージが送信されることを見ました。この情報を使って、シーケンシングのタスクとして一般的な、シーケンスのループ再生を実行することができます。右下の領域(Loop Playback と表示されています)には、gswetch2(グラフィック表示されるゲート)があり、toggle オブジェクトがクリックされている場合には、bang メッセージをstart メッセージに戻すようになっています。これは、シーケンサのコントロールに右アウトレットの出力を利用しているシンプルな例です。このbang は、他のシーケンスの読み込みや、2つめのseq オブジェクトのスタートに使用することもできます。さらに、Max 内で行なわれる全く異なった処理のスタートに使うことでさえも可能です。

結び

seq オブジェクトの持っている強みの1つは、生の MIDI ストリームをレコーディングできることです。seq は、ほとんど、あらゆるタイプのMIDI メッセージを取得し、格納することができます。read および write コマンドを使用して、レコーディングされた MIDI データを保存することができ、それを再度読み込むことも可能です。このデータは MIDI コントローラから受信したものでも、Max で生成されたものでも構いません。seq の右アウトレットを使って、再生パラメータをコントロールすることも、あるいは全く新しい Max の処理をスタートさせることもできます。seq オブジェクトは、数多くのシーケンシングのタスクを実行する、強力で、便利なツールであると言うべきでしょう。

 

参照

seq MIDIシーケンサ
midiflash 生のMIDI データで、鳴り止まないノートオンに対するノートオフを送信します。