Fixed XG mode.

CQTexperiment
Christopher Snowhill 2017-05-18 17:51:33 -07:00
parent 473990139d
commit 9bc3b55cb7
1 changed files with 15 additions and 6 deletions

View File

@ -147,7 +147,7 @@ void SCPlayer::reset(uint32_t port)
switch (mode) switch (mode)
{ {
case sc_gm: case sc_gm:
sampler[port].TG_LongMidiIn( syx_reset_gm, 0 ); /*sampler[port].TG_LongMidiIn( syx_reset_gm, 0 );*/
break; break;
case sc_gm2: case sc_gm2:
@ -159,13 +159,12 @@ void SCPlayer::reset(uint32_t port)
case sc_sc88pro: case sc_sc88pro:
case sc_sc8850: case sc_sc8850:
case sc_default: case sc_default:
sampler[port].TG_LongMidiIn( syx_reset_gs, 0 ); sampler[port].TG_LongMidiIn( syx_reset_gs, 0 ); junk(port, 1024);
reset_sc(port); reset_sc(port);
break; break;
case sc_xg: case sc_xg:
sampler[port].TG_LongMidiIn( syx_reset_xg, 0 ); sampler[port].TG_LongMidiIn( syx_reset_xg, 0 );
sampler[port].TG_ShortMidiIn( 0x7F00B9, 0 ); // fix drum channel
break; break;
} }
@ -177,12 +176,22 @@ void SCPlayer::reset(uint32_t port)
{ {
sampler[port].TG_ShortMidiIn(0x78B0 + i, 0); sampler[port].TG_ShortMidiIn(0x78B0 + i, 0);
sampler[port].TG_ShortMidiIn(0x79B0 + i, 0); sampler[port].TG_ShortMidiIn(0x79B0 + i, 0);
sampler[port].TG_ShortMidiIn(0x20B0 + i, 0); if (mode != sc_xg || i != 9)
sampler[port].TG_ShortMidiIn(0x00B0 + i, 0); {
sampler[port].TG_ShortMidiIn(0xC0 + i, 0); sampler[port].TG_ShortMidiIn(0x20B0 + i, 0);
sampler[port].TG_ShortMidiIn(0x00B0 + i, 0);
sampler[port].TG_ShortMidiIn(0xC0 + i, 0);
}
} }
} }
if (mode == sc_xg)
{
sampler[port].TG_ShortMidiIn(0x20B9, 0);
sampler[port].TG_ShortMidiIn(0x7F00B9, 0);
sampler[port].TG_ShortMidiIn(0xC9, 0);
}
junk(port, uSampleRate * 2 / 3); junk(port, uSampleRate * 2 / 3);
} }
} }