MIDIの使用

MIDIの使用

Windows では、正しくシステムにインストールされ、「サウンドとオーディオデバイス」プロパティ(スタート - 設定 - サウンドとオーディオデバイス)に表示されているすべての MIDI デバイスは Max/MSP の MIDI I/O として使用することができます。

Macintosh では、アプリケーションフォルダの中のユーティリティフォルダにある OS X アプリケーション、「オーディオMIDI 設定」を使って MIDI 設定と設定の書き出しができます。

外部のMIDI装置との通信を行なうために使用できる標準 MIDI ドライバ(Mac では coremidi、Windows では midi_mme)に加え、追加の MIDI ドライバが利用できます。

midi_adrewire このドライバは、Max が ReWire のクライアントである場合に、ReWire のホストアプリケーションとMIDI の送受信を行ないます。

augraph このドライバは、Macintosh プラットフォームのオペレーティングシステムに組み込まれた DLS シンセサイザを扱います。

midi_dm このドライバはWindowsプラットフォームのオペレーティングシステムに組み込まれた DLS シンセサイザを扱います。

Maxの動作中に、複数の、アクティブなMIDIドライバオブジェクトを持つことが可能です。

MIDI セットアップ・ウィンドウの使用

Max アプリケーションは複数の MIDI ポートを文字 (a-z)によって、あるいは 16 を超える MIDI チャンネルナンバによって指定します。これには、Core MIDI デバイス名と Max の文字を使った仕組みの間で、一定の変換が必要になります。この変換を行うために MIDI Setup ウィンドウを使うことができます。File メニューから MIDI Setup... を選ぶと、この MIDI Setup ウィンドウが表示されます。

MIDI セットアップウィンドウには、MIDI デバイス名がリスト表示され、これに対してアルファベットによる省略文字とMIDI チャンネルの範囲を関連づけることができます。

Max のデフォルトの MIDI 出力デバイスは、オペレーティングシステムによってサポートされる内蔵シンセサイザになっています。Macintosh の場合、これは AudioUnit DLS シンセサイザですが、このシンセサイザは内蔵サウンド(General MIDIバンク)と、レベル2 サウンドフォントファイルの両方をサポートします。 Windows の場合は、Microsoft DirectMusic DLS シンセサイザです。Microsoft DLS シンセサイザが サウンドフォントファイルをサポートしない点に注意して下さい。DLS シンセサイザを使った作業についてのより詳しい情報は、この章で後述する「DLS シンセサイザの使用」というセクションを参照して下さい。

アルファベットによる省略文字をデバイスの MIDI チャンネルの範囲に割り当てるためには、希望する値をポップアップメニューから選びます。省略文字を使うと、noteinnoteout のようなMIDI オブジェクトのアーギュメントとして、デバイス名の変わりに省略文字を入力することができるようになります。チャンネルオフセットは、MIDI オブジェクトが 複数のデバイスと送受信を行なう場合の MIDI デバイスの識別のために、受信したデータのMIDIチャンネルに加算されます。例えば、デバイスにチャンネルオフセット 32 が設定されている場合、Max に送られるノートオンメッセージは notein オブジェクトのチャンネル 33 以上として出力されます。同様に、noteout オブジェクトのインレットに MIDI チャンネル 33 を送ると、それに続く、左インレットに送信されるint は、チャンネルオフセットが 32 に指定されたデバイスへの MIDI チャンネル 1によるノートメッセージを作ります。

MIDI オブジェクトのためのデフォルトデバイス

デバイス名を指定せずに MIDI 出力オブジェクトを作った場合、オブジェクトは MIDI Setup ウィンドウで表示される出力デバイスのリストの中の最初のデバイスに MIDI を送信します。

特定のポートに割り当てられていない MIDI 入力オブジェクト(すなわち、アーギュメントとして MIDI デバイス名や省略文字を持っていないMIDI デバイス)は、すべての入力デバイスから受信します。この場合、Max パッチが実際にどのデバイスがオブジェクトに対する入力源であるかを判定するには、入力される MIDI チャンネルナンバを、個々のデバイスに指定されている MIDI オフセットと比較することが唯一の方法になります。入力源に関わらずすべての MIDI 入力を同様に扱いたい可能性もあるため、この方法は役に立ちます。

midiin オブジェクトはこの動作の例外です。これは、アーギュメントとしてデバイスが指定されない場合、入力デバイスリストの最初のデバイスからのデータのみを受信します。複数のデバイスが同じ省略文字を持っている場合、Max はその省略文字をアーギュメントとしたMIDI 入力または出力オブジェクトが作られたときにリストの最初にあったものを使います。デバイスの省略文字を変更しても、既存のオブジェクトには影響を与えません。しかし、それ以降 MIDI 出力オブジェクトに送られる port メッセージがアーギュメントとして省略文字を持つ場合、これに対しては影響を及ぼします。

簡易デフォルトセットアップ

