戻る

S-760 Unofficial Database
Sample Dump Standard


1.Sample Dump Standardとは...?
Sample Dump Standardとは、音源やシーケンサなどの間のMIDIケーブルを通してデジタル音声データを交換するために規格化されたシステムエクスクルーシブです。この規格は万国共通であり、メーカーを超えたデータの交換が可能です。また、S-760を含め多くのサンプラーがこの方式をサポートしていますが、転送速度が遅く純粋にMIDIオンリーで転送という手法は無くなってきているのではないでしょうか? S-760も同様で、SCSIを使った転送のほうが何十倍ものスピードが出ます。SCSIの転送は、プロトコルの解析ができないので、ここでは規格本来のMIDIでの転送方法を取り上げます。

2.データのやり取り
データの交換には非同期通信と同期通信があります。

非同期通信
非同期通信とは、送信側から受信側へ繋がる1本のMIDIケーブルを通して、音声データを送信する場合をいいます。
同期通信
同期通信とは非同期送信の内容に加え、受信側から送信側へ繋がる2本目のケーブルを接続し、データがうまく送られたかどうかの確認を取りながら送信する場合をいいます。
これらの通信方式は、音源やシーケンサによって変わってくるので、双方が同じ方式でやり取りしなければいけません。

システムエクスクルーシブは、受信側から発行されるコマンドDUMP REQUEST・ACK・NAK・Wait・Cancelと、送信側から発行されるDump Header・Data Packetで構成されます。

データ通信は次のように行われます。
  1. 送信側は受信側に送信開始を知らせるために「Dump Header」を送信します。自発的にこのコマンドを発行することもあれば、受信側からの「DUMP REQUEST」に対する応答として働く場合もあります。
  2. 送信側は「Dump Header」の発行後に2秒間のウエイトを取ります。これは、受信側の受け入れができる状態かどうかを判断する時間です。
  3. 2秒間のうちに応答のコマンドが返ってこない場合は、非同期通信とみなして「Data Packet」を垂れ流しで送信します。

--- ここまでが非同期通信---

  1. 応答のコマンドが「ACK」ならば、同期通信として「Data Packet」を送信します。
  2. 応答のコマンドが「NAK」ならば、送信側は再び「Dump Header」を送信します。
  3. 応答のコマンドが「Cancel」ならば、送信側はサンプルの転送を中断します。
  4. 応答のコマンドが「Wait」ならば、送信側は「ACK」「NAK」「Cancel」を受信するまで無期限に待機します。
  5. 同期通信の場合は「Data Packet」の送信中も同様の応答コマンドが用いられ、通信のフロー制御が行われます。

システムエクスクルーシブには、一般的なメッセージにある「チャンネル」の概念がありません。接続された同じモデルの機器すべてにサンプルの転送が行われるとまずいので、エクスクルーシブの3オクテット目にある「デバイスID(0~127)」を用いて個別の機器を指定します。

3.コマンドリファレンス
ここからはコマンドと実際のデータについて解説します。色のつけてあるオクテットはがデバイスID、がパラメータです。
Sample Dump Standardのバイト表現は、イベントデータにならないようにするため7ビット構成で、LSBから送信します。

◆ Dump Header 送信側 → 受信側

サンプルデータの前に転送されるデータで、サンプリングレートなどの情報がやり取りされます。

F0 7E aa 01 bL bH cc dL dM dH eL eM eH fL fM fH gL gM gH hh F7

記号内容範囲
aaデバイスID0~127
bL bHサンプルナンバー0~16383
ccサンプルビットレート8~28(bit)
dL dM dHサンプリングレート
サンプル単位の時間をナノ秒で表したもの
48KHz61 22 01
44.1KHz14 31 01
32KHz12 74 01
30KHz35 04 02
24KHz43 45 02
22.05KHz27 62 02
16KHz24 68 03
15KHz6B 08 04
0~2097151
eL eM eHサンプルの長さ0~2097151
fL fM fHサスティンループ スタートポイント0~2097151
gL gM gHサスティンループ エンドポイント0~2097151
hhループタイプ
0x00forwards only
0x01alternating
0x7Floop off
0x00、0x01、0x7F

◆ Data Packet 送信側 → 受信側

サンプルデータの転送パケットです。ビットレートにより1パケット中に入るサンプル数が 20、30、60 と変わります。

F0 7E aa 02 bb <120 bytes> cc F7

記号内容範囲
aaデバイスID0~127
bbランニングパケットカウント。パケットを認識するために数値を1ずつインクリメントし、7F→00と戻る。0~127
データ実際のデータ。120バイトに満たないときは00で余りを埋める。0~127
ccチェックサム (120バイトのデータのチェックサム)0~127

◆ Dump Request 受信側 → 送信側

サンプルデータを送ってもらうときに送信します。これが受理されると Dump Header と Data Packet が送られてきます。

F0 7E aa 03 bL bH F7

記号内容範囲
aaデバイスID0~127
bL bHサンプルナンバー0~16383

◆ ACK 受信側 → 送信側

データ転送をするときのハンドシェイク用メッセージで、「OK」の意味です。

F0 7E aa 7F bb F7

記号内容範囲
aaデバイスID0~127
bbパケットナンバー0~127

◆ NAK 受信側 → 送信側

データ転送をするときのハンドシェイク用メッセージで、「NG」や「リトライ」の意味です。

F0 7E aa 7E bb F7

記号内容範囲
aaデバイスID0~127
bbパケットナンバー0~127

◆ Cancel 受信側 → 送信側

データ転送をするときのハンドシェイク用メッセージで、サンプルダンプシークエンスを強制終了する時に送信します。

F0 7E aa 7D bb F7

記号内容範囲
aaデバイスID0~127
bbパケットナンバー0~127

◆ Wait 受信側 → 送信側

データ転送をするときのハンドシェイク用メッセージで、これを送られた側は次のハンドシェイクが来るまで動作を停止します。

F0 7E aa 7C bb F7

記号内容範囲
aaデバイスID0~127
bbパケットナンバー0~127

4.Loop Point Extension
Loop Point Extension は Sample Dump Standard が定義された後に追加されたコマンド類です。
ループポイントに関するデータのやり取りなので、サンプルを再度転送する必要が無く、16384個所までのループ地点を指定できます。
残念ながら S-760 では使用できないコマンドですが参考に載せておきます。

◆ Loop Point Transmit 送信側 → 受信側

ループポイントに関するデータが入っています。

F0 7E aa 05 01 bL bH cL cH dd eL eM eH fL fM fH F7

記号内容範囲
aaデバイスID0~127
bL bHサンプルナンバー0~16383
cL cHループナンバー
00 00サスティンループ
7F 7Fすべてのループを消去するの意味?(一部の機種では未サポート)
0~16383
ddループタイプ
0x00forwards only
0x01alternating
0x7Floop off
0x00、0x01、0x7F
eL eM eHループ スタートポイント0~2097151
fL fM fHループ エンドポイント0~2097151

◆ Loop Point Request 受信側 → 送信側

ループデータを送ってもらうときに送信します。これが受理されると Loop Point Transmit が送られてきます。

F0 7E aa 05 02 bL bH cL cH F7

記号内容範囲
aaデバイスID0~127
bL bHサンプルナンバー0~16383
cL cHループナンバー0~16383


Update 2004/12/23