VOGONS


MIDI GS-to-XG conversion

Topic actions

First post, by kaendafantic

User metadata
Rank Newbie
Rank
Newbie

Hi, I'm new to the forums and not only is my name misspelt (normally should be 'kanedafanatic') but, I am also deep within a GS-to-XG project of mine.

I am currently using XGworks Version 4 (4.0.7E), VBSYX 5.1 under 86Box and Sekaiju.

So, I speak to ask this question: I am new to MIDI sequencing; is there any cross-table made by someone to understand which GS SysEx messages translate to their XG counterpart or am I the first to ask? I understand Control Changes and conversion of CC# to SysEx message on XG (at least with drums) but, I don't know the values that give the exact effects on XG. In my project, the songs I convert have up to 47 SysEx messages, which becomes tedious to edit when you got more songs to go through.

VBSYX does that but seems to be limited to a Roland Sound Canvas map lower than the SC-88Pro. As such, many messages were left untouched or altered erroneously by adding the SysEx Length data byte when doing GS-to-XG conversions. Not only that, I believe the conversion tool is limited to XG Level 1 only. Though, maybe with the 5.4 version of VBSYX, I hope it includes XG Level 3/SC-88Pro mapping conversion.

I'm aware nowadays that for music production, DAWs are the way to go but, I feel more comfortable working in MIDI sequencers. Plus, XGworks allows for the more modern stuff like Piano Roll and such.

Reply 1 of 11, by kaendafantic

User metadata
Rank Newbie
Rank
Newbie

I made a mistake: "CC# to SysEx" should be instead "GS NRPNs to SysEx"

Reply 2 of 11, by SuperDeadite

User metadata
Rank Member
Rank
Member

Quite sure all XG modules have GS support in some way. Unofficially or officially depending on model. So I take it you are trying to do convert all GS functions into XG native? I think this won't be easy to automate simply due to all the different modules out there. MU2000 probably has the effects needed to handle a 88pro conversions, but an MU80 probably doesn't.

I'd think you'd want to start with a single module convertor to keep your sanity functional.

Would be fun to get GS native tunes to use PLG boards though...

CM-64, CM-500, SC-55MkII, SC-88 Pro, SY22, TG100, MU2000EX, PLG100-SG, PLG150-DR, PLG150-AN, SG01k, NS5R, GZ-50M, SN-U110-07, SN-U110-10, Pocket Studio 5, DreamBlaster S2, X2, McFly, E-Wave, QWave, CrystalBlaster C2, Yucatan FX, BeepBlaster, SuperOctet!

Reply 3 of 11, by kaendafantic

User metadata
Rank Newbie
Rank
Newbie

They do, Yamaha MU-series/S-YXG synths have a integrated GS mode, I'm sure you know. What I'm doing is converting GS functions to XG native, as you said. The main target is for the MU128 as this module is the SC-88Pro's near direct equivalent. Later on, a MU1000/Mu2000 for direct SC-8820/SC-8850 GS translation. My goal's to translate those GS songs into XG to expand further on what was built; making a "XG Plus" variant you could say.

I think I mentioned it already but as of speaking, I use VBSYX 5.4 (changed the software in the meanwhile) but it barely manages to get the job done. The convert GS-to-XG feature doesn't really work: many SysEx messages are left unmodified. I understand a few rules of thumbs but, a cross-table would really help to simply compare and change directly. True, it isn't because I change a setting that it will mean it'll sound identical to the GS counterpart. Getting those right at least is a better start for a proof of concept.

Though, speaking as a high school gone adult education student, funds are not really something I have. I'm currently looking for jobs since for such a project; I need a MU-series module in the first place to compare and give the closest equivalent. Those aren't too expensive on eBay but, still. Maybe Mercari?

Reply 4 of 11, by kaendafantic

User metadata
Rank Newbie
Rank
Newbie

Okay, instead I'll try this. Might as well make my own crosstable. However, help with translation would be needed.

For example, those strings. All of them are about the Reverb effect parameters (Effect 1):
43 10 4C 02 01 07 00 F7
43 10 4C 02 01 08 00 F7
43 10 4C 02 01 09 00 F7
43 10 4C 02 01 0A 00 F7
43 10 4C 02 01 15 00 F7

In XGworks, those strings are unnamed. I basically don't know what they do, and I don't have the hardware nor software (at least a passthrough) to replicate those exact strings. If it's accessible and time's in your reach, then a translation of what those effect parameters does would be helpful.

Reply 5 of 11, by zaphod77

User metadata
Rank Member
Rank
Member

Assuming you are trying to play your gs mdi on an MU unit, it will ust work, mostly. when these units see a GS rest, they switch into either an officially licensed gs mode, or a tg300b mode, which is an unlicensed simulation of GS. In this mode they will accept GS sysex, NRPN, and CC. As long as filters aren't involved it works pretty well. but if you are using filters, or instrument patches beyond the sc88, don't expect good results.

Reply 6 of 11, by kaendafantic

User metadata
Rank Newbie
Rank
Newbie

The idea isn't to just play a GS MIDI file on a MU: it'll work out of the box, I know that. Rather, it's to translate GS MIDI files to XG MIDI. Redoing those songs under XG standard and going further beyond from there. Understanding how the module works is one of my primary motivators in this project. That involves converting SysEx, NRPNs, RPNs, instrument patches, effects, and so on.

