Hi all,
I believe I have created something interesting, though there is a slight chance I’m an idiot and I’ve either recreated an existing module, or it will never work for a reason I haven’t realised yet.
Let me share my thought process:
- I got inspired by the step generator in the MFOS wave freaker. It converts a continuous/smooth waveform into stair step using a ladder of comparators. A sort of analog bit crusher, if you will. I think it’s an interesting way of adding harmonic content to a signal. However, by design, the number of steps is fixed (by the number of comparators).
- I set out the create a circuit which would give my continuous voltage control over the resolution of the step, ranging between the original smooth waveform, to a full square wave.
- One way to achieve this is by a sample-and-hold on a fast clock rate (faster than the signal). However, this fixes the frequency of the steps, and therefore makes the timbre dependent on the ratio between the signal frequency and the clock frequency.
- Instead, I thought the create a sample-and-hold that triggers whenever | in - out | > Vstep. I.e. whenever the output would differ from the input by more than a set step height, the S&H would trigger. When the signal changes more rapidly, the S&H triggers more rapidly. Problem fixed?
- There is one more pit fall, Whenever Vstep is large (approaching the amplitude of the signal), the peaks of the input might get cut off, leading to loss of amplitude. In the worst case, Vstep>Vpp,in the S&H might not trigger at all, cutting the output. Also, imaging feeding a folded sine wave in such a module. Large steps might take out the folds, removing harmonics instead of adding them.
- To circumvent this, I created a peak detector which triggers whenever the time-derivative of the input changes sign. By adding this trigger through an OR gate, the input amplitude and any folds are preserved.
I’ve created a simulation of my ideas in Falstad: https://tinyurl.com/2ae4gx7l
Here’s an example where I took a sine and progressively increased Vstep:
Before I proceed to convert this into a practical circuit… thoughts? Am I onto something? Does this already exist? Am I missing some obvious problem?