MIDI Files - Is There A Problem?
Paul Andreas Overaa sounds off about the dismal lack of information there is about the MIDI file standard.
The Standard MIDI File Format, as many Sound On Sound readers will already know, is designed to allow files of collected 'real-time' MIDI data to be moved about between different software packages - sequencers, scorewriters, etc. So it's theoretically possible to record a song using Steinberg's Pro24 on an Atari ST, store the data as a MIDI file, use a communications program to port the file to an Amiga disk [see panel - Ed.], load that MIDI file into, say, Passport's Master Tracks Pro or Blue Ribbon Bakery's Bars & Pipes program on the Amiga, add some extra parts/effects and resave the data... again, as a MIDI file. You could then read that data into Dr.T's KCS sequencer for going out gigging with!
Now I'm not going to tell you that this sort of thing can't be done, because it can. What has to be pointed out, however, is that there do seem to be certain problems with MIDI files. So if you have tried to do this sort of thing and failed, you can take comfort in the knowledge that it may not necessarily have been your fault.
To understand where the problems may lie, we've got to go back a few years. The original MIDI file standard was quite straightforward - it stored time-stamped MIDI events (note-on, note-off, etc), and it supported a number of non-MIDI items (called meta events) which allowed things like tempo and time signatures to be held in the file. Some minor changes were made to the System Exclusive format (a byte count was included at the start of the message), but other than that everything was pretty straightforward. The data files were essentially a single stream of MIDI data, and the only real snag was that there was no provision for proper multiple track sequencer data - it could only be handled via MIDI channel assignments. Opcode's Sequencer 2.5, Intelligent Music's Jam Factory, and quite a few other packages all supported this single stream file format. But since those early days, things have changed.
So what? The ordinary MIDI standard has also developed since it was first introduced. Agreed, the difference is that details of the MIDI standard are accessible... it's published in books, companies such as Yamaha and Roland offer guides and advice sheets on MIDI, and so on. So, we might all know what a note-on event or a SysEx message is, but how many know what a delta time or a meta event is?
The Roland/Yamaha brigade are heavily involved with the MIDI specification but they are not involved with the MIDI file format, so (other than mentioning in their manuals and guides that it exists) they are almost as much in the dark as the rest of us. The people who have done the development work on the MIDI file format are essentially the software companies themselves - and they're not known for being over-cooperative as far as giving away technical information goes. The result is that the MIDI file format standard has been altered in ways which have not been made generally known to users.
At least three types of MIDI file are now seen. File type '0' looks to be similar to the original single stream MIDI files of the old days. But if this is so, why do Music X's file type '0' files start with information which are neither meta events or MIDI events? Do these files now include some sort of header information? Why also are program change commands now filtered out?
To this interesting pool of technical mish-mash, we can also add questions about file type '1', which stores multiple tracks, and file type '2' (mentioned in Dr.T's KCS manual). In six months of asking, I've not found anyone who has any technical info on the current state of the game.
Most worrying of all is this... I've taken a short real-time MIDI sequence and saved it as a MIDI file type '0' on around a dozen different sequencers. By using software which looks at the data held in the file, I've found differences - strange header bytes, etc. Are there bugs in the software? Is it that the MIDI file standard now allows embedded sequencer-specific information? Is it that some developers are using versions of the 'standard' which are different or out-of-date?
It's a ludicrous situation. The MIDI tile format has apparently been adopted by the MIDI Manufacturers Association (MMA), so presumably it is now part of the official MIDI standard we all know and love... the trouble is no-one seems to know what it is! I wrote to the MMA for some answers and didn't get a reply. Two colleagues did the same, and they're still waiting.
I've not met one single person who has seen a current MIDI file format standard in black and white, or who knows about its internal data structure!
Many serious users are finding occasional unexplained problems and nobody seems to know who to turn to for answers. Us 'techies', by looking in detail at sequencer file dumps, could easily sort out where the problems lie... but we can't do it without the appropriate MIDI file format specification. Someone somewhere has the answers, but until they come forward and explain the current rules of the game, there's a good chance that MIDI files will suffer the same fate as MIDI sample dumps - people will either be very wary about using them or they won't use them at all! And that would be a crying shame.