I tried using pwm to slow down the motors but I have not played enough with it.
at first, I wanted it to work and work simply. then, I see a 2nd pass to make things more efficient; and replacing a logical PID algorithm with a true varying analog style PID (really varying the proportional part, at least) would be part of that. it can take a whole developer 'a while' to get that part really right and so I deferred that for another pass (or another developer!)
there's also a limit to how fast that pot can spin. the video shows it moving at its full speed, which isn't very fast at all. I wonder if slowing it down as it gets near its destination is actually worth the extra code complexity? it needs to be evaluated.
another part of the code that I have been deferring is 'grab detection' as I call it
if the motor pot is speeding along (someone unmuted it, say) and the operator grabs it; it would be nice for the system to notice that where it should be, its not. that would mean a person grabbed the knob and that we should immediately stop the motors! that part of the code also still needs to be developed.
if I was going to use a rotary encoder, I would also look into some of the dedicated chips that can watch the encoder and report back 'summaries' to the host cpu. that will save a lot of interrupts and let the host cpu (arduino) do its many other things on its polling loop. having to watch for RE events AND be very fast with it - that's actually hard to do if you are doing many other things, as well. to get a really responsive RE, I'd like to see some front-end chip work done. want to do that for us?