DAW悪戦苦闘記

DAWやMIDIを通じてちまちまとDTMを楽しむ記録+MIDI検定1級到達記

MIDIシステム・メッセージの概要整理など

MIDI検定2級1次試験におけるMIDIメッセージ規格関連の必出重要項目は、大別すると以下の3分野である:

  • チャネル・メッセージ(Channel Voice および Channel Mode*1
  • システム・メッセージ(後述)
  • 同期関連: MIDI規格ではシステム・メッセージの範囲*2。これとは別にSMPTE規格がある(一般にはこちらの方が認知度高い)。

このうちもっとも複雑かつ難解なのはシステム・メッセージで、機能別に更に細分化される。公式ガイドブック第3章における個別項目の説明は詳細にして必要十分だと思うが、相互関係があまり明快に書かれておらず、用語の羅列で混乱しやすい。そこで、頻出項目を中心として自分なりに簡潔にざっくりとまとめておきたい。

システム・メッセージの仕様と構造

System Common

MIDIシステム全体の設定に関するデータ。これはさらに、System Exclusive (SysEx) とそれ以外に分かれる*3

System Exclusive (SysEx)

ステータス・バイトがF0HであるSysExは、機種依存データなどをメーカーの裁量によって自由に設定できる領域である。しかし非常にややこしいことに、機種依存ではないメーカー共通規格もSysExの範疇に入る(後述)。

第1データ・バイトにはメーカーIDが入るが、このうち特定の3つの値は下記のメーカー共通規格、すなわち Universal System Exclusive Messages という用途に使われる*4:

  • 非営利 Non Commercial (7DH)
  • Non Real Time (7EH)
  • Real Time (7FH)

Non Real Time と Real Time は非常に数多くのメッセージ仕様が定義されているが、さすがにこれらをすべて記憶する必要は全然ない。一例として、テンプレSMFにも盛り込まれているGM2オンのメッセージ(下記参照)だけを理解していればもう十分である。

SysEx以外

SysEx以外は、ソング・セレクトなど非リアルタイムな再生制御に関するデータで、後述の System Real-Time と組み合わせて使用されることになる。

System Real-Time

簡単に言えば、MIDIデータ(ソング)の再生制御に関わるデータ。再生位置決めと再生開始/終了、クロックデータ(MIDIクロック)の送信など。

参考資料

詳細は公式ガイドブックの第3章第5および6節を参照。その他の参考文献として以下の資料を挙げる。

テンプレSMFのSysExメッセージの中身

応用例として、協会より提供されるテンプレSMFに書かれたSysExメッセージの中身を解読してみると、以下の通りとなる(バイト列左より順番に):

  1. F0H: Status Byte(SysExデータの始まり)
  2. 7EH: Manufacturer ID - Universal System Exclusive / Non Real Time
  3. 7FH: Device ID("7FH" = 全機器対象)
  4. 09H: Sub-ID #1 - General MIDI System
  5. 03H: Sub-ID #2 - GM2音源使用オン
  6. F7H: EOX(データ終わり)

試験対策的な話

音源の発音に関わるチャネル・ボイス・メッセージ以外、特にシステム・メッセージ全般がなかなか頭に入って来ないのは、率直に言って実際の使用頻度が非常に低いからである。ことにDAWによる制作ではこれを意識する場面は皆無であろう。

またMIDIの同期関連についても、多数の機材を同時使用するライブ演奏家を除けば、DAW中心の制作ではほぼ使わなくなっている技術ではないかと思う。

以上のような背景を考慮すると、必要以上に深く理解したところで実務上のメリットは少ないか、またはまったく見返りがない可能性が高いため、システム・メッセージと同期関連については例年の出題パターンを丸暗記してしまい、それ以外の問題が出されたらあっさり捨ててしまっても構わないと思う。幸い、旧制度に比べればMIDI規格関連の出題比率は縮小しており、何題か捨ててしまっても合否にはほぼ影響ない範囲である。

*1:Channel Mode Messages は要するにチャネルごとの一括制御データのこと。リセット(サウンドオフ含む)と再生モード指定(モノかポリか)が主要な役割。

*2:SMPTEとの対応上、絶対時間制御データとして System Common (ステータス・バイトF1H)にMIDIタイムコードが追加されたことを認識しておけば十分ではないか。

*3:公式ガイドブックでは、SysExと System Common を完全に別物として記述している。

*4:Universal SysEx という場合には、非営利を含まない分類もある(つまり Non Real Time とReal Time の2種のみ)。公式ガイドブックでは非営利を含んでUniversalとしている。ただし非営利の具体的な定義内容は不明。実態として使用されていないと思われる。