Eli Brandt eli at gs160.sp.cs.cmu.edu
Tue Jan 28 01:34:24 CET 1997

Llyal Gordon wrote:
> From what i understand about MIDI, an UART is used. This is attached to
> some sort of registers, DMA, I/O, etcetera, of the instrument itself- is
> this correct? Now, can a computer just dump data at this point (bypassing
> MIDI), to the device, as fast as the device can handle it? (What kind of
> synching or timing do i need to worry about?) 

My guess is that the UART triggers an interrupt, whose service routine
just takes the data and dumps it in a queue; the main loop later pulls
it out and acts on it.  You could try to bypass the UART: present a
block of data, and raise the interrupt line -- this might not be so
hard to do.

But I doubt this will gain you much.  First, do you know that it's the
31-kbps(?) MIDI data rate that's the bottleneck?  Maybe I'm biased
because I can't afford new gear, but a lot of synths will choke and
die long before you max out MIDI.  (The sender's system software and
output hardware (e.g. PC soundcard!) might also be bottlenecks...)
Even if MIDI is now the bottleneck, you probably can't crank up the
flow much before drowning the processor.  (I'm guessing this just
because CPU is expensive, and idle CPU is worthless.)

So for an order-of-magnitude gain, you probably have to do the MIDI
decoding yourself.  This would mean reverse-engineering the MIDI ISR,
hacking into the data bus, and then dealing with nasty data-contention
issues as you try to poke stuff in... well, if you can do this kind of
thing you don't need _my_ mumbling on the subject.

> What solutions or advice do YOU have to offer?

Again, be sure that the data rate is the problem.  I promise I hate
MIDI as much as you do, but maybe you need a faster synth.  (I've
thrown a fair bit of controller data at a K2K, just as a data point,
but you may be more ambitious.)  You could use one MIDI output per
synth, for a factor of 8 or so over a standard card.

Wouldn't it be nice if everything sat on a fast peripheral bus?

   Eli Brandt
   eli+ at cs.cmu.edu

More information about the Synth-diy mailing list