Open shingo45endo opened 6 months ago
Hi shingo45endo, and thank you very much for the info!
I will update the wiki with your info together with some other updates I have in the pipeline soon. The SysEx definitions could probably be used to properly initialize the internal emulator values without static defaults in the source code.
Thanks. My native language is not English, so please correct it appropriately when posting it on the Wiki.
If you use the SysEx definition table for initial values, be aware of differences in ROM content between models. As far as I know, the number of entries in the SysEx tables are the same for all versions of the original SC-55, but the contents are slightly different between Ver.2.00 and others. However, in the SC-55 variants, there are additions and deletions to each entry in the SysEx table. If you plan to support other synths in the future, you may need to consider these differences as well.
Also, the structure of the SysEx table is completely different for the SC-88 series and SC-8820. The SysEx tables of the SC-88 and Pro are 8 bytes per entry, and the mechanism for indicating the end of the table is also different from the SC-55. For SC-8820, each entry is 5 bytes.
Since these initial values are the same as the internal representation of the bulk dump message, omit a description of the individual bytes.
Since there does not seem to be any documentation out there that describes the details of the SC-55 bulk dump data, I've included it below. This would be rather useful for firmware program analysis by disassembly.
ROM Addr. | RAM Addr. | Bulk Dump Addr. | Length | Category | Description |
---|---|---|---|---|---|
0x3CA00 | 0x8000 | 48 00 00 | 2 | System | Master Tune |
0x3CA02 | 0x8002 | 48 00 04 | 1 | System | Master Volume |
0x3CA03 | 0x8003 | 48 00 06 | 1 | System | LGC Controller Number |
0x3CA04 | 0x8004 | 48 00 08 | 1 | System | Unknown |
0x3CA05 | 0x8005 | 48 00 0A | 1 | System | Master Key Shift |
0x3CA06 | 0x8006 | 48 00 0C | 1 | System | Master Pan |
0x3CA07 | 0x8007 | 48 00 0E | 1 | System | Unknown |
0x3CA08 | 0x8008 | 48 00 10 | 16 | Patch Common | Patch Name |
0x3CA18 | 0x8018 | 48 00 30 | 16 | Patch Common | Voice Reserve |
0x3CA28 | 0x8028 | 48 00 50 | 1 | Patch Common | Assigner Separate Wall |
0x3CA29 | 0x8029 | 48 00 52 | 1 | Patch Common | Unknown |
0x3CA2A | 0x802A | 48 00 54 | 1 | Patch Common | Reverb Macro |
0x3CA2B | 0x802B | 48 00 56 | 1 | Patch Common | Reverb Character |
0x3CA2C | 0x802C | 48 00 58 | 1 | Patch Common | Reverb Pre-LPF |
0x3CA2D | 0x802D | 48 00 5A | 1 | Patch Common | Reverb Level |
0x3CA2E | 0x802E | 48 00 5C | 1 | Patch Common | Reverb Time |
0x3CA2F | 0x802F | 48 00 5E | 1 | Patch Common | Reverb Delay Feedback |
0x3CA30 | 0x8030 | 48 00 60 | 1 | Patch Common | Reverb Send Level to Chorus |
0x3CA31 | 0x8031 | 48 00 62 | 1 | Patch Common | Reverb Pre-Delay Time |
0x3CA32 | 0x8032 | 48 00 64 | 1 | Patch Common | Chorus Macro |
0x3CA33 | 0x8033 | 48 00 66 | 1 | Patch Common | Chorus Pre-LPF |
0x3CA34 | 0x8034 | 48 00 68 | 1 | Patch Common | Chorus Level |
0x3CA35 | 0x8035 | 48 00 6A | 1 | Patch Common | Chorus Feedback |
0x3CA36 | 0x8036 | 48 00 6C | 1 | Patch Common | Chorus Delay |
0x3CA37 | 0x8037 | 48 00 6E | 1 | Patch Common | Chorus Rate |
0x3CA38 | 0x8038 | 48 00 70 | 1 | Patch Common | Chorus Depth |
0x3CA39 | 0x8039 | 48 00 72 | 1 | Patch Common | Chorus Send Level to Reverb |
0x3CA3A | 0x803A | 48 00 74 | 1 | Patch Common | Chorus Send Level to Delay |
0x3CA3B | 0x803B | 48 00 76 | 1 | Patch Common | Unknown (SC-88 or later: Delay Macro) |
0x3CA3C | 0x803C | 48 00 78 | 1 | Patch Common | Unknown (SC-88 or later: Delay Pre-LPF) |
0x3CA3D | 0x803D | 48 00 7A | 1 | Patch Common | Unknown (SC-88 or later: Delay Time Center) |
0x3CA3E | 0x803E | 48 00 7C | 1 | Patch Common | Unknown (SC-88 or later: Delay Time Ratio Left) |
0x3CA3F | 0x803F | 48 00 7E | 1 | Patch Common | Unknown (SC-88 or later: Delay Time Ratio Right) |
0x3CA40 | 0x8040 | 48 01 00 | 1 | Patch Common | Unknown (SC-88 or later: Delay Level Center) |
0x3CA41 | 0x8041 | 48 01 02 | 1 | Patch Common | Unknown (SC-88 or later: Delay Level Left) |
0x3CA42 | 0x8042 | 48 01 04 | 1 | Patch Common | Unknown (SC-88 or later: Delay Level Right) |
0x3CA43 | 0x8043 | 48 01 06 | 1 | Patch Common | Unknown (SC-88 or later: Delay Level) |
0x3CA44 | 0x8044 | 48 01 08 | 1 | Patch Common | Unknown (SC-88 or later: Delay Feedback) |
0x3CA45 | 0x8045 | 48 01 0A | 1 | Patch Common | Unknown (SC-88 or later: Delay Send Level to Reverb) |
0x3CA46 | 0x8046 | 48 01 0C | 1 | Patch Common | Unknown |
0x3CA47 | 0x8047 | 48 01 0E | 1 | Patch Common | Unknown |
0x3CA48 | 0x8048 | 48 01 10 | 1 | Patch Part 10 | Bank Select |
0x3CA49 | 0x8049 | 48 01 12 | 1 | Patch Part 10 | Program Change |
0x3CA4A | 0x804A | 48 01 14 | 1 | Patch Part 10 | Rx. NRPN/PB/CAf/PC/PAf/Note/Soft |
0x3CA4B | 0x804B | 48 01 16 | 1 | Patch Part 10 | Rx. Sos/Por/Hold/Exp/Pan/Vol/Mod/RPN |
0x3CA4C | 0x804C | 48 01 18 | 1 | Patch Part 10 | Rx. Channel |
0x3CA4D | 0x804D | 48 01 1A | 1 | Patch Part 10 | Mono/Poly, Assign, Rhythm |
0x3CA4E | 0x804E | 48 01 1C | 1 | Patch Part 10 | Pitch Key Shift |
0x3CA4F | 0x804F | 48 01 1E | 1 | Patch Part 10 | Pitch Offset Fine |
0x3CA50 | 0x8050 | 48 01 20 | 1 | Patch Part 10 | Part Level |
0x3CA51 | 0x8051 | 48 01 22 | 1 | Patch Part 10 | Part Panpot |
0x3CA52 | 0x8052 | 48 01 24 | 1 | Patch Part 10 | Velocity Sense Depth |
0x3CA53 | 0x8053 | 48 01 26 | 1 | Patch Part 10 | Velocity Sense Offset |
0x3CA54 | 0x8054 | 48 01 28 | 1 | Patch Part 10 | Keyboard Range Low |
0x3CA55 | 0x8055 | 48 01 2A | 1 | Patch Part 10 | Keyboard Range High |
0x3CA56 | 0x8056 | 48 01 2C | 1 | Patch Part 10 | Chorus Send Level |
0x3CA57 | 0x8057 | 48 01 2E | 1 | Patch Part 10 | Reverb Send Level |
0x3CA58 | 0x8058 | 48 01 30 | 1 | Patch Part 10 | Tone Modify 1 (Vibrato Rate) |
0x3CA59 | 0x8059 | 48 01 32 | 1 | Patch Part 10 | Tone Modify 2 (Vibrato Depth) |
0x3CA5A | 0x805A | 48 01 34 | 1 | Patch Part 10 | Tone Modify 3 (TVF Cutoff Freq) |
0x3CA5B | 0x805B | 48 01 36 | 1 | Patch Part 10 | Tone Modify 4 (TVF Resonance) |
0x3CA5C | 0x805C | 48 01 38 | 1 | Patch Part 10 | Tone Modify 5 (TVF & TVA Env. Attack) |
0x3CA5D | 0x805D | 48 01 3A | 1 | Patch Part 10 | Tone Modify 6 (TVF & TVA Env. Decay) |
0x3CA5E | 0x805E | 48 01 3C | 1 | Patch Part 10 | Tone Modify 7 (TVF & TVA Env. Release) |
0x3CA5F | 0x805F | 48 01 3E | 1 | Patch Part 10 | Tone Modify 8 (Vibrato Delay) |
0x3CA60 | 0x8060 | 48 01 40 | 1 | Patch Part 10 | Unknown (SC-55mkII or later: Rx. Bank Select MSB/LSB, Tone Remain) |
0x3CA61 | 0x8061 | 48 01 42 | 1 | Patch Part 10 | Unknown (SC-88 or later: Delay Send Level) |
0x3CA62 | 0x8062 | 48 01 44 | 1 | Patch Part 10 | Scale Tuning C |
0x3CA63 | 0x8063 | 48 01 46 | 1 | Patch Part 10 | Scale Tuning C# |
0x3CA64 | 0x8064 | 48 01 48 | 1 | Patch Part 10 | Scale Tuning D |
0x3CA65 | 0x8065 | 48 01 4A | 1 | Patch Part 10 | Scale Tuning D# |
0x3CA66 | 0x8066 | 48 01 4C | 1 | Patch Part 10 | Scale Tuning E |
0x3CA67 | 0x8067 | 48 01 4E | 1 | Patch Part 10 | Scale Tuning F |
0x3CA68 | 0x8068 | 48 01 50 | 1 | Patch Part 10 | Scale Tuning F# |
0x3CA69 | 0x8069 | 48 01 52 | 1 | Patch Part 10 | Scale Tuning G |
0x3CA6A | 0x806A | 48 01 54 | 1 | Patch Part 10 | Scale Tuning G# |
0x3CA6B | 0x806B | 48 01 56 | 1 | Patch Part 10 | Scale Tuning A |
0x3CA6C | 0x806C | 48 01 58 | 1 | Patch Part 10 | Scale Tuning A# |
0x3CA6D | 0x806D | 48 01 5A | 1 | Patch Part 10 | Scale Tuning B |
0x3CA6E | 0x806E | 48 01 5C | 1 | Patch Part 10 | CC1 Controller Number |
0x3CA6F | 0x806F | 48 01 5E | 1 | Patch Part 10 | CC2 Controller Number |
0x3CA70 | 0x8070 | 48 01 60 | 1 | Patch Part 10 | Mod. Pitch Control |
0x3CA71 | 0x8071 | 48 01 62 | 1 | Patch Part 10 | Mod. TVF Cutoff Control |
0x3CA72 | 0x8072 | 48 01 64 | 1 | Patch Part 10 | Mod. Amplitude Control |
0x3CA73 | 0x8073 | 48 01 66 | 1 | Patch Part 10 | Unknown |
0x3CA74 | 0x8074 | 48 01 68 | 1 | Patch Part 10 | Mod. LFO1 Rate Control |
0x3CA75 | 0x8075 | 48 01 6A | 1 | Patch Part 10 | Mod. LFO1 Pitch Depth |
0x3CA76 | 0x8076 | 48 01 6C | 1 | Patch Part 10 | Mod. LFO1 TVF Depth |
0x3CA77 | 0x8077 | 48 01 6E | 1 | Patch Part 10 | Mod. LFO1 TVA Depth |
0x3CA78 | 0x8078 | 48 01 70 | 1 | Patch Part 10 | Mod. LFO2 Rate Control |
0x3CA79 | 0x8079 | 48 01 72 | 1 | Patch Part 10 | Mod. LFO2 Pitch Depth |
0x3CA7A | 0x807A | 48 01 74 | 1 | Patch Part 10 | Mod. LFO2 TVF Depth |
0x3CA7B | 0x807B | 48 01 76 | 1 | Patch Part 10 | Mod. LFO2 TVA Depth |
0x3CA7C | 0x807C | 48 01 78 | 1 | Patch Part 10 | Bend Pitch Control |
0x3CA7D | 0x807D | 48 01 7A | 1 | Patch Part 10 | Bend TVF Cutoff Control |
0x3CA7E | 0x807E | 48 01 7C | 1 | Patch Part 10 | Bend Amplitude Control |
0x3CA7F | 0x807F | 48 01 7E | 1 | Patch Part 10 | Unknown |
0x3CA80 | 0x8080 | 48 02 00 | 1 | Patch Part 10 | Bend LFO1 Rate Control |
0x3CA81 | 0x8081 | 48 02 02 | 1 | Patch Part 10 | Bend LFO1 Pitch Depth |
0x3CA82 | 0x8082 | 48 02 04 | 1 | Patch Part 10 | Bend LFO1 TVF Depth |
0x3CA83 | 0x8083 | 48 02 06 | 1 | Patch Part 10 | Bend LFO1 TVA Depth |
0x3CA84 | 0x8084 | 48 02 08 | 1 | Patch Part 10 | Bend LFO2 Rate Control |
0x3CA85 | 0x8085 | 48 02 0A | 1 | Patch Part 10 | Bend LFO2 Pitch Depth |
0x3CA86 | 0x8086 | 48 02 0C | 1 | Patch Part 10 | Bend LFO2 TVF Depth |
0x3CA87 | 0x8087 | 48 02 0E | 1 | Patch Part 10 | Bend LFO2 TVA Depth |
0x3CA88 | 0x8088 | 48 02 10 | 1 | Patch Part 10 | CAf Pitch Control |
0x3CA89 | 0x8089 | 48 02 12 | 1 | Patch Part 10 | CAf TVF Cutoff Control |
0x3CA8A | 0x808A | 48 02 14 | 1 | Patch Part 10 | CAf Amplitude Control |
0x3CA8B | 0x808B | 48 02 16 | 1 | Patch Part 10 | Unknown |
0x3CA8C | 0x808C | 48 02 18 | 1 | Patch Part 10 | CAf LFO1 Rate Control |
0x3CA8D | 0x808D | 48 02 1A | 1 | Patch Part 10 | CAf LFO1 Pitch Depth |
0x3CA8E | 0x808E | 48 02 1C | 1 | Patch Part 10 | CAf LFO1 TVF Depth |
0x3CA8F | 0x808F | 48 02 1E | 1 | Patch Part 10 | CAf LFO1 TVA Depth |
0x3CA90 | 0x8090 | 48 02 20 | 1 | Patch Part 10 | CAf LFO2 Rate Control |
0x3CA91 | 0x8091 | 48 02 22 | 1 | Patch Part 10 | CAf LFO2 Pitch Depth |
0x3CA92 | 0x8092 | 48 02 24 | 1 | Patch Part 10 | CAf LFO2 TVF Depth |
0x3CA93 | 0x8093 | 48 02 26 | 1 | Patch Part 10 | CAf LFO2 TVA Depth |
0x3CA94 | 0x8094 | 48 02 28 | 1 | Patch Part 10 | PAf Pitch Control |
0x3CA95 | 0x8095 | 48 02 2A | 1 | Patch Part 10 | PAf TVF Cutoff Control |
0x3CA96 | 0x8096 | 48 02 2C | 1 | Patch Part 10 | PAf Amplitude Control |
0x3CA97 | 0x8097 | 48 02 2E | 1 | Patch Part 10 | Unknown |
0x3CA98 | 0x8098 | 48 02 30 | 1 | Patch Part 10 | PAf LFO1 Rate Control |
0x3CA99 | 0x8099 | 48 02 32 | 1 | Patch Part 10 | PAf LFO1 Pitch Depth |
0x3CA9A | 0x809A | 48 02 34 | 1 | Patch Part 10 | PAf LFO1 TVF Depth |
0x3CA9B | 0x809B | 48 02 36 | 1 | Patch Part 10 | PAf LFO1 TVA Depth |
0x3CA9C | 0x809C | 48 02 38 | 1 | Patch Part 10 | PAf LFO2 Rate Control |
0x3CA9D | 0x809D | 48 02 3A | 1 | Patch Part 10 | PAf LFO2 Pitch Depth |
0x3CA9E | 0x809E | 48 02 3C | 1 | Patch Part 10 | PAf LFO2 TVF Depth |
0x3CA9F | 0x809F | 48 02 3E | 1 | Patch Part 10 | PAf LFO2 TVA Depth |
0x3CAA0 | 0x80A0 | 48 02 40 | 1 | Patch Part 10 | CC1 Pitch Control |
0x3CAA1 | 0x80A1 | 48 02 42 | 1 | Patch Part 10 | CC1 TVF Cutoff Control |
0x3CAA2 | 0x80A2 | 48 02 44 | 1 | Patch Part 10 | CC1 Amplitude Control |
0x3CAA3 | 0x80A3 | 48 02 46 | 1 | Patch Part 10 | Unknown |
0x3CAA4 | 0x80A4 | 48 02 48 | 1 | Patch Part 10 | CC1 LFO1 Rate Control |
0x3CAA5 | 0x80A5 | 48 02 4A | 1 | Patch Part 10 | CC1 LFO1 Pitch Depth |
0x3CAA6 | 0x80A6 | 48 02 4C | 1 | Patch Part 10 | CC1 LFO1 TVF Depth |
0x3CAA7 | 0x80A7 | 48 02 4E | 1 | Patch Part 10 | CC1 LFO1 TVA Depth |
0x3CAA8 | 0x80A8 | 48 02 50 | 1 | Patch Part 10 | CC1 LFO2 Rate Control |
0x3CAA9 | 0x80A9 | 48 02 52 | 1 | Patch Part 10 | CC1 LFO2 Pitch Depth |
0x3CAAA | 0x80AA | 48 02 54 | 1 | Patch Part 10 | CC1 LFO2 TVF Depth |
0x3CAAB | 0x80AB | 48 02 56 | 1 | Patch Part 10 | CC1 LFO2 TVA Depth |
0x3CAAC | 0x80AC | 48 02 58 | 1 | Patch Part 10 | CC2 Pitch Control |
0x3CAAD | 0x80AD | 48 02 5A | 1 | Patch Part 10 | CC2 TVF Cutoff Control |
0x3CAAE | 0x80AE | 48 02 5C | 1 | Patch Part 10 | CC2 Amplitude Control |
0x3CAAF | 0x80AF | 48 02 5E | 1 | Patch Part 10 | Unknown |
0x3CAB0 | 0x80B0 | 48 02 60 | 1 | Patch Part 10 | CC2 LFO1 Rate Control |
0x3CAB1 | 0x80B1 | 48 02 62 | 1 | Patch Part 10 | CC2 LFO1 Pitch Depth |
0x3CAB2 | 0x80B2 | 48 02 64 | 1 | Patch Part 10 | CC2 LFO1 TVF Depth |
0x3CAB3 | 0x80B3 | 48 02 66 | 1 | Patch Part 10 | CC2 LFO1 TVA Depth |
0x3CAB4 | 0x80B4 | 48 02 68 | 1 | Patch Part 10 | CC2 LFO2 Rate Control |
0x3CAB5 | 0x80B5 | 48 02 6A | 1 | Patch Part 10 | CC2 LFO2 Pitch Depth |
0x3CAB6 | 0x80B6 | 48 02 6C | 1 | Patch Part 10 | CC2 LFO2 TVF Depth |
0x3CAB7 | 0x80B7 | 48 02 6E | 1 | Patch Part 10 | CC2 LFO2 TVA Depth |
0x3CAB8 | 0x80B8 | 48 02 70 | 112 | Patch Part 1 | (Same as Patch Part 10) |
0x3CB28 | 0x8128 | 48 04 50 | 112 | Patch Part 2 | (Same as Patch Part 10) |
0x3CB98 | 0x8198 | 48 06 30 | 112 | Patch Part 3 | (Same as Patch Part 10) |
0x3CC08 | 0x8208 | 48 08 10 | 112 | Patch Part 4 | (Same as Patch Part 10) |
0x3CC78 | 0x8278 | 48 09 70 | 112 | Patch Part 5 | (Same as Patch Part 10) |
0x3CCE8 | 0x82E8 | 48 0b 50 | 112 | Patch Part 6 | (Same as Patch Part 10) |
0x3CD58 | 0x8358 | 48 0d 30 | 112 | Patch Part 7 | (Same as Patch Part 10) |
0x3CDC8 | 0x83C8 | 48 0f 10 | 112 | Patch Part 8 | (Same as Patch Part 10) |
0x3CE38 | 0x8438 | 48 10 70 | 112 | Patch Part 9 | (Same as Patch Part 10) |
0x3CEA8 | 0x84A8 | 48 12 50 | 112 | Patch Part 11 | (Same as Patch Part 10) |
0x3CF18 | 0x8518 | 48 14 30 | 112 | Patch Part 12 | (Same as Patch Part 10) |
0x3CF88 | 0x8588 | 48 16 10 | 112 | Patch Part 13 | (Same as Patch Part 10) |
0x3CFF8 | 0x85F8 | 48 17 70 | 112 | Patch Part 14 | (Same as Patch Part 10) |
0x3D068 | 0x8668 | 48 19 50 | 112 | Patch Part 15 | (Same as Patch Part 10) |
0x3D0D8 | 0x86D8 | 48 1b 30 | 112 | Patch Part 16 | (Same as Patch Part 10) |
49 00 00 | 128 | Drum Setup 1 | Play Note Number | ||
49 02 00 | 128 | Drum Setup 1 | Level | ||
49 04 00 | 128 | Drum Setup 1 | Assign Group Number | ||
49 06 00 | 128 | Drum Setup 1 | Panpot | ||
49 08 00 | 128 | Drum Setup 1 | Reverb Depth | ||
49 0a 00 | 128 | Drum Setup 1 | Chorus Depth | ||
49 0c 00 | 128 | Drum Setup 1 | Rx. Note On/Off | ||
49 0e 00 | 12 | Drum Setup 1 | Drum Map Name | ||
49 10 00 | 128 | Drum Setup 2 | Play Note Number | ||
49 12 00 | 128 | Drum Setup 2 | Level | ||
49 14 00 | 128 | Drum Setup 2 | Assign Group Number | ||
49 16 00 | 128 | Drum Setup 2 | Panpot | ||
49 18 00 | 128 | Drum Setup 2 | Reverb Depth | ||
49 1a 00 | 128 | Drum Setup 2 | Chorus Depth | ||
49 1c 00 | 128 | Drum Setup 2 | Rx. Note On/Off | ||
49 1e 00 | 12 | Drum Setup 2 | Drum Map Name |
That is great information!!
SysEx bulk dump is one of the synth parts that is completely missing in EmuSC.
PS: If you ever suffer from severe lack of hobby projects, may I propose that you have a look at the SysEx code in EmuSC? 😉
I'd like to add some information to your excellent research.
Drum set
This table shows the correspondence between the program number and the internal drum set number.
As a side note, the SC-33 also has "AC." hidden drum sets, which are assigned to program numbers 112-115 respectively.
Initial values
Initial values of the internal state. The SC-55 stores its internal state at 0x8000-0x905F in its RAM. This area is sent and received by bulk dump transmission and reception.
Since these initial values are the same as the internal representation of the bulk dump message, omit a description of the individual bytes.
SysEx
The SysEx definition area consists of the above 5 tables. Each table consists of the following 10-byte areas for each address.
SysEx definitions (10 bytes)
00 00
.00 00
, so there seems to be no problem without a terminator.