[LAD] Implementing software knob behaviour

Len Ovens len at ovenwerks.net
Tue May 16 13:41:44 UTC 2017


On Tue, 16 May 2017, Christopher Arndt wrote:

> I'm currently trying to write a software MIDI/OSC control panel in
> Kivy/Python [1]. I want to implement a sensible knob behaviour but I
> have trouble getting this right. The general idea is:
>
> - Click (starting somewhere in the area of the knob control) and drag
> upwards/downwards (y-axis) increases / decreases the value.
> - Dragging left/right (x-axis) decreases step size of increments /
> decrements.
> - Each knob has a min/max value.

OK, interesting idea. Make it and try it see how it "feels".

> My questions are:
>
> - What should I use as the reference point for finding the distance of
> the movement? The centre of the knob or where the first touch event
> occurred?

first touch. any knob or fader should work from first touch because (if 
nothing else) touch is not precise. The touch may end up off the widget 
(or even the application window), but so long as the touch continues, it 
belongs to that widget.

> - Should I apply the distance to the value directly or use the distance

NO.

> as a relative value (i.e. increment / decrement to the value when the
> touch started)? If the former, how do I prevent value jumps?

again both knobs and faders should move the value from where it is now to 
somewhere else. It is pretty much impossible to touch a slider at the 
point the value already is, it is much harder with a knob. Besides which 
you are activating it like a slider so there is no visual hint of where 
the finger/mouse should touch to start from the current value. My 
personal thought on any controller (glass or physical controls) is to base 
things on encoders not pots. The thing you are controlling might also 
change the value of a knob (banking or preset change)

I would point to Ardour's GUI, Open Stage Control or the X32 remote editor 
appliaction (free download) as examples.

You will note all of these use left/right the same as they use up/down. 
The idea of using left/right as graininess is interesting. I have seen x/y 
pads used that way too. With an x/y pad the graininess can be value of 
touch point while the value itself is incremental because the x/y pad 
gives some indication of where to touch. However, the main thing I like 
about knobs over a slider is that it takes the least real estate for the 
most effect. An x/y box uses the most real estate being bigger than a 
slider even. Open Stage Control uses two fingers for fine movement on it's 
sliders, but that would be difficult with a knob. (my fingers are too big) 
Other applications use a meta key for fine.

--
Len Ovens
www.ovenwerks.net



More information about the Linux-audio-dev mailing list