<< 目次に戻る

YM2203・YMZ294・SP0256を使ったハードウエアMIDI音源の製作
MIDIのキホン

MIDIのハードウエア仕様

USART機能がついている16F877などでは信号レベル特に意識することはありませんが、MIDI関係の回路の設計時に役に立つかもしれない知識です。

信号レベル・通信速度

ビット構成
MIDIの信号は1のビットが5V、0のビットが0Vです。無通信時は電圧が5Vで、スタートビットの0Vが来ることにより受信動作が始まります。
1オクテットは下位ビットから送信され、最後にストップビットの5Vが来ることにより正しく受信できたと判断します。ここに0が入っていれば「フレーミングエラー」とみなします。

通信速度は31,250bpsで、1ビットを送信するのに必要な時間は32us。10ビット分でトータル320usかかることになります。
USARTが無い場合や320us以内に1オクテット分の処理が終わらない場合、受信バッファが必要になります。


MIDIデータの内容

イベント イベント イベント
MIDIのデータは基本的に上のような形式で表現されます。 まず「イベント」では、送られてくるデータがどういう種類のものなのか?と、何チャンネルで受信されるデータか?という2点の内容が入っています。それぞれ4ビットづつの内容なのでデータの種類は16通り、チャンネル指定も16通りしかありません。 続くパラメータで、実際のデータの内容を指定します。パラメータは1個または2個が付加されます。

MIDIの規格では「ランニングステータスルール」というものがあり、 先頭のイベント部分がまったく同じデータの場合には「イベントの1オクテットを省略できる」ことになっています。つまり、
イベント パラメータ パラメータ パラメータ パラメータ パラメータ
というデータ列を、
イベント パラメータ パラメータ パラメータ パラメータ
として表現することができます。 比較的連続して送られてくるであろうピッチベンド奏法などをこの方式で転送すると、理論上転送速度が33%アップします。 ただし、リアルタイムメッセージが割り込んで来るので、前回のイベントを保持しておかないと正しく演奏できなくなります。


<< 目次に戻る