Roland SC-55のバルクダンプデータの解析資料

ORIG latest: 93/10/30

HTML latest: 99/2/21

目次

    1. はじめに
    2. 全体的な構造
    3. 大まかなアドレス配置
    4. データ解析結果

§はじめに

この資料は、わいやぎが個人的に調査をして作成したものです。よって、本資料に関して 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: