IMF Creator is a Windows program that can convert MIDI or MUS files into IMF files playable in every game engine that supports the format. In addition to converting the music files, you can also import instruments from BNK, CMF, IBK, IMF, RAD, and SBI files. It also can be used to play MUS and MIDI files with an OPL2chip instead of General MIDI.
The program has several additional features including support for modifying tempo, detecting pitchbends, and custom instrument creation.
Main Screen Edit
MIDI supports 16 instrument channels. This list is given to you on the left side. IMFCreator does its best to let you know what is going on in that track by telling you the first instrument for each track. However, each track can have more than one instrument.
MTrks are data structures found within MIDI files. An MTrk can hold data for one or more MIDI tracks. If you don't quite understand MTrks, that's alright. This ability is there for you to try different settings to get your IMF file sounding as well as possible.
Try out different settings to see how they make your files sound.
Instrument Editor Edit
Adlib instruments use two sound waves, called the carrier and modulater waves, to produce a sound. The modulator wave is passed through the carrier wave modifying it as it goes.
NOTE: Some settings on this screen are not used in IMF files, but are included in OP2 files and are editable here for completeness.
There is now a mini-keyboard in the bottom left corner so that you have a way to try out your instrument sound.
You can also import sounds from Adlib Instrument Bank (BNK) files. This opens the door to lots of instrument banks that can be found on the internet.
Name: This is the instrument's name. It can be up to 32 characters in length.
Allow Secondary Voice: Not really used by IMFs, but IMFCreator can be set to use them instead of the primary voice. They are there to make certain sounds sound more realistic (as in Doom), but generally don't sound quite right when used independently. This also allows you to set fine tuning for the secondary voice.
Unknown Flag: I could not find any information for this flag other than it is unknown. It is only used for one instrument. IMFCreator does not use this at all.
Use Given Note (Percussion): Allows you set which note to play for the current instrument. Useful only for percussion instruments.
Reset: Clicking this will reset all settings to their value in the current OP2 file.
Tremolo: Toggles tremolo.
Vibrato: Toggles vibrato.
Sustain: Toggles note sustaining.
Envelope Scaling: Toggles envelope scaling.
Frequency Multiplier: Raises notes by the given number of octaves.
Volume: Lower values make the sound louder. IMFCreator does its own volume calculation.
Attack: Higher values cause a faster attack.
Decay: Higher values cause a faster decay.
Sustain: Decay ends when the sustain level is reached.
Release: Higher values cause a faster release.
Key Scale: Not used for IMFCreator.
WaveForm: Sine, Half-Sine, Absolute Sine, Pulse Sine
Note Adjust: Transposes notes by the given value.
Feedback: basically distortion
Open: Opens a MIDI file for conversion.
Exit: Exits the program.
Instruments: Opens the instrument editor.
Write Wolfenstein-Style IMF:
Write Duke Nukem 2-Style IMF: Selects the style of IMF to write. The only difference is the Wolfenstein-Style IMFs include a 4 byte data length in the beginning and Duke Nukem 2-Style IMFs do not.
IMF Tics/Second: Sets the number of tics per second the game engine's IMF player is set at. Wolfenstein-based games are 700, and Duke Nukem 2-based games at 250.
Use OPL Fine Tuning:
Use OPL Secondary Voices: Toggles the usage of these aspects of the OP2 instrument definition.
Add Chord Spacing: Adds a 1-tic space between notes played on the same MIDI track so that it's more likely that notes on other tracks will get played.
Aggresive Channel Selection: If no channels are available, this will interrupt a channel that has the same instrument as the one to be played, even if that note is not yet finished.
Do Pitchbends: Checking this will make IMFCreator process pitchbend MIDI events. These events can make the IMF very large very fast.
OP2 File: Used to select the instrument definitions file.
Pitchbend Scale: Lower numbers cause the pitchbend to go over a wider range. Higher numbers will make the pitchbend less drastic.
Pitchbend Threshold: Lower numbers allow more pitchbends to be processed. This behavior is also affect by the pitchbend scale being used.
Calculate Discarded Notes: Calculates how many notes will not be played using your current settings.
Contents: Opens this help file.
About: Displays version information about IMFCreator.
Author - Adam Biser
ID and Apogee - for all the games that use IMF files.
Nullsoft - for making NSIS, the program used to produce the distributable EXE file.
For discovering bugs and offering suggestions:
GitHub for compiling from source (necessary for Linux version, requires Python 2.7)