[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