From: Joe E. <jo...@em...> - 2011-09-08 14:22:32
|
On 9/7/2011 10:54 PM, William Zwicky wrote: > I worry that for some synths, the rate limiting is synth-specific. Is there > (or are you thinking of) a framework to plug rate limiting into? Or would > we need to implement a layer on top of sendSysex()? It has been a while since I worked on the raw MIDI subsystem. But this is what I was thinking: - It should be possible for individual synths to tell the MIDI layer their maximum speed. The MIDI layer probably knows what interface they're on (and could also know what synth they're sending a message on behalf of), so... if we're lucky, the speed would only be throttled for message to that specific synth. If we're not lucky, speed would be limited for that whole interface. - Even if we *are* lucky and can limit the speed based upon the synth, there should *also* be a way for a synth to ask that the entire interface be speed-limited. This would be in cases where, even though the sysex (or other MIDI) traffic is not *targeted* to the slow synth, the slow synth still locks up when it sees the traffic going by. - This would not be something we'd add to sendSysex(). We'd just add some new method in the MIDI layer for synthdrivers to ask for speed-limiting once and the MIDI layer would just honor that until it was asked for a new speed limit. > As for UI controls, we definitely need a smart system for that. If the user > drags a slider from 0 to 100, we don't want to send 100 updates, just the > few we actually have time for. Oh, wow... you're right. That's a dicey problem. We'd kinda want to either have the widget not send an update when the user is moving the widget *fast*, but then, when they got close, to start sending then... or maybe only send when they released the widget. Actually, we probably want the user to indicate how "eager" the widgets are with some setting in the control panel. - Joe |