|
MIDI
LINK MATRIX
|
My
music workstation
differs from commercial applications in two ways:
1) to
control the audio DSP features and the wavegen synthesizer, a MIDI
like protocol is used with modified data width. Instead of using
7-Bit values like with common MIDI my virtual devices operate at 10 bits data width for a better
accuracy.
2) To
transport data with low latency, 25MHz busses with 8 bits of width are defined
using an internal multiplexed S/PDIF serial protocol.
Using standard MIDI has some issues: It produces dynamic data length
depending on the number of notes and controllers sent, causing
a kind of jitter, so in common musical instruments, a time stamp related
processing is used. This leads to the fact, that there is no good
real-time
operation possible when playing live, because time
based processing of course requires a large buffer and look ahead
features eventually.
With a
25MHz parallel 8Bit system, 200 MBit of bandwidth is available
cutting down latency significantly.
To interlink devices over a larger distance of e.g. 5m, S/PDIF
transceiver chips can be used to do this easily. Electrical S/PDIF
transceivers (coax) typically run at 2-3Mbps and often work up to 6Mbps. For optical transmission, 10MHz seem to be possible, since ADAT
already operates with 48kHz x 64*8 = 9Mbps (data bandwidth). Current
optical transceivers do at least 13Mbps (raw).

The FPGA can handle 1024 virtual MIDI
channels easily and route them from individual sources to dedicated
output targets with nearly no latency. Transmission over S/PDIF like
interfaces ensures low latency even of thousands of events have to
be transmitted.
The table below shows the implementation for
internal and external data streams with the 4x4 Bit MIDI extension
leading to 12 Bit MIDI words finally. They can be transmitted using
a stereo S/PDIF word or in the 10 Bit version be compressed into one
32 Bit S/PDIF word. Next to the internal compressed format
which allows the double bandwidth, there is also an external format
with non S/PDIF protocol standard using the physical layer only
which contains a full raw data stream to be send over serial
interface without any reprocessing required. Just a FIFO and
some retiming is needed.

Read a detailed article about the MIDI limits here
Enhanced MIDI
protocol for higher transmission rates and lower latency |
|