If it wasn't for the fact that those songs I am converting were exclusively made for the SC-88Pro, then I wouldn't be making this thread. I am curious to see how those songs would behave under XG. What would've been different in the effects department? Compared to the SC-88Pro with it's single-channel EFX, the MU128 has access to both Variation effects and Insertion effects for multiple channels. The polyphonies are doubled on the MU128 (literally says it in the model number: 128 polyphonic voices), that allows for unused channels to be used because of the raised ceiling. Yet, it doesn't totally denature those original compositions as it is made on it's equivalent rival. At least, my intention is to further expand on what was built, and the hardware's the issue.

I'm aware that VSTs like SC-VA removes those limits entirely: but where's the fun in that? Plus, it isn't the point. If I'm doing my project, it's on specific hardware. Thing is, I don't have access to it and I am using other tools to get to my means.

Reply 7 of 11, by zaphod77

User metadata
Rank Member
Rank
Member

well, the sc88 pro has ihsntruments the mu80 doesnt' have, for example. the sc8850 has more than even the mu2000

So you will need to do instrument substitutions.

HAvign done thoes. The more important stuff are as follows.

ROland usually use nrpn to mess with stuff her's soem important ones.

msb 1 lsb 8 vibrato rate
msb 1 lsb 9 vibrato depth
msb 1 lsb 10 vibrato delay
msb 1 lsb 32 TVF cutoff
msb 1 lsb 33 TVF resonance
msb 1 lsb 99 TVF/TVA envelope Attack time
msb 1 lsb 100 TVF/TVA envelope Decay time
msb 1 lsb 102 TVF/TVA envelope release time.

but you can also use sysex.

it's a simple matter of reading the manuals to find the stuff. then reading the other devices manual and matching stuff up.

For example, midi cc 71 in xg is filter resonance. midi cc 74 is the cutoff frequency. the nrpn above translates directly.

EXCEPT that it turns out the mu128 understands most of the above gs nrpns anyway. so they just translate straight over. except 1 31, which is variation send level for drums instead of delay level in GS. Of course variation CAN be delay in XG if it's set to be that. and if you see that sysex in a GS midi file, you probably want to set variation to be delay.

xg does not understand gs reverb/chorus sysex. instead, you use the xg ones. and you just have to cross reference stuff using both manuals

There's really no way around just cross referencing each effect by hand, and dealing with the fact that not all of the effects will even exist for one or the other.

Last edited by zaphod77 on 2026-09-13, 22:53. Edited 1 time in total.

Reply 8 of 11, by zaphod77

User metadata
Rank Member
Rank
Member

for those sysex, the fourth,fifth and sixth parameters specify the address of the byte being changed. so you then have to check the manual (the instrument list, in this case) and read table 1-4 to cross reference.

We find that 02 01 07 is reverb parameter six. so now we go to the effect blocks, on page 11, and see that for reverb types that have it, this is width.

Yes, this process sucks. no, there's no easier way.

Those weren't named in XGorks because what they are depends on what reverb type is being used. and most liekly the macherin it thinks you have doesn't ahve reverb types that used those parameters.

as for the 02 01 15, turns out NO reverb actually uses that parameter.

to sum up you need to
1) look up the gs nrpn/sysex in the sc898pro manual. it will be there.
2) find out what it does
3) find something else that does the same thing in the midi implementation chart for your XG device, if it even exists.

You only need to do it once for each nrpn/sysex type.

And no, nobody has done it as far as I know.

Reply 9 of 11, by kaendafantic

User metadata
Rank Newbie
Rank
Newbie

If I understand well: you can use SysEx and also NRPNs/RPNs. There are two ways to translate GS MIDI to XG MIDI. At least, that's what I get.

For the GS NRPNs: I have their equivalents:
Vibrato -
Rate = CC#76
Depth = CC#77
Delay = CC#78

Attack, Maintain (?), Delay and Release -
Attack time = CC#73
Delay time = CC#75
Release time = CC#72

The rest -
Filter Resonance/Harmonic Content = CC#71
Cutoff Frequency/Brightness = CC#74

---

So that confirms the methods for the instrument themselves. That's great. For the RPNs, should I leave them be, or should I also translate them? The untouched GS RPNs in the song I am translating are about Pitch Bend Sensitivity (MSB 101= 0, LSB 100 = 0), Fine Tuning (MSB 101 = 0, LSB 100 = 1) and Coarse Tuning (MSB 101 = 0, LSB 100 = 2)

Reply 10 of 11, by kaendafantic

User metadata
Rank Newbie
Rank
Newbie
zaphod77 wrote on 2026-09-13, 22:51:
to sum up you need to 1) look up the gs nrpn/sysex in the sc898pro manual. it will be there. 2) find out what it does 3) find s […]
Show full quote

to sum up you need to
1) look up the gs nrpn/sysex in the sc898pro manual. it will be there.
2) find out what it does
3) find something else that does the same thing in the midi implementation chart for your XG device, if it even exists.

You only need to do it once for each nrpn/sysex type.

And no, nobody has done it as far as I know.

Hm. I mean, somebody like me had to do it at one point. It's tedious, but the first ones are always the most tedious as it's still not fully understood. I understand now that the SC-88Pro MIDI Implementation/XG Level 3 Spec Sheet (V1.32) will be of primary use for my project. Unless you were using an another document?