歴史
MIDI(ミディ)Musical Instrument Digital Interfaceは、シンセサイザーなど電子楽器の相互接続のために開発されたプロトコルですが、今ではエンターテイメント産業の制御分野でも活用されています。
MIDIの歴史は1980年代に遡り、当時、急成長していたキーボードやシンセサイザーなどの電子楽器を相互に接続し、演奏の基本要素となる、音の高さ、音色、強さなどの情報を数値化して伝送し、楽器の同期演奏やMIDI対応の楽器から出力したデータを録音(記録)する等を実現するために、複数の電子楽器メーカーが合意して、メーカーや機種に依存しない電子楽器の相互接続を可能とする共通プロトコルとして開発されました。
元は楽器の演奏データを伝送するためのプロトコルですが、デジタルデータが故にコンピューターとの相性がよく、ショー産業ではシーントリガーやコントローラーの同期などに活用され、現在も多くの照明コントローラー、オーディオインターフェースなど様々な製品でMIDIがサポートされています。ここでは楽器演奏のためのMIDIではなく、制御用のプロトコルとしてのMIDIについて取り上げます。
概要
MIDI機器の物理接続には5ピンのDINコネクターを使ったツイステッドペアケーブルが利用され、非同期のシリアル通信で片方向の通信を行う。そのため双方向の通信には2本のケーブルを使い、それぞれの機器にあるMIDI-InとMIDI-Out をつなぐ必要がある。ソフトウェア上では、送信装置と受信装置、それぞれで使用するMIDIチャンネルを決め、同じMIDIチャンネルを設定した機器同士で、そのチャンネル内のMIDIコマンドを送受信し制御を行う。
MIDI接続は基本的に2つの装置を1対1でつなぐピアtoピア接続ですが、MIDI THRUポートを備えた装置からディジーチェーンでスレーブ側装置を複数つなぐことが可能なほか、送信するMIDI装置と受信する装置との間にMIDIスプリッター等を挟んで複数の装置をつなぐことも可能。
目次
ハードウェア仕様
MIDI機器の入力はグラウンドループなどの障害を避けるため、オプトアイソレート(絶縁)されて、UARTに接続されます。転送速度は31.25Kbit/sの非同期シリアル転送、スタートビット、データ8ビットにストップビットを加えた10bitで通信が行われる。回路は5mAのカレントループタイプとし、論理0を電流が流れる状態とする。
送信側と受信側は一対一で接続され、それぞれのMIDIポート(機器はすべてメス口)のOutとInを一本のMIDIケーブルで接続する
MIDIメッセージとMIDIチャンネル
MIDIのデータはメッセージという形式で送信され、チャンネルメッセージとシステムメッセージに分類される。通常、使用されるMIDIメッセージがチャンネルメッセージと呼ばれるいわゆるCやEなど音のデータに対応したMIDIノートなどのメッセージになります。
チャンネルメッセージのデータはMIDIチャンネルで区別されて送信されます。MIDIチャンネルはポート番号のような概念と考えると理解しやすい。送信側の装置がMIDIチャンネル1で送信する時、そのメッセージを受け取れるのは同じMIDIチャンネル1を設定した受信装置になります。MIDIチャンネルは16個のチャンネルが用意され、MIDIチャンネルメッセージを送受信する際には、送信側と受信側の装置でMIDIチャンネルを同じ番号に設定するだけで、受信装置はMIDIチャンネルメッセージを受信できます。MIDIにおける送受信の設定はほぼ、このMIDIチャンネル番号のみです。
チャンネルメッセージの種類
MIDIは楽器間で同期やデータの送受信の目的で開発されており、MIDIの機器間で伝送するデータは大部分を音に関連するチャンネルボイスメッセージが占めます。それらは個々の音階のオンやオフ、強弱を示すベロシティー、鍵盤以外の操作を示すコントロールチェンジ、プログラムチェンジなどになります。それぞれのメッセージは0~127の番号で指定されます。
メッセージ | 値 | |
MIDI ノートオン | 0〜127 | 鍵盤を示す音の番号であるノート番号に対して、さらにオンの場合は、音の強弱を示すベロシティー値(0~127)の指定があります。 |
MIDI ノートオフ | 0〜127 | 音をオフにした状態、スイッチがオンからオフになるようなイメージ |
コントロールチェンジ | 0〜127 | |
プログラムチェンジ | 0〜127 |
制御の現場では、これらチャンネルメッセージを使うことで、特定のメッセージの受信を条件に一定の動作を行います。例えばMIDIノート12がオンになったら、照明シーンやオーディオプロセッサーのプリセットを実行するなどの条件設定をすることで、外部からMIDIノート12onというメッセージを受け取るとそれらが実行されるという具合に使用します。単にノートオンだけでなく、MIDIノート12のベロシティー値が128になったらというような条件設定も可能です。
MIDIのチャンネルメッセージは8ビットの解像度があるため、メッセージごとに128個の値をもつことができ、これにより4つのメッセージで512個のチャンネルを制御できる点で照明制御のプロトコルのように、512個のパラメーターを制御することが可能です。そのためメディアサーバーが登場した時代には、MIDIを使ってメディアサーバーの各種パラメーターを操作した時代ががあります。楽器の同期などで開発されたMIDIですが、シンプル且つ多チャンネルの制御が可能なことから、制御用のプロトコルとして、現代においても利用されています。