|
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.
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.
|