S-760 Unofficial Database
S-760 Parameter Exclusive
データ構成 Volume Performance Patch Partial Sample
パラメータデータの構成
エクスクルーシブのパラメータは本来8ビットの数値ですが、MIDIメッセージの構成上8ビット数値をそのまま送ることはできません。ここではタイプ別にデータの構成について解説します。
- ◆ "0"固定の予約データについて
- S-760のパラメータのうち"0"で固定になっている数値は変化させていはいけません。もしそれ以外になった場合は本体の暴走や、他のパラメータのデータ化けが生じます。また確認した現象ではパネルの表示やCRTの表示が乱れ、音声が無限ループしたりします。この後に正しいデータを送りなおしても、既にバグっている場合があるので動作は保証できません。
- また、このエリアはS-760が何らかの数値を書き込むこともあるので、数値が入っている場合はそれを変化させてはいけません。
- ◆ 8ビットが16ビット構成になっている場合 (H L)
- S-760で送信される8ビットの数値はこの形態を持ちます。
- 例) Patch → Velocity Sens Offset の場合
- このパラメータの範囲はC1h~00h~3Fhです。8ビットの数値はMSB4ビットとLSB4ビットに分けられ、送信されます。
- C1h → 0Ch 01h
- ◆ 16ビットが32ビット構成になっている場合 (lH lL hH hL)
- サンプルの番号は最大で 512 の値をとるので、値は16ビットになります。
- 例) Partial → Sample x Number の場合
- このパラメータの範囲は 0000h~01FFh,FFFFh です。サンプルを割り当てないときにFFFFhが代入されます。
- サンプルナンバーが 291(123h) の場合
- 0123h → 02h 03h 00h 01h
- ◆ 24ビットが48ビット構成になっている場合 (lH lL mH mL hH hL)
- サンプルのループポイントは24ビットの数値なので、値は24ビットになります。
- 例) Sample → Loop Start Point の場合
- このパラメータの範囲は 000008h~FFCBF2h です。
- ループ地点が 6628161(652341h) の場合
- 652341h → 04h 01h 02h 03h 06h 05h
- ◆ 8ビットパラメータが2個で16ビットの構成になっている場合 (2d 1d 4d 3d ...)
- 8ビットのうち4ビットしか使わないようなチャンネルの指定などは、この形態がとられます。
- 例) Performance → Part Channel の場合
- このパラメータは32個あるパートについて受信するチャンネルを定義するものです。
- Part01 = ch.1 , Part02 = ch.3 , Part03 = ch.10 , Part04 = ch.11 の場合、データ列は
- 02h 00h 0Ah 09hとなります。(チャンネルが1から始まっているのに対し、データは00hから始まります)
- ◆ フラグ (....8765 ....3210 ....FEDC ....BA98)
- フラグは4ビット構成で8ビットの下位桁を使用してあります。また、それを16ビットにまとめてあるため、順番がかなり入り組んでいますが、コツを掴めばすぐに操作できます。
- 上位の4ビットは多分0にしないと誤動作等に繋がると思います。
- 例) Performance → Program Change Receive の場合
- たとえば、チャンネル8と14にプログラムチェンジを受信させたくない場合は以下のようにビットを設定します。
- 00000111 00001111 00001101 00001111 (07 0F 0D 0F)
パラメータアドレスの求め方
パラメータのアドレスはエクスクルーシブデータ上での基準アドレスとパラメータサイズ、それからパラメータのオフセットから算出します。
スタートアドレス=00 0C 00 00 パラメータサイズ=96バイト パラメータの個数=512
Offset | Size | データ列 | 有効な値 | 内容 |
+0072 | 2 | H L | 0~6 | Loop Mode
0 | Forward |
1 | Forward + Release |
2 | OneShot |
3 | Forward + OneShot |
4 | Alternate |
5 | Reverse OneShot |
6 | Reverse |
|
|
- 例えば、10番目のサンプルデータでループモードのアドレスが必要な場合は、基準アドレスにオフセット加算して求めます。
96 * 10 = 960 | パラメータ全体のサイズを利用し、先頭アドレスからのオフセットを求める。 |
960 + 72 = 1032 | 10番目の先頭アドレスにLoop Modeのオフセットを加算。 |
(1032)10 → (04 08)16(8) | 10進数から16進数に変換する。
| (04 08)16(8) → (08 08)16(7) | エクスクルーシブアドレスは7ビットなので、 8ビット目を繰り上げて7ビット構成にする。
| (08 08)16(7) + (00 0C 00 00)16(7) = (00 0C 08 08)16(7) | サンプルパラメータのスタートアドレスを加算する。
|
というわけで、10番目のサンプルのループモードのアドレスは 00 0C 08 08 を指定すればいいわけです。
これを利用してエクスクルーシブデータの要求などを作ります。(F0 41 00 34 11 00 0C 08 08 00 00 00 02 62 F7)
|