You could try recording the bank/patch change from the synth interface and then checking/inspecting the data that gets sent from the synth in a list editor or something similar. (Most sequencers/recorders should have this functionality) That should give you all the info you need to backward engineer perfect program changes.