Midi Controller Test

Why this test is needed

In an ideal world, every computer would play NWC files identically, and this page wouldn't be necessary. Unfortunately, though, there are some differences.

A soundcard is able to provide MIDI controller(s) for programs to use. Each one supports up to 16 channels at once, of which one is dedicated to percussion. This leaves 15 general-purpose channels, each of which can be assigned a different instrument, volume, stereo pan, etc..

If the soundcard has a MIDI port (which doubles up as the game port, where non-USB joysticks plug in), then there'll be a MIDI controller to speak to it. Unless you've got suitable MIDI hardware plugged in, this will be silent.

Usually, there'll also be one or more controllers that output sounds via computer's own speakers/headphones. The soundcard will synthesise all the instrument sounds, so negligible CPU time is needed.

Sometimes, there's also a MIDI controller which uses the soundcard's waveform playback functionality to fake the MIDI sounds. In this case, the CPU will need to do some work to mix all the sounds together at the right times.

NWC can be told which of these to use (up to a maximum of 16 different controllers). This allows it to use more than 15 simultaneous channels – but only on machines with more than one controller available. As I have two MIDI controllers available with my soundcard, I've used this feature whenever I need more than 15 channels. This is fine when playing back on a similarly-equipped machine. If there's only one MIDI channel available, though, then there could be problems.

Some versions of NWC seem to automatically remap everything to the only MIDI controller in that case. This results in different parts sharing their instrument assignment, but at least everything's audible. I've tried to pair off the channels such that similar-sounding instruments go together, to minimise the impact of this.

Unfortunately, though, other versions see MIDI controllers called "<Unavailable>", that play as silence. In this case, any channel on the second MIDI controller will be inaudible. This can be fixed by manually remapping everything to the same MIDI controller, resulting in the same shared instrument assignments as described above.

The test

Download this test file, play it, and decide which of the following cases applies. (If none if these is the case, then please let me know.)

About the file conversion

The single-controller version of the files is generated automatically from the multi-controller version. This requires the files to be decoded, modified, and then reencoded. As the file format isn't officially documented, I've had to reverse-engineer it myself. It's therefore possible that I've got something wrong. Please tell me if you find a converted file that doesn't work.

I'll be putting the conversion program here for download once I've tidied it up a bit, together with its source code, and a description of the file format (or at least as much as I've deciphered of it).

See also my notes page for more technicalities.


Chris Hall <chall0@gmail.com>