Re: [Loopdub-devel] Synchronizing MIDI controls with LoopDub
Brought to you by:
radarsat1
From: Nick T. <nh...@gm...> - 2008-01-02 09:59:21
|
On Jan 1, 2008 10:10 PM, Stephen Sinclair <rad...@gm...> wrote: > Hi, > > Sorry for the delayed response.. :) > I was preparing to play a set at a new year's party, so I didn't want > to give you a quick answer. You put a lot of thought into your posts > so I like to give myself time to consider carefully before answering. > Not a problem at all. I much prefer a thorough response to a timely one. > (ps. the set went well, though i played so late in the night that > there weren't many people left... loopdub worked perfectly however! > First time doing a set using Linux on a borrowed MacBook Pro.) > Glad to hear it! > > The essential problem here is that it just makes no sense to have MIDI > > pick-up for a controller that can move in a non-stepwise manner; > > Perhaps, but I think it's best to assume that any control can move in > a non-stepwise manner. > That would be the ideal solution, yes. It would be much simpler to not have to make the distinction. And, as you point out, perhaps it would even be necessary. > > My button goes to 64 when I turn it on, and > > 0 when I turn it off, so I can never get to 32. I'm stuck in pick-up > > mode; my button is rendered useless. > > Pick-up mode doesn't need to detect proximity to the current value. > It only needs to remember which side the MIDI control was on (relative > to the GUI value) before going into pick-up mode. > Yes, you're right. I like your algorithm. It seems to encapsulate the essential characteristic of MIDI pick-up, which is that the MIDI control value has to pass through the internal control value before the program will respond to it again. Of course, we're also in agreement that sometimes this just isn't what you want, which is why we want to be able to disable pick-up selectively. > One situation however comes to mind: what about those controllers > where the settable knobs are magnetically controlled? If you send a > MIDI value to one of the knobs, it swings into place over some amount > of time. During this particular delta time, wouldn't you want to > ignore values during the slide? It seems pick-up mode might be useful > for saying "go to this value, but ignore incoming CC messages until > that value is reached." > For such a device, I would say that you would want to enable pick-up mode for its knobs. This would do the right thing when an internal control change causes the hardware control to move; it would also do the right thing when you load a preset or something like that. If you're not in pick-up mode (that is, the hardware control value matches the internal control value), and you load a preset, then the controller sends CCs for each control until the control reaches its new value: thus, the slide in the hardware control value is matched by a corresponding slide in the internal control value. This seems to me to be desirable, not undesirable. Similarly, if any of the controls are in pick-up mode, their CCs will be ignored until they reach the internal value, and then they will slide the rest of the way to their final value. This is, I think, the right thing to do. If a control is in pick-up mode and the movement between its initial value and its final value does not pass through the internal value, then the internal value will not change at all. This is _arguably_ the right thing to do. There may be a better solution, but I think that it is not worth further exploring until we have confirmed that a device with these characteristics actually exists. With the point on magnetically controlled knobs aside, I think that we have arrived at a design that we can both agree on: pick-up implemented using your algorithm, with the ability to selectively disable pick-up for different controls. |