This module is based on my “cosine fader” module which builds a sinewave from N linked cosine half-cycles, joined at the cos(0) and cos(pi) ends where the slope reaches zero. I’ve been using it with a knob to set a precise midpoint value (N=2), quarter rotation values (N=3), etc. I was testing the output with a differentiator to verify that the slope went to zero in those places and on a whim thought I’d try listening to it by replacing the knob input with a sinusoid from an oscillator.
The stepping sinewave from the cosine fader module is fed to a differentiator, which produces the first difference of this waveform. The difference output is scaled by the inverse of the input frequency to normalize the output level.
N can be modulated, in the attached demo patch by an expression knob. For this dynamic situation, N must only change where the core sinewave is at zero slope, with the result that N can change as frequently as every half-cycle. Changing N without this step will result in discontinuities that are quite audible in the difference output. The synth tests for those zero slope regions and latches the current value of N, to be used for at least the next half-cycle.
I called it “Teeth” because of the waveform it produced. Here’s a screenshot:
[Output waveform (trace a) , with N values following ADSR contour (trace b). Vertical lines are the output of the “delta N” output (trace c, offscreen)]
Maximum value for N is limited as the MIDI note goes up in frequency to keep all signals within the audio passband.
|Trigger from MIDI keyboard. Velocity sets the N limit.
|Setting multiplies the velocity value
|A440 octave values
|The difference operator, scaled for frequency
|The current N value
|Impulse for each change in N
|[Knob, Button, Spline, and/or Mapper]
|Sets profile to use
Revision | File
01/11/24 | Teeth.audulus4 (17.3 KB)
Revision | File
01/11/24 | Teeth Synth Demo.audulus4 (198.4 KB)