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