Need help to disect MT32 Sysex messages
8 Jun 2021, 06:10im reversing a old DOS game that sends different sysex messages to a MT32
and i want to document the MT32 message generation in code as clean as possible
i've got no problem in generating the checksum or talking to the MT32
my problem: i have absolutely no MIDI/MT32 experience and no Computer-Music background and
im missing manuals for the MT32
these pages gave me an rough overview what is that sysex message thing all about
Webpage1: http://www.youngmonkey.ca/nose/audio_tech/synth/Roland-MT32.html
Webpage2: http://www.muzines.co.uk/articles/enhancing-your-roland-mt32/3500
so far i know structure of the MT32 Syex message
Example message: [F0 41 10 16 12 05 00 00 02 00 18 32 18 00 00 00 17 F7]
F0 - Sysex-Start
41 - Roland ID
10 - Device ID
16 - Model ID (MT-32)
12 - Send
05 - Address MSB
00 - Address
00 - Address LSB
02 00 18 32 18 00 00 00 - Data
17 - Checksum
F7 - Sysex-End
these are my traced sysex messages - i've just removed the always identical [F0 41 10 16 12] in front and the checksum+F7 at end
according to Webpage1 something with "Patch Memory"
if found a reference to the "Patch Temp Area" on Webpage2
Question 1:
What does all these bytes mean or do anyone know were i can find this "MT32 MIDI Implementation Chart" to read it myself?
Bonus-Question:
I've also traced this message [F0 41 10 16 12 03 00 F7], is that a illformed message due to missing 2 bytes in address and no data?
and i want to document the MT32 message generation in code as clean as possible
i've got no problem in generating the checksum or talking to the MT32
my problem: i have absolutely no MIDI/MT32 experience and no Computer-Music background and
im missing manuals for the MT32
these pages gave me an rough overview what is that sysex message thing all about
Webpage1: http://www.youngmonkey.ca/nose/audio_tech/synth/Roland-MT32.html
Webpage2: http://www.muzines.co.uk/articles/enhancing-your-roland-mt32/3500
so far i know structure of the MT32 Syex message
Example message: [F0 41 10 16 12 05 00 00 02 00 18 32 18 00 00 00 17 F7]
F0 - Sysex-Start
41 - Roland ID
10 - Device ID
16 - Model ID (MT-32)
12 - Send
05 - Address MSB
00 - Address
00 - Address LSB
02 00 18 32 18 00 00 00 - Data
17 - Checksum
F7 - Sysex-End
these are my traced sysex messages - i've just removed the always identical [F0 41 10 16 12] in front and the checksum+F7 at end
according to Webpage1 something with "Patch Memory"
05 00 00 02 00 18 32 18 00 00 00
05 00 08 02 01 18 32 0C 00 01 00
05 00 10 02 02 18 32 0C 00 01 00
05 00 18 02 03 18 32 0C 00 01 00
05 00 20 02 04 18 32 0C 00 01 00
according to Webpage1 something with "Timbre Memory"
08 00 00 45 6E 67 69 6E 65 20 31 20 20 07 05 0F 00 17 15 0B 01 01 00 35 07 00 00 00 37 28 32 23 0A 32 46 46 14 0D 10 10 23 14 09 69 07 37 00 00 00 00 2A 2E 64 32 64 64 64 64 64 32 5B 0C 1B 0C 00 00 05 00 00 00 19 64 64 64 64 17 4C 0B 01 01 00 35 07 00 00 00 37 28 32 23 0A 32 46 46 14 0D 10 10 23 14 09 69 07 37 00 00 00 00 2A 2E 64 32 64 64 64 64 64 32 5B 0C 1B 0C 00 00 05 00 00 00 19 64 64 64 64 18 32 0B 01 01 35 25 07 00 00 00 37 2D 2D 23 0A 32 46 46 14 0C 00 10 39 14 09 69 07 37 00 00 00 00 2A 2C 64 32 64 64 64 64 64 32 5B 0C 1B 0C 00 00 05 00 00 00 1D 64 64 63 64 00 00 0B 01 01 2B 35 07 00 00 00 37 28 32 23 0A 32 46 46 14 0D 10 10 23 14 09 69 07 37 00 00 00 00 2A 2E 64 32 64 64 64 64 64 32 5B 0C 1B 0C 00 00 05 00 00 00 19 64 64 64 64
08 02 00 53 71 75 65 65 6C 20 20 20 20 00 08 0F 00 24 19 0B 01 00 25 64 07 00 00 00 00 06 00 00 00 64 64 64 00 48 64 00 03 1E 09 69 07 64 00 00 00 00 00 00 00 00 64 64 64 64 32 64 5B 0C 1B 0C 00 00 05 00 00 00 00 64 63 00 63 24 56 0B 01 00 25 58 07 00 00 00 00 06 00 00 00 64 64 64 00 48 64 00 03 1E 09 69 07 64 00 00 00 00 00 00 00 00 64 64 64 64 32 64 5B 0C 1B 0C 00 00 05 00 00 00 00 64 63 00 63 13 0B 0B 01 01 35 25 07 00 00 00 00 00 00 00 00 4E 4E 4E 00 32 64 10 39 14 09 69 07 37 00 00 00 00 2A 2C 64 32 64 64 64 64 46 64 5B 0C 1B 0C 00 00 05 02 00 00 00 64 63 00 64 07 5E 0B 01 00 35 64 07 00 00 00 00 00 00 00 00 50 50 51 00 21 64 00 1C 1E 09 69 07 37 00 00 00 00 2A 2C 64 32 64 64 64 64 46 64 5B 0C 1B 0C 00 00 05 00 00 00 00 64 63 00 63
08 04 00 44 61 6D 61 67 65 20 20 20 20 05 05 0F 00 15 00 0F 00 00 12 42 00 04 00 00 14 1E 00 00 00 14 28 00 00 05 00 00 64 00 0B 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 64 4C 00 00 00 00 00 00 0E 00 46 00 0A 00 61 00 00 09 00 0F 00 00 13 41 00 04 00 00 14 14 00 00 64 50 00 00 00 0A 1E 00 64 00 0B 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 64 4C 00 00 00 00 00 00 13 11 3B 37 00 00 63 2D 04 12 00 0F 00 00 18 41 04 08 00 00 4C 17 13 0A 34 00 00 00 11 05 00 00 64 00 0B 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 64 4C 00 00 00 00 00 00 00 00 41 1D 0E 00 5E 17 03 14 00 0F 00 00 53 41 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 64 00 0B 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 64 4C 00 00 00 00 00 00 00 32 33 50 0C 53 64 2D 00
08 06 00 4D 65 74 61 6C 43 6C 61 6E 6B 08 09 03 00 05 00 0F 00 00 45 41 00 03 00 00 14 1E 00 00 31 14 28 00 00 05 00 00 64 00 0B 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 64 4C 00 00 00 00 00 00 00 3F 3D 00 0A 62 00 00 00 0D 00 0F 00 01 58 41 00 04 00 00 3D 00 00 00 31 2F 00 00 00 18 0D 05 64 00 0B 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 64 4C 00 00 00 00 00 00 00 39 0C 04 2A 64 00 00 00 24 00 0F 00 00 18 41 04 05 00 00 4C 17 13 0A 34 00 00 00 11 05 00 00 64 00 0B 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 64 4C 00 00 00 00 00 00 00 40 06 17 1D 64 00 00 00 36 00 0F 00 00 53 41 00 02 00 00 0A 0A 00 00 64 50 32 00 00 00 00 00 64 00 0B 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 64 4C 00 00 00 00 00 00 00 39 00 26 2C 64 00 00 00
08 08 00 45 6E 67 69 6E 65 20 31 20 20 02 02 0F 00 24 32 0B 01 00 53 64 0E 00 00 00 37 2D 2D 23 0A 32 46 46 14 13 64 10 22 00 09 69 07 37 00 00 00 00 2A 2C 64 32 64 64 64 64 0D 32 40 0C 00 0C 00 00 05 00 00 00 13 64 64 64 64 18 4C 0B 01 01 00 35 07 00 00 00 37 28 32 23 0A 32 46 46 14 0D 10 10 23 14 09 69 07 37 00 00 00 00 2A 2E 64 32 64 64 64 64 64 32 5B 0C 1B 0C 00 00 05 00 00 00 19 64 64 64 64 16 32 0B 01 01 58 25 07 00 00 00 37 2D 2D 23 0A 32 46 46 14 0C 00 10 39 14 09 69 07 37 00 00 00 00 2A 2C 64 32 64 64 64 64 0E 32 5B 0C 1B 0C 00 00 05 00 00 00 1D 64 64 63 64 0C 36 0B 01 00 00 32 07 02 00 00 37 28 32 23 32 32 37 40 14 0D 10 10 38 12 0B 69 07 37 00 00 00 00 2A 2E 64 32 64 64 64 64 23 32 5B 0C 1B 0C 00 00 05 00 00 00 19 64 64 64 64
according to Webpage1 something with "Patch Temp Area"
03 00 04 18
03 00 14 00
03 00 24 00
03 00 34 00
03 00 44 00
03 00 54 00
03 00 64 00
03 00 74 02
i have no idea what "Patch Temp Area" etc. meanif found a reference to the "Patch Temp Area" on Webpage2
so i know that [03 00 14 00] sets byte 14 in the "Patch Temp Area" for "Instrument 1" to 0 - but what does that mean?Bytes 6,7,8: 03 00 06 Hex (or 3, 0, 6 Decimal). These three bytes form the address within the MT32's memory of the particular parameter we wish to alter. In our example you will see that page 9 of the "MT32 MIDI Implementation Chart" shows that the reverb switch is at offset 00 06 within the 'Patch Temp' area. Page 7 shows us that the Patch Temp area for Instrument part 1 has a base address of 03 00 00. Add together this base address and the offset address and you obtain 03 00 06.
Question 1:
What does all these bytes mean or do anyone know were i can find this "MT32 MIDI Implementation Chart" to read it myself?
Bonus-Question:
I've also traced this message [F0 41 10 16 12 03 00 F7], is that a illformed message due to missing 2 bytes in address and no data?