XL Engine Midi Playback

XL Engine News
luciusDXL
XL Engine Developer / Site Admin
XL Engine Developer / Site Admin
Posts: 778
Joined: Thu Apr 14, 2011 4:05 pm
Contact:

XL Engine Midi Playback

Postby luciusDXL » Wed Jan 13, 2016 11:47 pm

After some deliberation and suggestions, I am tackling midi playback a little differently this time around. The system midi players (like the Windows midi player) have issues and seem to be harder to configure in recent versions of Windows. While there is software available to help, such as VirtualMidiSynth, I don't want to rely on users installing this software on their computer.

Instead the XL Engine will use software midi synth and support Gravis Ultrasound patches and Sound Fonts. In order to accomplish this I have integrated Wild Midi and am in the process of integrating FluidSynth. The release will come with default patches and fonts so people can hear good quality midi from the get go. Of course you will be able to download and use your own patches and sound fonts.

Setup is easy - just pick the format you want to use and select either the config file (for patches) or sf2 file and you are done. The libraries are statically linked with the engine, so no extra DLLs, downloads or installs to use.

In order to limit the dependencies and code size, audio drivers are being excluded from my build of fluidsynth - it will write raw audio which will be processed by the engine's sound system, just like Wild Midi. Midi playback is also properly threaded to limit the burden on the main CPU.

Finally I would like to thank Brother Brick for suggesting Wild Midi - it is a great library for software midi playback. Unfortunately it does not - yet - have all of the features I want but it does a great job at what it has implemented. :D
User avatar
BrotherBrick
Member
Posts: 59
Joined: Fri Oct 28, 2011 12:03 am
Contact:

Re: XL Engine Midi Playback

Postby BrotherBrick » Thu Jan 14, 2016 1:47 am

Thanks, we've worked hard to get wildmidi where it is now and I've already started looking into patch-less FM emulation... we'll see if we can get it to sound just like the old SoundBlaster (OPL2 or OPL3).

I hope this is what you are looking for?

Update:

I found a patch set that is small (8MiB uncompressed) and does a decent job emulating SoundBlaster8 (OPL2). It isn't very accurate, but it is small.
https://dl.dropboxusercontent.com/u/396 ... ts.tar.bz2

Another one I managed to convert from sf2 to gus patch that is a nearly 100% accurate OPL3 patch set. It comes in at 133MiB uncompressed but is as good as it gets.
https://dl.dropboxusercontent.com/u/396161/OPL3.tar.bz2

Another patch set comes directly from creative labs, it is the original 8mb soundfont shipped with the awe32. It is 30MiB uncompressed but sounds just as lovely as when I had my awe32. ;)
https://dl.dropboxusercontent.com/u/396 ... fx.tar.bz2

I'm hosting these on my dropbox account, so they may go missing after awhile. If these are useful, I can see about having them hosted somewhere else.
User avatar
MrFlibble
Member
Posts: 151
Joined: Mon Apr 21, 2014 5:44 am

Re: XL Engine Midi Playback

Postby MrFlibble » Thu Jan 14, 2016 12:44 pm

This is great news, thanks!

BrotherBrick, are all these soundfonts licensed compatibly?
User avatar
BrotherBrick
Member
Posts: 59
Joined: Fri Oct 28, 2011 12:03 am
Contact:

Re: XL Engine Midi Playback

Postby BrotherBrick » Thu Jan 14, 2016 1:42 pm

MrFlibble wrote:This is great news, thanks!

BrotherBrick, are all these soundfonts licensed compatibly?


You likely won't find them in Debian's repo, if that is what you mean.

I did not find any copyright/license information and you can download the Creative Lab's sf2 from their website, I just repacked them to gus pat format.

Properly (and openly) licensed patch set can be found here:
http://freepats.zenvoid.org/
luciusDXL
XL Engine Developer / Site Admin
XL Engine Developer / Site Admin
Posts: 778
Joined: Thu Apr 14, 2011 4:05 pm
Contact:

Re: XL Engine Midi Playback

Postby luciusDXL » Thu Jan 14, 2016 9:57 pm

Thanks Brother Brick. As for missing features - honestly high quality sf2 support would probably be enough for me. Right now I'm mainly adding fluidsynth so that people get access to sound fonts.
User avatar
BrotherBrick
Member
Posts: 59
Joined: Fri Oct 28, 2011 12:03 am
Contact:

Re: XL Engine Midi Playback

Postby BrotherBrick » Fri Jan 15, 2016 12:03 am

Roger that!

Any SF2 files you like that I can test with?
Chris
Member
Posts: 106
Joined: Fri Apr 15, 2011 5:06 pm

Re: XL Engine Midi Playback

Postby Chris » Fri Jan 15, 2016 1:35 am

BrotherBrick wrote:Any SF2 files you like that I can test with?

FluidSynth has a pretty decent one, which I think is a good quality baseline (FluidR3_GM.sf2). It's 143MB, so a bit on the large side, but it sounds pretty good with most things I've thrown at it (it's sanely licensed too, part of most/all Linux distros). I also have one called SGM which I think is a bit better, although it's notably larger at 236MB uncompressed: http://www.mediafire.com/download/zo8l3 ... M-V2.01.7z (I'm also not sure what it's license is, I just remember finding it in a youtube video).

The main thing to take note of when adding sf2 support for WildMIDI, is properly implementing the modulators. IIRC, the GUS pat format that WildMIDI (and Timidity before it) are based on is that it doesn't really have a concept of modulators like sf2 has, but they can have a clear impact on the resulting sound. That's the reason why Timidity's sf2 support is considered rather poor, because it effectively just converts the sf2 to pat internally and uses it that way, ignoring all the extra bits that the pat format has no concept of but the sf2 is expecting.
Gez
Senior-Member
Posts: 329
Joined: Fri Apr 15, 2011 2:54 pm

Re: XL Engine Midi Playback

Postby Gez » Sat Jan 16, 2016 11:13 am

There is one SF2 that sounds really wrong with FluidSynth but correct with TiMidity++. It's called Silverspring -- it might be a bit hard to find nowaday.
User avatar
BrotherBrick
Member
Posts: 59
Joined: Fri Oct 28, 2011 12:03 am
Contact:

Re: XL Engine Midi Playback

Postby BrotherBrick » Mon Jan 18, 2016 2:31 am

I did a bit of research on the creator of the OPL3 soundfont (that I converted to GUS patch set). It turns out that is was 'voluntarily abandoned' by its creator Zandro Reveille around 2007. I don't know what this means, so I sent an email.

http://zandro.freeunixhost.com/

I'm hoping to make contact and ask that he licenses it under something legally recognizable. Worst case, no contact. Best case, we found an old school soundfont that I can help champion for inclusion into Debian/Ubuntu. :)
Chris
Member
Posts: 106
Joined: Fri Apr 15, 2011 5:06 pm

Re: XL Engine Midi Playback

Postby Chris » Mon Jan 18, 2016 3:01 pm

Another option is to include an OPL synth backend. DOSBox and MAME include one that you could borrow code from, IIRC. ZDoom uses one of these to have the option for an authentic-sounding "old school" FM Synth.

Return to “News”

Who is online

Users browsing this forum: No registered users and 2 guests