VOGONS


First post, by deemster

User metadata
Rank Member
Rank
Member

Dear Vogons,

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 ?

Thanks in advance!

Reply 1 of 24, by leileilol

User metadata
Rank l33t++
Rank
l33t++

I know Allegro can do it through loading IBKs and using them as FM timbres, but even then it manages to screw it up anyhow.

apsosig.png
long live PCem

Reply 2 of 24, by deemster

User metadata
Rank Member
Rank
Member

Thank you for the reply leileilol!

Arg, then i would have to learn Allegro (And C++, i only work with Java and C# )

I hope there is an easier way 😀

Reply 3 of 24, by leileilol

User metadata
Rank l33t++
Rank
l33t++

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.

apsosig.png
long live PCem

Reply 4 of 24, by deemster

User metadata
Rank Member
Rank
Member

Hmm, i just gave it a try. It just plays midi and shows the notes on a piano.

However: I found a progam that DOES support it: http://bisqwit.iki.fi/source/adlmidi.html

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.

Reply 6 of 24, by deemster

User metadata
Rank Member
Rank
Member

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)

Reply 7 of 24, by truth_deleted

User metadata

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.

It requires testing against audio files.

Reply 8 of 24, by truth_deleted

User metadata

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)"

The latter file:
const char* const banknames[64] ... "SB (Action Soccer)"
-and-

    { // bank 55, SB (Action Soccer)
3021,3022,3023,3024,3025,3026,3027,3028,3029,3030,3031,3032,3033,3034,3035,3036,
3037,3038,3039,3040,3041,3042,3043,3043,3044,3045,3046,3047,3048,3049,3050,3051,
3052,3053,3054,3055,3056,3057,3058,3059,3060,3061,3062,3063,3064,3065,3066,3067,
3068,3069,3070,3071,3072,3073,3074,3075,3076,3077,3078,3043,3079,3080,3081,3082,
3043,3083,3084,3085,3043,3086,3043,3087,3043,3088,3043,3089,3043,3090,3091,3092,
3093,3094,3095,3043,3096,3097,3043,3098,3099,3100,3101,3102,3043,3043,3103,3043,
3104,3043,3105,3043,3106,3107,3043,3108,3043,3043,3109,3043,3043,3043,3043,3043,
3043,3043,3043,3110,3043,3043,3043,3043,3043,3043,3111,3112,3043,3043,3043,3043,
3113,3114,278,3115,3116,280,281,3117,3118,3118,3118,3118,3118,3118,3118,3118,
3118,3118,3118,3118,3118,3118,3118,3118,3118,3118,3118,3118,3118,3118,3118,3118,
3118,3118,3118,3119,3120,3118,3121,3118,3122,3123,3124,3125,3126,3127,3128,3129,
3129,3130,3127,3131,3118,3118,3132,3133,3118,3118,3118,3118,3118,3118,3118,3118,
3118,3118,3118,3118,3118,3118,3118,3118,3118,3118,3118,3118,3118,3118,3118,3118,
3118,3118,3118,3118,3118,3118,3118,3118,3118,3118,3118,3118,3118,3118,3118,3118,
3118,3118,3118,3118,3118,3118,3118,3118,3118,3118,3118,3118,3118,3118,3118,3118,
3118,3118,3118,3118,3118,3118,3118,3118,3118,3118,3118,3118,3118,3118,3118,3118,
}

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.

Reply 10 of 24, by truth_deleted

User metadata

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!

Reply 11 of 24, by deemster

User metadata
Rank Member
Rank
Member

Here you go! 😀 Had to zip it, Vogons doesn't support *.IBK files

Reply 12 of 24, by truth_deleted

User metadata

Please verify the attached works as expected.

Last edited by truth_deleted on 2014-04-25, 21:26. Edited 2 times in total.

Reply 13 of 24, by deemster

User metadata
Rank Member
Rank
Member

"the program can't start because libgcc_s_dw2-1.dll is missing"

Just a moment, gonna find that DLL somewhere....

Reply 14 of 24, by truth_deleted

User metadata

The missing files are now in the above attached archive (and are required for the first archive posted above, too).

Reply 15 of 24, by deemster

User metadata
Rank Member
Rank
Member

Great, no errors now! What did you replace? Or, what number is the bank of Nitemare 3D?

Reply 16 of 24, by truth_deleted

User metadata

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.

Reply 17 of 24, by deemster

User metadata
Rank Member
Rank
Member

Wow, you're great _O_

So Nitemare 3D used the Wallace set for it's midi playback?

Reply 18 of 24, by truth_deleted

User metadata

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.

Reply 19 of 24, by deemster

User metadata
Rank Member
Rank
Member

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?