MIDIについての基礎知識(少し上級編)

第6幕

MTC (MIDIタイムコード規格)

 

同期について簡単な説明

 MTRとシーケンサー(コンピュータ)の同期を取るためにSMPTEが普及すると、MIDI側もSMPTEと同じように絶対時間で管理したいと言う要求が出てきた。そこで、MIDIタイムコードと言う規格が追加されるようになった。
 MIDIタイムコードは、SMPTEタイムコードと同様に時/分/秒/フレーム時間を管理する同期メッセージとして登場した。メインとなる同期信号は、コモン・メッセージの未定義だった"F1"ステータスに追加定義されたクォーター・フレーム・メッセージである。他にも関連するメッセージとして、ユニバーサル・エクスクルーシブ・メッセージの中に、フルタイム・コード・メッセージ、ユーザー・ビット・メッセージとセットアップ・メッセージが追加定義された。

クォーター・フレーム・メッセージ F1 dd

 MIDIタイム・コードの基本となる同期信号で、時間情報(時/分/秒/フレーム)を表す。時間情報と言うもののSMPTEの場合は1フレーム毎に時、分、秒、フレーム情報を持っているが、残念ながらMIDIでは転送速度の関係でそこまでの情報を持たせることが出来なかった。そこで、時、分、秒、フレームの各情報を2バイトずつに分けて、8バイトのメッセージに分割して送信する方法が取られた。つまり、1/4フレーム毎に送られるためクォーター・フレーム・メッセージと呼ばれるわけだ。それでも、MIDIケーブルをかなりの割合で占有することは避けられない。タイムコード専用MIDIポート付きの楽器まで登場したくらいだ。もちろん、早送りや巻き戻し、シャトル・モードで出力すると確実にオーバー・フローする。クォーター・フレーム・メッセージは、再生時にのみ送られるメッセージとした。
 フレーム数の場合、"F1 0L"、"F1 1H"の2つのメッセージで送られる。ステータス"F1"に続くデータ・バイトの上位4ビット(データ・バイトは7ビット0なので実質3ビット)で何のデータか区別し、下位の4ビットがデータと言うわけだ。そして、フレーム数"HL"は"L"と"M"に分解されて送られるのである。同様に、秒、分、時間についても2つのメッセージで送られており、計8つのメッセージに分かれている。メッセージの区切りに当たるのが、"F1 0L"と言うことになっており、これが発生する時点のタイムコードが続く8つのメッセージで送られている。従って、"F1 0L"を受けてから時間の"F1 7H"を受け取るまでに2フレーム時間経過してしまう。実際のタイムコードは、読み込んだ時/分/秒/フレーム+2フレームと言うことになる。
 余談であるが、リバース再生時にもクォーター・フレーム・メッセージが送られる。この時は順番は逆で、"F1 7H"から送られ"F1 0L"で終わるのである。

