Absolutely Relative (was Re[2]: an idea)
Bob Schrum
Bob.Schrum at harpercollins.com
Fri Nov 15 17:45:49 CET 1996
> > > CList wrote:
> > > What happens when you turn a knob? Nothing? I guess that's OK, but I
> > > think it should be fancier - like a Juno.
> >
> > Not sure how a Juno worked, but I always liked the PolySix method,
> > where each knob acts as a fine adjustment to the programmed setting
> > until the knob is turned to the upper or lower end, at which time the
> > knob would become a coarse adjustment thru the whole range. It was
> > nice to get a patch "pretty close," save it, line up all the knobs at
> > 12-O'clock, recall the program, then use the knobs to fine tweak the
> > program until it was just right.
> >
> That's an excellent idea. Would it be as simple as just scaling the knob's
> value until an end stop is reached, then using the normal value?
Sure. Each pot parameter would consist of three objects in workspace memory.
One is the current parameter value, another would be the last known position
of the pot. The third would be a flag that is set upon recalling a program,
that indicates that parameter's pot should be treated as a fine adjust.
Each time the uP scans the value of the pot, it would be compared against
the last known position. If different and the fine-adjust flag is on,
take the difference divided by 2 or 4 (simple bit shift,) offset the
parameter value by that amount and store the new pot position as the
new last-known position. If the pot value reaches (or comes very close
to) full left or right rotation, reset the flag and treat pot changes
as absolute.
The tricky part is what should happen if a program is recalled and a pot
is already sitting at full-left or full-right? My instincts would be
that two more flag values would be needed that would record either fact
at the time the program is recalled. This way, if the pot was full-left
when the program was recalled, only full-right rotation would put the
control into absolute mode.
A valuable feature would be to be able to put the entire synth into
absolute mode--all parameters would jump to the current position of
the controls. A reverse function could be useful to put all the pots
into relative mode--basically the same as saving and recalling the
program, but could be easily done if the same routine was called
by the program-recall function.
This whole scheme may also be necessary to eliminate jitter, by
using a higher-resolution ADC than is needed for the actual range of
parameters. Upon each scan of the pots, any difference between
the current and previous scan values would result in no parameter
change if they fell below a certain tolerance.
More information about the Synth-diy
mailing list