OK, I’m starting to understand that having a general CLOCK input would cause some problems in K-ARP functionality that either need to be solved or ignored.
I have a similar issue in my delay/loop module Sapphire Echo. It does not have an internal clock; it receives an external timing signal through a clock input port.
When the clock pulses are arriving at a regular rate, there is no problem. But if there is an abrupt change in the pulse interval, all of my virtual tape loops have to adjust their speed to match the new rate. They can’t do this immediately (I simulate them as actual wheels with angular momentum), which gives some temporary distortion as they slew to the correct new speed.
And of course, Echo doesn’t even know that the rate has changed until the next pulse arrives at an unexpected time.
The temporary pitch distortion is unpleasant, so what I did was to provide an option to toggle the input port between a CLOCK mode and a RATE mode. The CLOCK mode preserves the older time-between-pulses behavior for compatibility with older patches. But if you click on the word CLOCK, it toggles to RATE, which interprets the port voltage as a steady V/OCT signal, where 0 V represents 1 Hz. If you want the tape loop to be 4 seconds long, that is 1/4 Hz, so the RATE input to achieve that would be a steady −2 V.
In RATE mode, I still have tape slewing problems, but it is much less annoying. The instant the voltage changes, even a little bit, Echo knows immediately and can start slewing the speed immediately. It does not have to wait until the next pulse to find out that the rate has already changed. This approach might fit better for K-ARP?
Thinking more about it, my idea of a Bernoulli or Euclidean gate input may be too fanciful for what K-ARP actually does; it was just a random idea I had, not something I would struggle to implement if I were in your shoes.
So I would like to revise my request! Would you consider
- A CLOCK and/or RATE port.
- I think I still prefer CLOCK to RATE, because it fits better with how most patches operate. So if you can only pick one, I think CLOCK would be better.
- In either/both, if the resulting BPM changes, it would be acceptable for it to have to wait for 2 or 3 consecutive loop cycles that are consistent before changing the timing behavior.
- Don’t worry about supporting exotic Bernoulli/Euclidean signals. Correct behavior is only guaranteed while the effective rate is steady. If you change the rate, we all agree it’s OK for K-ARP to act “wonky” for a brief time before it settles down again.
In summary, the benefit is that users can control K-ARP’s speed externally, and sync it with everything else in the patch that needs syncing. It would support changes of rate from a “configuration” standpoint rather than a “performance” standpoint, if that makes sense.
What do you think? Great conversation!