I tre protocolli, pur avendo origine comune ed una serie di CC "condivisi" unitariamente, non prescindono dal fatto di contenere CC specifici e, sopratutto, i relativi messaggi di sys-ex.
In altre parole, un file MIDI GM contiene innanzitutto un messaggio di sys-ex GM-On che attiva sullo strumento la modalità General Midi e poi tutta una serie di CC ed i relativi program changes limitati alle 128 patches standard.
Un file MIDI GS contiene innanzitutto un messaggio di sys-ex GS-On che attiva sullo strumento la modalità General Standard (di fatto un livello superiore al GM) e poi tutta una serie di CC ed i relativi program changes che attraverso i CC#0 e #32 richiamano altre patches appartenenti alle famiglie strumentali del GM, chiamate Variation.
Un file XG rapppresenta un'alternativa di casa Yamaha al GS di casa Roland ed il principio di funzionamento è analogo al precedente.
Non esiste compatibilità tra i formati, cioè un modulo GM non può riprodurre, a meno di grandi limitazioni sonore, un file creato per lo standard GS o XG.
E' invece vero il contrario, un modulo GS o XG può riprodurre un file GM perché sarà in grado di richiamare tramite i program changes, le 128 patches base.
E come dicevo prima, per riprodurre un brano in formato GM su un modulo in formato GS o XG, basterà far precedere la sequenza dei dati dal consueto messaggio di sys-ex GM-On.
Se tale messaggio non viene inviato, il modulo rimarrà nel suo stato nativo (GS o XG), richiamando le patches appartenenti alla famiglia strumentale relativa al program change.
Che mi risulti, programmi che effettuano modifiche in blocco dei files non ne esistono, ma potrei essere smentito.
N.B. Rispondo a quesiti tecnici SOLO SE ho tempo e voglia.
Il tempo che impiego per rispondere al TUO quesito non ritorna piĆ¹, sii almeno riconoscente.