* MIDI INFO *  
   

SEND E-Mail
  MIDIs | HOME | LINKS  
  OVERVIEW | SEQUENCER | SYNTHESIZER  
  MIDI FILE INFO  
NN 2+/IE 3 at 1024x768x256

 
 

The MIDI file itself

  You know, now, that General MIDI is set up to play back sixteen channels at a time - at most. Each channel gets its own instrument, but you can change that instrument, repeatedly, throughout the MIDI, as the song plays (so it's not that restricting). So GM, and GS and XG extensions too, plays up to 16 instruments at a time. That's called a 'multi-timbral' capability, but since every modern synth is that, it's kind of irrelevant, and sequencers will send out all 16 instruments at once. Channel 10, again, and sometimes channel 16, is set aside for percussion, the drum part; where the drum instrument is the whole drum set, and then some. And while 16 instruments are the upper limit, even so, the number of notes played at the same time, on the same beat if you will, may reduce the number of instruments heard or played, since the synth can only play so many notes at once, as well (though more recent software synthesizers are pushing this limit up to more than a hundred notes at a time).

  To review a little more, each channel can be broken down into tracks, and the tracks combined to play out one particular channel, at any given moment (channel output can be changed while the MIDI plays, just like a lot of other things are changed). You record from the synth onto a track, or you paste the notes in the program, onto a track. Say, again, you have three tracks, all playing out channel 10, the drum part. Each track might have a different part of the drum kit. If broken out, it will typically take even more than just three tracks. You see this a lot in various MIDIs. So while what's playing on a channel can be broken up like this, separated out into multiple tracks for convenience, the reference is still to the channel - one of 16. The notes play out a particular channel, whatever track they are on. The pitch bends, oscillator controls, controllers in general, play out a particular channel. And so on.

  Okay. Typically, except for complicated classical pieces, or for drum parts, you'll have the notes, the synth controllers, on one track, playing out of - one channel, always with one instrument at a time selected for that channel. Simple. This information can be easily displayed in a sequencer. This is a screen shot from the sequencer I use which shows multiple tracks for the drum, all playing out channel 10, and the other instruments all set in their own tracks, playing out of different channels.

Picture of Track Window, from the Winjammer Pro Sequencer for Win95

  This sequencer shows the track name, which can be used to describe which part is being played, and the instrument call out is just a text field to describe the instrument playing it, assuming it isn't changed somewhere later in the track; which is not uncommon. The patch actually being used is shown at the far right. [And, btw, the nylon stringed guitar might play out as a piano, because the last instrument selected for channel one is, the piano.]

  As noted on the previous page, I have a small collection of files which cover some of the technical side of what comprises a MIDI file. So you have that for reference. You can read there the byte values used to identify tracks, messages, SysEx, and so on. As mentioned before, each track contains a number of different sort of messages. They aren't marked or delineated other than just as a stream of information with headers, message lengths, and messages/data, just strung together one after another, and played back based on the current tempo, which can be changed at any point, and the timebase set at the beginning for the entire MIDI. And then you have the data on each track.

  If MIDI is a way to control synths remotely, to sort of let electronic boxes 'talk among themselves', then a MIDI file itself, particularly a complete and produced song, is like a roll for a player piano (it's the popular analogy). On each track, the notes themselves are the little holes in the player piano roll, as it were, and come at a particular time on the 'roll', and are of a certain length. In addition, there's a volume for the note (termed - velocity), which I don't think you'll find on a piano roll (though I don't know). With just a bunch of notes, with their start time, duration, and 'velocity', you can have yourself a pretty decent little MIDI, if you record live, for ex., or 'style' the thing based on timing and velocity patterns, or something.

  As mentioned already, more can be done, and typically is. Most synths (except maybe FM soundcards) allow for chorus and reverb settings, at a minimum. And even FM will pick up a pan and pitch bends. These would generally be called, controllers.

  • You can really fill the sound out with the chorus and reverb, if not overdone; it can make the difference between sounding canned and 'flat', and sounding real.
  • And pitch bends are great for most instruments, since most instuments use slurs.
  • Pan is often used in a gimicky sort of way, but that's the fun I guess - swinging the notes from the instrument back and forth between your speakers; but it's mostly used just to set the instrument 'on stage', playing out the right speaker, more in the middle, to the left, whatever.

  Now the MIDI file can contain these things, which are not necessarily based on one particular synthesizer. And there are lots of other controllers, including overall volume, expression (which is a more useful sort of volume), sustain pedal, just all kinds of things. It's synth-based in the sense that some synths will recognize and play more controllers than others will. But which is which, save for some extras, or extensions, is pretty much dealt with the same from make to make, model to model of synth.

  Other stuff, however, is synth-based. SysEx (System Exclusive MIDI messages) may translate well between various synths, at least for some commands strings. But it's basically synth specific. And SysEx takes a slight moment to be played, and handled by the synth. If not for sound cards, then for some modules and external synths, there needs to be a little spacing between the commands (they can't just all play in an instant). And it's not necessarily simple to write in these commands to the MIDI unless that feature is programmed in the sequencer (Roland, for ex., uses checksums for its SysEx - Yamaha does not). You may need a separate SysEx program. A somewhat simpler way to change these synth settings, a few of which are generally recognized by most synths (degree of pitch bend, for ex.), is to use RPN and NRPN values (Registered Parameters, and Non-Registered). The synth doesn't need to take the brief moment to deal with these as with SysEx, not that it's such a problem, and you don't need a string command, but just a value for the parameter. This is picked up again under the little discussion of synths, further on.

  The MIDI file can also contain a bunch of descriptive informative, in text form. Using SysEx, there's a command to display a message on a module screen, if you're using one. With MIDI commands, you can include a text box, basically, where you write just anything; background on the song, artist and equipment, whatever. A copyright message can be included, and also track and instrument names as seen above. Lyrics can be included matched right up with particular notes, though you'd need a karaoke MIDI player, or just a sequencer that reads (and writes) the lyrics, to see them.

  The MIDI file, itself, is often referred to as a Standard MIDI File - or SMF. A MIDI generally can come in two varieties, a type 1 and a type 0. The above example is a type 1, where the tracks can be viewed separately. Type 0 combines all tracks into one, retaining the channel call-outs, even the same descriptive info, above, but just all crammed into the first track - track 0. Any sequencer should be able to trivially and instantly convert between the two.

  So . . . . what about the sequencer? which should help further get into the details of the MIDI file, as well.