MIDI: Fix FluidSynth SysEx code

This commit is contained in:
Christopher Snowhill 2021-05-06 14:59:27 -07:00
parent 1a95c234b2
commit f9d3a5f9eb

View file

@ -87,7 +87,14 @@ void SFPlayer::send_event(uint32_t b)
mSysexMap.get_entry( n, data, size, port ); mSysexMap.get_entry( n, data, size, port );
if (port >= 3) if (port >= 3)
port = 0; port = 0;
fluid_synth_sysex(_synth[port], (const char *)data, size, NULL, NULL, NULL, 0); if (data && size > 2 && data[0] == 0xF0 && data[size-1] == 0xF7)
{
++data;
size -= 2;
fluid_synth_sysex(_synth[0], (const char *)data, size, NULL, NULL, NULL, 0);
fluid_synth_sysex(_synth[1], (const char *)data, size, NULL, NULL, NULL, 0);
fluid_synth_sysex(_synth[2], (const char *)data, size, NULL, NULL, NULL, 0);
}
} }
} }
@ -145,6 +152,7 @@ bool SFPlayer::startup()
for (unsigned int i = 0; i < 3; ++i) for (unsigned int i = 0; i < 3; ++i)
{ {
fluid_settings_setint(_settings, "synth.device-id", i);
_synth[i] = new_fluid_synth(_settings); _synth[i] = new_fluid_synth(_settings);
if (!_synth[i]) if (!_synth[i])
{ {