Auto Setup ボタンをクリックすると、すべてのデバイスの省略文字とチャンネルオフセットを設定します。Max は入力デバイスと出力デバイスの双方のために、標準の省略文字とチャンネルオフセットの組を作ります。それぞれのリストの最初のデバイスは省略文字 a とチャンネルオフセット 0 を、2番目のデバイスは、省略文字 b とチャンネルオフセット 16 を与えられ、以下同様になります。

DLS シンセサイザの使用

Macintosh と Windows のどちらも、MIDI 再生のためにDLS(Downloadable Soundfont) シンセサイザを提供します。外部 MIDI デバイスを使用したくない場合、Max から MIDI によってこの DLS シンセサイザを直接操作することができます。デフォルトでは、1つの augraph(Mac OS Xの場合) または midi_dim(Windowsの場合) ポートが作られます。しかし、追加の MIDI シンセサイザポートを作って、新しい DLS サウンドバンクファイルをそれぞれに割り当てることができます。現時点でDLS シンセサイザを扱うためには、メッセージボックスのテクニックを使う必要があります。これは、メッセージボックスの中にセミコロンとそれに続くメッセージのテキストを入力し、メッセージボックスをクリックすることによって、そのメッセージを名前を付けられたオブジェクトに送信する方法です。

次は、DLS シンセサイザにアクセスするために使用できるメッセージのリストです。

ポートの作成:

;#SM createoutport <portname> <drivername>

drivername は、Windows では midi_dm、Macintosh では augraph になります。portname は割り当てるポートの名前です。次はその例です。

;#SM createoutport myOtherSynth midi_dm
;#SM createoutport myOtherSynth augraph

ポートの削除:

;#SM deleteoutport <portname> <drivername>

drivername は Windows では midi_dim、Macintosh では augraph になります。portname は 任意に選んだ名前です。次はその例です。

;#SM deleteoutport myOtherSynth midi_dm
;#SM createoutport myOtherSynth augraph

DLS バンクのロード (タイプ 1 または 2)

;#SM driver loadbank <filename> <portname>

filename は既存の DLS バンクファイルの名前、portname はこのバンクを使っているポートの名前です。portname が省略された場合、すべての DLS ポートはこのバンクを使います。Mac OSX では、DLS バンクファイルを検索するときに /Library/Audio/Sound/Banks というフォルダがサーチパスに追加されます。

デフォルトのGMバンクのロード

;#SM driver loadbank 0 <portname>

リバーブのオン/オフ切り替え

;#SM driver reverb 1/0 <portname>

augraph、midi_dm 共にデフォルトではリバーブはオフになっています。

MIDI出力レイテンシの設定 (midi_dm のみ)

;#SM driver latency <time> <portname>

time はミリセカンドによる値、portname はこの値をセットするポートのポート名です。例えば、次のメッセージでは、レイテンシを 10 ミリ秒に設定します。

;#SM driver latency 10 portname

Macintosh 上での仮想入出力デバイス

Max には、同じコンピュータで動作する他のプログラムにMIDIを送信したり、他のプログラムからMax に MIDI を送信するために使用できる2つの入出力デバイスがあります。出力デバイスは仮想デバイスです。

これらは、Macintosh MIDI セットアップウィンドウでは、"from Max/MSP 1" および "from Max/MSP 2" と表示されています。これらは他のプログラムの MIDI ソースとなり、Max からの MIDI 接続を確立するために他のアプリケーションで MIDI 入力として選択することができます。

"to Max/MSP 1" および "to Max/MSP 2" と表示された入力デバイスは、他のアプリケーションで MIDI 出力デバイスとして選択できるため、仮想デスティネイション(virtual destinations)として知られています。

これは、Macintosh の MIDIKeys アプリケーションをを使って Max に MIDI を送信している例です。出力先は to Max/MSP 1 と表示されているため、キーボードをクリックすると、MIDI が Max の仮想デスティネイションに送られます。

同様に、Listen to port ポップアップメニューはMax/MSP 1 からの Max の仮想ソースが表示されています。MIDI ノートが Max から from Max/MSP 1 デバイスに送信されると、それらは MIDIKeys のキーボードに表示されます。

仮想 MIDI ポートの追加

デフォルトでは、Max は入力と出力双方のための「仮想」MIDI ポートを作ります。MIDI システムに追加の仮想ポートを作りたい場合、上に書いたものと同じメッセージボックステクニックを使って、createoutportcreateinport メッセージを送ります。

;#SM createoutport <portname> <drivername>
;#SM createinport <portname> <drivername>

portname はポートに割り当てた名前、drivername は使用しているドライバの名前になります(現在、CoreMIDI がサポートされています)。次の2つのメッセージはその例です。

;#SM createoutport myvirtualport CoreMIDI
;#SM createinport myvirtualport CoreMIDI

このメッセージでは、仮想MIDI 入力と仮想 MIDI 出力のポートはそれぞれ、"myvirtualport" という名前がつけられています。これらの仮想ポートは、Max/MSPセットアップの一部として保存されません。そのため、Max を起動する毎に作成しなければなりません。

参照

ポート MIDI ポートの指定方法
setclock タイミングオブジェクトのクロックスピードを間接的にコントロールします。