Thank you, cire. Okay, so here's what I'm thinking, kind of a road map:
1: Some kind of magnetic hook, where the dial hooks itself to the input after the input changes a certain amount. It has a blue input, a blue output, and also has two dial parameters. One of the dial parameters is called
main and the other is called
minDelta (I would accept better names if someone has a suggestion). The
main parameter defines the output, and the
minDelta defines how much the input has to change so that the
main dial copies the input and is hooked to it. The
minDelta might be also an input.
There can be a version of this object for the xtor system and another that just writes and reads its value to a table, then people can store that table in the sd card however they like. I'm already working on this, and I think I'll have something to share soon. I'm not sure about the name though. PotManager? PotMan? PotHook? HookPot? PotPusher? PushPot? InputToParam? Any ideas? I'd also make versions to manage different number of potentiometers.
2: Then I'd make some objects to smooth the output of the
potManager output. I think you're right they should be separated; another reason to do it that way is that they can be used for other stuff. I was looking at some old patches, and then at the library, and I saw that there are actually more objects apart from a lowpass filter than can be used for this. There's a smooth object, a glide object, and many variations. I'd still like to add some other options. I'd like to add some objects that interpolate between two values, so I can add an output to the
potManager that gives the last unhooked value and interpolate between it and the main output. That way, there's only interpolation when it goes from a preset value to an input value.
Some of the smoothing options that I'd like to add, the options I'd like the most, also interpolate from the unhooked to the hooked value, but with a fixed duration, so no matter how much the input changes, the interpolation has the same duration. They require a very intimate integration with the manager though (the connections would be too complicated otherwise), so either they are added to the interface of the
potManager or I add a version of the
potManager with a text field where you write the name of an interpolator object. I'd like to make this kind of interpolation option first and then others.
3: A hook with a deadband scale function. To be honest, I couldn't exactly get how the multipot stuff works; I get what it does, but its exact way of doing it is kind of hard to deduce because the values it gives can change a lot depending on the speed of the input change. I was also too lazy to deduce it from the code because there's a lot more stuff in there, it has few comments and the axoloti code editor is not the best for understanding code written by others. I myself should put more comments in my objects too, now I realize.
Anyway, I might just try to copy from it and make it xtorable without the other modes, and if for some reason that doesn't work, then I'd make my own deadband scale algorithm; although it's a lot more probable that I finish it if the first think works, because, honestly, I'm not too excited to do the second thing. I think the first think will probably work.
4: Probably I didn't do all the objects I could do in the second step. There are many ways to do them, and most of them are easy to code. Also, I probably got bored after doing some of them and jumped to the third step.
What do you think about this? Any suggestions would be appreciated.