MIDI File Mapper is a utility designed to make it easy to map MIDI note events in MIDI files. A typical use would be to convert MIDI files containing drum beats to target a different drum sampler than the one they were written for. MIDI File Mapper can use Cakewalk SONAR drum maps and Steinberg Cubase drum maps, as well as its own more flexible mapping format.
A link to the latest version of MIDI File Mapper can be found here.
MIDI File mapper requires the .NET framework version 2.0 or newer to be installed. You can download this here. Once you have the .NET framework installed on your PC, you can run the installer. Midi File Mapper can be uninstalled at any time using its uninstaller. It will delete all the files it installed on your PC, but if you have created some extra maps of your own, they will not be deleted. If you have modified any of the included maps, you should back them up before installing a new version of MIDI File Mapper as they will be overwriiten.
TODO
If you are a user of Cakewalk SONAR or Steinberg Cubase, then you may not need to learn the MIDI File Mapper XML mapping format at all. You simply set up a drum map in your sequencer, test that it performs the mapping you require, and save it to a file, which can be later loaded into MIDI File Mapper. However, if you do not own these sequencers, or if you want even greater control over the precise nature of the mapping, then you will need to learn to use MIDI File Mapper's built in format.
The format is standard XML, and the top level node name must be MidiMappingRules.
The General section includes the Name of the map and any Author and Version information. It is the first section in the mapping file. The values in this section are not strictly needed, but are useful.
<?xml version="1.0" encoding="utf-8" ?>
<MidiMappingRules>
<General>
<Name>GM to Latin Percussion EZX</Name>
<Author>Mark Heath</Author>
<Version>1.0</Version>
</General>
...
</MidiMappingRules>
After the General section will typically come a number of NoteMap nodes. You will normally add one of these for each MIDI note you wish to map. You can also set one up to map a range of notes. By default, MIDI File Mapper will exclude all notes from the output file unless they are explicitly present here.
The Name attribute gives it a user friendly name - useful for naming kit pieces in a drum map.
The InNote attribute specifies which MIDI note numbers (0-127) will be affected by this rule. You can specify a single number (e.g. "25"), a range (e.g. "30-40") or even a list of values (e.g. "50,62,74"). If omitted value will be set to "*", which indicates that all notes will be affected.
The InChannel attribute specifies which MIDI channels (1-16) will be affected by this rule. By default this is "*" - all channels, but you can limit it to just one channel or a list of channels if you wish.
The InVelocity attribute specifies the MIDI velocity range (0-127) for events that will be affected by this rule. By default this is "*" - all velocity values, but you can limit it a range of velocities if you wish (e.g. "0-64").
The OutNote attribute specifies the MIDI note number that note events matching the InNote, InChannel and InVelocity will be mapped to. For drum maps this will typically be a set number (e.g. "62"), but you can also transpose (e.g. "+12" or "-1"). By default the InNote will remain unchanged.
The OutChannel attribute specifies the MIDI channel (1-16) that events matching this rule will be mapped to. This will normally be a set number (e.g. "1") or can be left out so its channel will be unchanged.
The OutVelocity attribute allows the note velocity of matching events to be modified. They can be set to a set value (e.g. "100"), adjusted by a fixed amount (e.g. "+20" or "-4"), scaled (e.g. "50%", or "200%") or left unchanged (the default "*").
The OutDuration attribute allows the duration of matching note events to be modified. They can be set to a set number of ticks (e.g. "15"), adjusted by a fixed amount (e.g. "+20" or "-4"), scaled (e.g. "50%", or "200%") or left unchanged (the default "*").
The following example shows a note on any channel with note number 36 being passed through unchanged to the output file.
<NoteMap Name="Bass Drum" InNote="36" OutNote="36" />
The following example shows a note on any channel with note number 36 being passed through to the output file with its channel being set to channel 1.
<NoteMap Name="Bass Drum" InNote="36" OutNote="36" OutChannel="1"
/>
Often you simply want to remap notes, but if your MIDI files contain controllers, you may wish to move them to a different channel, or modify them in some other way. The ControllerMap node allows you to do this, in a similar way to NoteMap.
The Name attribute gives it a user friendly name - for example, what this controller is for.
The InController attribute specifies which MIDI controllers (0-127) will be affected by this rule. You can specify a single number (e.g. "25"), a range (e.g. "30-40") or even a list of values (e.g. "50,62,74"). If omitted value will be set to "*", which indicates that all controllers will be affected.
The InChannel attribute specifies which MIDI channels (1-16) will be affected by this rule. By default this is "*" - all channels, but you can limit it to just one channel or a list of channels if you wish.
The InValue attribute specifies the controller value range (0-127) for events that will be affected by this rule. By default this is "*" - all controller values, but you can limit it a range of controller values if you wish (e.g. "0-64").
The OutController attribute specifies the MIDI controller number that controller events matching the InController, InChannel and InValue will be mapped to. This will typically be a set number (e.g. "62") if you want to change from one controller value to another. By default the controller number will remain unchanged.
The OutChannel attribute specifies the MIDI channel (1-16) that events matching this rule will be mapped to. This will normally be a set number (e.g. "1") or can be left out so its channel will be unchanged.
The OutValue attribute allows the controller value of matching events to be modified. They can be set to a set value (e.g. "100"), adjusted by a fixed amount (e.g. "+20" or "-4"), scaled (e.g. "50%", or "200%") or left unchanged (the default "*").
There may be some types of MIDI event that you would like to exclude from the resulting output file, such as controllers or MIDI meta-events. The Exclude node allows you to choose which events will be excluded from the output file.
The EventType attribute specifies what type of events to exclude and is set to one of the following values:
The Channel attribute specifies which channels will be excluded for the event type specified (note this only applies to MIDI events that have channels). By default this will be all channels (i.e. "*").
New versions of MIDI File Mapper can be found at http://www.wordandspirit.co.uk/software.html.