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