pl0t engine - midi


Now, you shouldn't really bother about the midi implementation if you just use the custom made MAX objects, but it could still be interesting for you to know what goes on. The sound-engine supports the following:

META events

Marker events is supported in the pl0t system, it serves the purpose as cuepoints for something to happen on the webpage as the music is playing. If you write some bogus message in the marker event like "Aren't you a little short for a stormtrooper" nothing will happen, but, if you write the following: "javascript alert pl0t" PlotPlayerApplet calls the function alert in the webpage with the argument pl0t. So the user will experience that in the middle of the song there suddenly pops up an alert telling him "pl0t" (alert is an internal javascript function). In other words the format is as following:

javascript [function name] [argument]

at the moment the argument has to be a continous string, but if you want to show text with whitespaces use for example the nbsp-tag. Also, you can only at the moment specify one argument, so functions using more then one argument will not be called correctly.

Illegal META events & control changes

The internal system uses some control changes to work properly. If you add control changes of this type I can't guarantee that your browser don't explode or whatever. Also the system uses one of the META events.The META & controlchanges are at the moment:

So please don't use these control changes, they don't do anything to the softwaresynth anyway...

Program change/Bank select

Use program change with bank select controller 0. Also, remember that the boring GM sounds are in bank0, and that you lush custom intstruments are in bank2

Don't have MAX?

Well, if you wanna use another generator, or just make a MIDI radio or something, all you have to do is to make a program that send UDP packets including the midifile in the data buffer (and nothing else) and it will work like a charm... but, I encourage you then to dive into the source code if you don't want to use the system as it is.

NOTE: The generating engine (like MAX) has to remeber the state of the midifiles sent via UDP (like instruments, pitchbend/modulation etc.) and include this in the begining of each midi-file.