Hey there, I’m just copy pasting this information from the maker of Sequentix, haven’t found a better explanation; gives you a good idea of “why” USB is not ideal for TIMING (it’s ok IMO for note on/off messages)
(copied from a well known source, a master of MIDI -perfectly sums up the “problems” with USB based MIDI)
“USB MIDI has a bit of a problem with timing.
Full speed USB runs at 12 mbps, a data rate over 300 times faster than serial MIDI.
But USB is frame based, with a frame rate of 1kHz, i.e. one frame every millisecond.
A MIDI event being transmitted over USB must wait between zero and one milliseconds before it is actually sent, depending on when the event was generated by the processor relative to the regular frame period of the USB host.
You can send multiple MIDI events in a single frame, which gives a big advantage over serial MIDI as polyphony increases, but for getting a single byte of MIDI clock pulse out of a CPU, USB just can’t match serial MIDI.
If the line is clear, the start bit of a serial MIDI message can happen on the next transition of the serial interface’s baud rate generating clock, which has a period of 32 microseconds for plain old MIDI.
A quick example to show you what this means in practice…
A tempo of 120 bpm at 24 ppqn means a clock tick period of 20.833ms (rounded to 3 decimal places)
The ideal timing of the clock ticks should be:
Delayed until the next USB frame, the best case timing will be:
The period between each tick is usually 21ms, with a 20ms tick every so often to average out at 20.833.
A 21ms tick gives a tempo of 119.04 bpm
A 20ms tick gives a tempo of 125 bpm.
That’s quite a lot of cyclic error on your tempo signal.”
USB + MIDI is ok if you sequence and send out all MIDI information from that computer/DAW into hardware with absolutely no external sequencing.
Anyways, IMO it’s not worth even trying to use it seriously,
I personally do not use USB MIDI other than notes that do not have to be perfectly in time,
which are only “playing”/triggering notes on a certain synth (which is clocked from a real hardware source)
and for SysEx transfers.
So yes, FireWire might be better (off the top of my head: it has something called ‘Constant bit-flow’ or something, allowing the steam to go through without those pesky ‘windows’ that the USB controllers introduce.
Ultimately you want a MIDI port hardwired to the CPU, like on older computers (who have either USB ports or Serial Interfaces)
IMO the speed of a CPU also has a lot to do with timing, how “overly” fast the CPUs are today, remember that during the “golden age” of Computer MIDI timing the CPU speeds were in the sub 10 MHz