REAPER reads MIDI natively. The file arrives with its separate tracks, its tempo and its chord changes: all that is left is to give it your instruments.
Music software implements neither Yamaha XG nor Roland GS: it ignores those banks and plays the file with its own instruments. So always take the GM version — the arranger-specific versions would add nothing here, and could even confuse the assignment.
In REAPER, the path is:
Drag and drop works in most cases and gives the same result. If the software asks for a tempo, let it read the one in the file: it is already correct.
Each instrument arrives on its own named track. Nothing is merged: you can mute, solo and edit note by note.
The tempo and its changes are in the file. Your project aligns with it, including the ritardando at the end.
MIDI contains no sound. It says “piano”, not “which piano”. Placing your virtual instruments on each track is up to you.
Drums sit on channel 10, to the General MIDI standard. If your drum machine does not follow that mapping, the sounds will land on the wrong keys.
This is the only real snag, and it takes a minute to fix. Channel 10 puts the kick on C1, the snare on D1, the closed hi-hat on F#1. A virtual instrument that ignores this map will play nonsense. Most offer a General MIDI preset: pick it, and everything falls back into place.
After your edits, export again as SMF format 1 (separate tracks) to keep the structure. Format 0 flattens everything onto a single track: it is only useful for older hardware players.