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.