Roland SC-55のバルクダンプデータの解析資料
ORIG latest: 93/10/30
HTML latest: 99/2/21
目次
§はじめに
この資料は、わいやぎが個人的に調査をして作成したものです。よって、本資料に関して Rolandなど関連会社への お問い合わせをなさることは御遠慮下さい。
解析は新しいタイプのSC-55(mkIIにあらず)を用いて 行っています。古いタイプのSC-55や、CM-300などの互換機種など では一部記載と違うデータになっている可能性があります。
一応それなりのチェックをしましたが、記述に間違いが潜んで いるかも知れません。間違いや記述漏れなどを見つけたられました ならば、御連絡して頂ければ幸いです。
§全体的な構造
バルクダンプのデータは、SC-55の内部メモリのイメージを Exclusive messageを用いてそのまま出力したような形式となって います。よって、バルクダンプされたデータをそのまま楽器に 送り返すことで、楽器はそれをエクスクルーシブの固まりと認識し、 内部メモリを書き換えていくのです。
また、内部メモリの量はかなりのものですので、1回のExclusive messageでその全てを出力するようなことは出来ず、データ128バイト ごとに1つのエクスクルーシブとして、分割して送信されます。
例: F0 41 10 42 12 address data(128byte) checksum F0
マニュアルでは、この分割単位を「パケット」と表現しています。
また、マニュアルを見ると"nibblized"という言葉が頻出しますが、 これは要するに、0x4e → 0x04 0x0e のように、1byteの上下4bitを それぞれ別のバイトに分けて、2byteに分けるという意味です。
§大まかなアドレス配置
マニュアルにも書かれてはいますが、
- 48 00 00 ~ 48 00 0F : SYSTEM PARAMETER(16byte)
- およそ楽器全体の設定(パート全体の音量レベルなど)が入って います。
- なお、送信データはnibblizedされていることに注意して下さい。 要するに、音量レベルが127(=0x7F)なら、0x07 0x0F となっている わけです。以下同様。
- 48 00 10 ~ 48 01 0F : PATCH COMMON(128byte)
- SYSTEM PARAMETER で入り切らなかった楽器全体の設定 (コーラスのタイプとか)が入っています。
- アドレスが0010~010F だから、サイズは256byteであると勘違い しないようにして下さい。アドレスの各数字は7bitであることを 考慮すると、128byteとなります。
- 48 01 10 ~ 48 1D 0F : PATCH PART
- 各チャンネルの設定です。実際には更に各チャンネルごとに、
- 48 01 10 ~ 48 02 6F : block 0(channel10)
- 48 02 70 ~ 48 04 4F : block 1(channel1)
- 48 04 50 ~ 48 06 2F : block 2(channel2)
- (以下続く)
- と分割されています。
- 各チャンネルの設定です。実際には更に各チャンネルごとに、
- 49 00 00 ~ 49 1E 17 : DRUM MAP PARAMETER
- ドラムスの設定です。
- 49 00 00 ~ 48 0E 17 : map 0
- 49 10 00 ~ 48 1E 17 : map 1
- と、分かれています。
- ドラムスの設定です。
§データ解析結果
表中の初期値はGSリセット時のもので、nibblizeされています。また、 サイズは10進表記です。設定値がアスキー文字列の場合には、値の 範囲の代わりに、初期文字列を書いてあり、サイズに満たない部分 には、0x00 が詰められているものとしています。
パラメータ名称の表記はマニュアルに従いましたが、記述にない ものはカッコでくくって、適当な名称にしてあります。
Partというのは大体MIDI channelのことだと思って差し支え ありません。受信MIDI ch.を変更出来るため、(マニュアルは) このような表現をしているものと思われます。 *1: 液晶パネル横のボタン[ALL]点灯時に 表示されている文字列。
*2: REVERB,CHORUS MACROの種類によって初期値が 変わるので注意。上記はGSリセット時(Hall2,Chorus3)の初期値。 *3: 音色のバリエーションナンバー。 俗にバンクと呼ばれるもの。
*4: 受信MIDIチャンネルの設定(文字通りの意味)。 0~15が それぞれチャンネル1~16に対応し、16でoffとなる。
*5: 各ビットが次の意味を持つ。
- 下位4ビット:ASSIGN MODE.
- 0000 = SINGLE (同じ音階の音を重ねて発音すると、前の音が消える)
- 0001 = LIMITED-MULTI (同じ音階の音を重ねて発音しても、前の音が残る )
- 0010 = FULL-MULTI
- 第4ビット :Norm か Drum かの区別。
- 0 = Norm
- 1 = Drum
- 第5,6ビット :ドラムのマップ
- 00 = Norm
- 01 = Drum1 (map0)
- 10 = Drum2 (map1)
- 最上位ビット:Mono,Poly mode
- 0 = Mono
- 1 = Poly
初期値は、block順に、0xB0,0x81,0x81,....。要するに 全トラックPolyで、Part10は SINGLE,Drum1だけど、あとはみんな LIMITED-MULTI,Norm。
*6: SC-55のパネルのK.SHIFTに出てくるもの。 バイアス値0x40が加えられていることに注意。以後、 バイアス値の詳細は略。
*7: SC-55のパネルでFine Tuneと表示されるもの。 nibllizedを解くと 値が8bitとなることに注意。
*8: 俗に言うvolume。
*9: SC-55のみ設定範囲が0x0E~0x50(-50~+16)。 以降の機種は全て 0x0E~0x72(-50~+50)。
*10:SC-55のパネルで Mod. Depthと表示されるもの。
*11:SC-55のパネルで Bend Rangeと表示されるもの。
ドラムスのノートごとのパラメータは、ノート番号(27~88)を オフセットとして、アドレス先頭から調べることで得ることが出来る。
例えば、map0 のHigh Q (NOTE No.27)のPLAY NOTE NUMBER は、
[49 00 00] + 27*2(nibblized) = [49 00 36]
として参照することで、03 0C = 0x3C を得ることが出来る。
各初期値は全てNOTE番号とリズムキットに依存するので、省略した。
*12:note on時発音される音階。打楽器のトーンの高さ。 ちなみにCM-300のマニュアルでは"PLAY KEY NUMBER" と なっている。
この値はNRPN 0x1C(ドラム・インストゥルメント・ピッチ・ コース)を用いて変更することも出来るが、これを用いる時は 相対指定(0x40を基準とした±で初期値の増減の指定をする) であることに注意。
*13:この値はNRPNを用いて変更することが出来る (エクスクルーシブメッセージを用いる必要がない)。
*14:これでグループ指定をすることで、 「同時に鳴らない音」を 設定することが出来る。例えば、通常GS音源の ハイハットの音色3つはそれぞれ同時に鳴らすことは出来ないが、 それはこのグループ指定がなされているからである。 マニュアルに[EXC?]と書かれている のが、そのグループ設定の一覧で ある(?は数字)。
実際にこれを設定するには、グループ指定したい 音色全てに同じ グループの番号を割り当てれば良い。例えばハイハットの音色3つは、 全てグループ番号1が割り当てられている。グループ番号0を指定すると、 グループ指定されていないものとされる。例えばハイハットのグループ指定を 0に すると、ハイハットのオープンとクローズを同時に鳴らすことも 可能になる。
なお、マニュアルには書かれていないが、[Scratch Push]と [Scratch Pull]は、グループ番号7でグループ指定されている。
当然、ドラムセットのプログラムチェンジ(=リズムセット変更) に応じて、ここの初期値も変わる(例:ORCHESTRA Set)。
*15:(nibblizeを解いた後の)上位4ビット、 下位4ビットがそれぞれパラメータNOTE ON,NOTE OFF に対応する。
このパラメータは、ノートオン、ノートオフを受け付ける(=1)か 受け付けない(=0)かの設定を行う。初期値では、ノートオンを 受け付け、ノートオフは受け付けないようになっている。
Rx.NOTE ONを0にすることは自殺行為(発音できなくなる)なので 止めておくべきだが、Rx.NOTE OFFを1にすると、鳴っている音を 途中で止めることが出来るようになる。これを用いれば、例えば 故意にクラッシュシンバルの音を止めることが(note offを送ることで) 出来るようになる。
*16:SC-55のパネルに出るドラムキットの名前。
E-mail: