-
-
Notifications
You must be signed in to change notification settings - Fork 95
Open
Description
Currently, TinyMidiLoader doesn't recognize MIDI port Meta Event, and TinySoundFont also don't have related support as well, which can cause incorrect playback in some MIDI file which uses such meta event.
Some example MIDI files that can be used to test:
- GK1.zip (will notice missing percussion)
- multi_port_collection.zip
Add parsing for that meta event in tml.h is (or might be) simple...
switch (meta_type)
{
case TML_PORT:
if (buflen != 1) { TML_WARN("Invalid length for Port meta event"); return -1; }
evt->type = TML_PORT;
evt->key = metadata[0]; // simply store it somewhere for later use..?
break;
// ......but I can't find midi port-related support in tsf.h is that means this will be hard to implement in tsf?
Additional Context
I previously tested some other players to check if they support this meta event, the result:
- Timidity++: works fine
- QMidiPlayer (which is also based on fluidsynth): works fine
- Drumstick MIDI File Player (with fluidsynth selected): have the same issue
- vgmtrans (based on bassmidi, using built-in preview before extract the MIDI and SoundFont file): works fine
- XMPlay with MIDI plugin (based on bassmidi): works fine
There was a related discussion in FluidSynth as well, see FluidSynth/fluidsynth#1352 and FluidSynth/fluidsynth#1361.
Metadata
Metadata
Assignees
Labels
No labels