differs from commercial applications in two ways:
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
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
operation possible when playing live, because time
based processing of course requires a large buffer and look ahead
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 on 2-3MHz and often work up to 5-6
MHz. For optical transmission, 10MHz seem to be possible, since ADAT
already operates with 9MHz.
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
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.
Read a detailed article here
protocol for higher transmission rates and lower latency