I am a true enthousiast in that i love to play (game) music in it's original format (Instead of WAV).
Now i am looking for a midi player for DOS that can import *.IBK and play MIDI files with it.
Especially an old love of mine, the shooter Nitemare 3D. The music was just midi files, but only played through the OPL2 chip. The included *.IBK (which i already ripped from the game's DAT files) mapped the OPL2 for the General Midi standard. I really like the sound of that *.IBK
Can anyone help me find a midi player that supports *.IBK ?
IIRC I think Allegro 3.0 came with a simple MIDI player sample program, though I forget if it took IBK parameters from that setup program, it's been so long since i've worked with (more like get away from) Allegro.
There is a pre-compiled windows binary, but it has a predefined collection of IBK banks.
On the site, the source is distributed however. I think it's C++. I wish the author would've included a function in the compiled version to open custom IBK files.
It may be easier to read the BASIC code than that of the C++ version. However, the C++ source package includes several IBK files -- it shouldn't be overly difficult to swap, and modify the code, for your custom IBK files.
Thanks for the answer 😀 I will overwrite the *.ibk files indeed. And after that? What is the easiest way to compile? The makefile with the 'make' command using cygwin ? (Maybe i'm talking crap, but i'm just guessing)
Attached the latest "adlmidi" binaries built by mingw for Windows. Also, attached a patch file so the Makefile conforms to my mingw32 configuration. If you attach a custom IBK file, I'll try to add it to a binary.
To add a new IBK file, it requires edits to gen_adldata.cc and adldata.cc. A template for the former is like so:
LoadIBK("ibk_files/soccer-genmidi.ibk", 55, "b55M", false);
-and-
static const char* const banknames[] ... "SB (Action Soccer)"
I don't know how to create the data for the soundbank (as shown above), but perhaps you have a simple way to do this. The soundbank data is described here: http://www.ousob.com/ng/modform/ng1607c.php. My mere guess is that the above is a mapping of instruments.
I'm unable to access 4shared. Could you attach the 3kb file here? Also, it requires the instrument (names?) as shown above, perhaps this software will help: http://www.midiox.com/html/sbtimbre.htm.
Edit: since the instrument names are already available for that game, I think the IBK file is sufficient!
I didn't find any bank for it (at least yet), so perhaps those banks are only necessary for certain cases. I replaced the IBK file only, but test that the two adlmidi.exe runs produce different sounds from a sample MIDI file. I'll continue to search for the bank first.
Edit: found this in the source code:
LoadIBK("ibk_files/nitemare_3d.ibk", 65, "b65G", false); // Seems to be identical to wallace.op3 despite different format
Therefore, use the Wallace bank to test the first adlmidi and then I'll recompile.
Edit #2: confirmed that it requires the instrument names, as shown above. If those names aren't available, the code suggests using the Wallace soundbank, but that is presumably OPL3 and not the IBK format.
Yes, that line above from source code suggests that they are identical, just in different formats. However, they are in different formats, so you would have to convert the Nitemare 3d to OPL3 (assuming .op3 is in fact true OPL3 format). Or find a way to obtain the instrument names (or mappings?) from the IBK formatted file and specialized software.
I am missing the drums when using the 'Wallace' bank. But when i use bank 55 in your compile, i hear it with the drums. After taking a look at the webpage of ADLMIDI:
OP3 (Wallace 2op set :: melodic only)
So that probably means the Nitemare 3D soundbank has borrowed parts from Wallace?