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で構成されます。
- データ通信は次のように行われます。
- 送信側は受信側に送信開始を知らせるために「Dump Header」を送信します。自発的にこのコマンドを発行することもあれば、受信側からの「DUMP REQUEST」に対する応答として働く場合もあります。
- 送信側は「Dump Header」の発行後に2秒間のウエイトを取ります。これは、受信側の受け入れができる状態かどうかを判断する時間です。
- 2秒間のうちに応答のコマンドが返ってこない場合は、非同期通信とみなして「Data Packet」を垂れ流しで送信します。
- --- ここまでが非同期通信---
- 応答のコマンドが「ACK」ならば、同期通信として「Data Packet」を送信します。
- 応答のコマンドが「NAK」ならば、送信側は再び「Dump Header」を送信します。
- 応答のコマンドが「Cancel」ならば、送信側はサンプルの転送を中断します。
- 応答のコマンドが「Wait」ならば、送信側は「ACK」「NAK」「Cancel」を受信するまで無期限に待機します。
- 同期通信の場合は「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 | デバイスID | 0~127 |
bL bH | サンプルナンバー | 0~16383 |
cc | サンプルビットレート | 8~28(bit) |
dL dM dH | サンプリングレート サンプル単位の時間をナノ秒で表したもの
48KHz | 61 22 01 |
44.1KHz | 14 31 01 |
32KHz | 12 74 01 |
30KHz | 35 04 02 |
24KHz | 43 45 02 |
22.05KHz | 27 62 02 |
16KHz | 24 68 03 |
15KHz | 6B 08 04 |
| 0~2097151 |
eL eM eH | サンプルの長さ | 0~2097151 |
fL fM fH | サスティンループ スタートポイント | 0~2097151 |
gL gM gH | サスティンループ エンドポイント | 0~2097151 |
hh | ループタイプ
0x00 | forwards only |
0x01 | alternating |
0x7F | loop off |
| 0x00、0x01、0x7F |
- ◆ Data Packet 送信側 → 受信側
- サンプルデータの転送パケットです。ビットレートにより1パケット中に入るサンプル数が 20、30、60 と変わります。
- F0 7E aa 02 bb <120 bytes> cc F7
記号 | 内容 | 範囲 |
aa | デバイスID | 0~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 | デバイスID | 0~127 |
bL bH | サンプルナンバー | 0~16383 |
- ◆ ACK 受信側 → 送信側
- データ転送をするときのハンドシェイク用メッセージで、「OK」の意味です。
- F0 7E aa 7F bb F7
記号 | 内容 | 範囲 |
aa | デバイスID | 0~127 |
bb | パケットナンバー | 0~127 |
- ◆ NAK 受信側 → 送信側
- データ転送をするときのハンドシェイク用メッセージで、「NG」や「リトライ」の意味です。
- F0 7E aa 7E bb F7
記号 | 内容 | 範囲 |
aa | デバイスID | 0~127 |
bb | パケットナンバー | 0~127 |
- ◆ Cancel 受信側 → 送信側
- データ転送をするときのハンドシェイク用メッセージで、サンプルダンプシークエンスを強制終了する時に送信します。
- F0 7E aa 7D bb F7
記号 | 内容 | 範囲 |
aa | デバイスID | 0~127 |
bb | パケットナンバー | 0~127 |
- ◆ Wait 受信側 → 送信側
- データ転送をするときのハンドシェイク用メッセージで、これを送られた側は次のハンドシェイクが来るまで動作を停止します。
- F0 7E aa 7C bb F7
記号 | 内容 | 範囲 |
aa | デバイスID | 0~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 | デバイスID | 0~127 |
bL bH | サンプルナンバー | 0~16383 |
cL cH | ループナンバー
00 00 | サスティンループ |
7F 7F | すべてのループを消去するの意味?(一部の機種では未サポート) |
| 0~16383 |
dd | ループタイプ
0x00 | forwards only |
0x01 | alternating |
0x7F | loop 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 | デバイスID | 0~127 |
bL bH | サンプルナンバー | 0~16383 |
cL cH | ループナンバー | 0~16383 |
|