セットアップ・メッセージ  F0 7E <ID> 04 〜 F7

 ノンリアルタイム・ユニバーサル・エクスクルーシブとして定義されたセットアップ・メッセージは、シーケンサーやMTRなどのキューイング・コントロールに使用される。これは、パンチ・インやパンチ・アウトのポイントや、キュー・ポイントを指定することが出来る。
 セットアップ・メッセージのヘッダー"F0 7E <ID> 04"に続くサブID#2により、セットアップ・メッセージの細かな機能が定義されている。サブID#2が"00"の場合と"0E"のイベント・ネームを除きその後には時、分、秒、フレーム、フレクショナル・フレーム(フレームの1/100)が続く。次に、2バイトのイベント・ナンバーと2バイトのアドレス・ポイントが続く。中にはアディショナル・インフォメーションを元ものもあり、任意の数のデータ・バイトが入る。ただし、インフォメーションは、あくまでもグローバルなものに限られる。

  ●スペシャル
 サブID# "00"はスペシャルと呼ばれ、初期化に必要なメッセージが定義されている。イベント・ナンバーを持たず、ここにはシンクロナイザーにオフセット値を与えるタイムコード・オフセットやMIDIキューイングの可/不可スイッチであるイネーブル・イベント・リスト/デスエーブル・イベント・リスト、アドレス設定をクリアするクリア・イベント・リスト、MTRが先に終了した場合などにシステムを止めるシステム・ストップ、イベント・ネーム・リストがある。イベント・リストとはスペシャル以外で設定される各アドレスポイント群の事である。
 また、現在のポイント・タイムを要求するイベント・リクエストがあり、これを送ると、フル・タイムコード・メッセージで現在のポジションが送り返されてくる。
  ●パンチ・イン/アウト
 あらかじめ録音のスタートやストップ・ポイントを設定するのがパンチ・インとパンチ・アウト・ポイントである。そして、それをクリアするのがデリート・パンチ・インとデリート・パンチ・アウトである。
  ●イベント・スタート/ストップ
 ループ演奏させたり、小節パターンを選択しながら演奏する場合などに使われるのがイベント・スタートとイベント・ストップである。この設定をクリアするのがデリート・イベント・スタートとデリート・イベント・ストップである。また、このメッセージにはトラック・ボリューム情報やエフェクト情報といったアディショナル・インフォメーションを加えたメッセージも用意されている。
  ●キュー・ポイント
 シーケンサーのエディット・ポイントの頭出しに使用する。ポイントの指定はキュー・ポイントで行い、ポイントのクリアはデリート・キュー・ポイントで行う。そして、このメッセージにも、イベント・スタートと同様に、アディショナル・インフォメーションを持つメッセージが用意されている。
  ●イベント・ネーム
 イベント・ネームは、イベント・ナンバーに名前を付けて管理しやすくするために用意されたもので、8ビットASCIIデータは4ビット・データに分割され、LSB、MSBの順に送られる。アディショナル・インフォメーションを付けることが出来、「リターン」や「ライン・フィード」等の画面コントロールなどを入れる事が出来る。
フル・タイムコード・メッセージ  F0 7F 7F 01 01 〜 F7

 クオーター・フレーム・メッセージは8つのメッセージに分けて時間情報を送るメッセージであったが、リアルタイム・ユニバーサル・エクスクルーシブに定義されたフル・タイムコード・メッセージは、その名のごとくひとつのメッセージで時/分/秒/フレームを送るものだ。これは、クオーター・フレーム・メッセージを送る前に送られたりする。もちろん、これを再生時にリアルタイム送信してはならない。再生時以外のタイムコードを読み出すときに使われるものだ。送信間隔も特に決まっておらず。適当なタイミングで送られる。
 フル・タイムコード・メッセージのヘッダー"F0 7F 7F 01 01"に続き、時、分、秒、フレームのデータがそれぞれ1バイトずつ送られ、最後にEOX"F7"が送られる。クオーター・フレーム・メッセージの時間同様、時間データは下位の4ビットで、その上位2ビットはタイムコードのタイプを意味する。ここで、24/25/30(ノンドロップ)/30(ドロップ)フレームを区別している。

ユーザー・ビット・メッセージ  F0 7F 7F 01 02 〜 F7

 リアルタイム・ユニバーサル・エクスクルーシブに定義されたユーザー・ビット・メッセージは、文字(8ビットASCIIコード)を入れるために用意されたものだ。ユーザー・コードやリール・ナンバーなどを入れて、データ管理に使うことが出来る。
 ヘッダー"F0 7F 7F 01 02"に続くASCIIキャラクターは4文字分で、1文字を上位4ビットと下位4ビットに分けて入れられ、4文字は8バイトで送信される。それに続き、SMPTEで定義されているバイナリー・グループ・フラグ・ビットが入る。



HOMEはMIDIのMENUに戻ります

Copyright (C) 2002-2003 Kawahagi-3-Cycle