nlaha/godot-midi

Standard MIDI file playback using instrument sound banks

Opened this issue · 2 comments

I post the following issue to summarize ways to improve MIDI playback support in this library.

  • Support software synthesis of MIDI data stored in standard MIDI files (SMF, .mid), using instrument sound banks in SoundFont 2 (.sf2), downloadable sounds (.dls), and in OPL2, OPL3, and other FM synthesis sound banks, and possibly also in Timidity++/UltraSound patch format (.cfg). (The source code in fluidsynth, libADLMIDI, libOPNMIDI, and OPL3BankEditor may be useful here, but review the licenses for these projects.)
  • Support popular loop-point conventions found in MIDI files (see also libsdl-org/SDL_mixer#101).
  • Support seeking of MIDI files such that a pause and resume function can be offered by a media player.

Just as an aside, a public-domain music synthesis library and instrument banks would greatly help improve MIDI playback support across the open-source ecosystem; however, I don't insist on that for purposes of this issue.

These are some great suggestions; I'm currently prioritizing features most useful for rhythm game developers where MIDI is usually synced to a pre-rendered audio file. That said, adding a built-in MIDI synthesizer (for SoundFont files) would be extremely interesting and I'll consider adding it if I have time.

+1 for SoundFont sf2 support!