[sdiy] Midi CC update rate question
Richie Burnett
rburnett at richieburnett.co.uk
Sat Jan 7 14:09:31 CET 2012
Hi guys and girls, and happy new year,
I have a question regarding the generation of MIDI Continuous Controller
messages. (My appologies if this subject has already been covered
previously. I had a quick trawl of the archives but didn't turn up much.)
If I am designing a product with 5 knobs capable of sending MIDI CC data
when they are adjusted what is a sensible update rate for their transmission
over MIDI?
For example, if only one control is continuously turned the product could
theoretically transmit CC messages at an update rate of about 1562 per sec
if running status was used! Whilst this ludicrous rate would surely be nice
and smooth it also takes up 100% of MIDI bandwidth meaning the messages
would have to be dropped by a sequencer in order to merge in other data.
I did some testing using a MIDI monitor program and a range of MIDI synths
and controllers that I own. It seems that most machines send CC messages at
somewhere between 20 and 150 updates per second. This assumes that the
controller is continuously on the move. Do you think it is reasonable to
cap the maximum update rate at about 100Hz for a single CC transmitted over
MIDI? This would not hog too much MIDI bandwidth and provide plenty of
space for merging in other MIDI data.
Now if there are 5 knobs on the product and all were being manipulated
simultaneously, do you think each controller should send CC data 100 times
per second, for a total of 500 CC messages per sec? Or the controllers
should be serviced in round-robin fashion with the combined CC stream adding
up to a total of 100 CC messages per second? The later meaning that each
controller would see one fifth of the total CC message rate, or 20 updates
per second as long as the other four controllers were being moved at the
same time.
I don't know if I am being too pedantic about CC message rates as sequencers
and merge boxes will obviously drop CCs if things get a bit tight. I just
want to make the right engineering decisions at this stage rather than have
something come back to bite me on the backside further down the line.
Finally, I noticed that none of the synths and controllers that I tested
used running status to compress CC messages even though it was the only data
currently being transmitted. Is running status meant to be used by synths
and controllers that generate CC data, or is it meant to be kept only as the
"sequencer's secret weapon" to compress outward going MIDI streams when
things get a bit tight?
Thanks very much for any thoughts, figures or general feedback,
-Richie Burnett,
(Newcastle UK.)
More information about the Synth-diy
mailing list