[sdiy] Continously Variable Symmetry Triangle
ASSI
Stromeko at compuserve.de
Mon Jul 7 23:51:37 CEST 2003
Hello *,
I've dug out an almost 20 year old notebook of mine and found that I've
been chewing on variable duty cycle / symmetry circuits that long ago.
It seems I was on the right track, but at the time I did have neither
the math skills nor the parts to solve it. Now I've got these, but lack
the time to implement... well anyway, I've found Don Tillmans
article(*) and his brilliant idea that saves the multiplier that would
otherwise be needed to keep the amplitude constant (I'm still trying to
find some other ways to get there with and without using a multiplier).
However, the symmetry modulation of that circuit is far from linear
with the CV (x is the bipolar modulation variable with a range of
[-1,1]).
(*) http://www.till.com/articles/VariableSaw/index.html
The sum of both currents (or gains) in Don's circuit is
(1) 4 cosh^2 x/2
To make the modulation linear with the CV the sum however needs to be
(2) 4 / (1-x^2)
however. The nonlinearity alone is probably tolerable, however the
modulation gets "slow" when getting away from the triangle wave, which
is musically undesirable IMHO. To linearize the response of (1) we need
to substitute z(x) so that
(3) 4 cosh^2 z(x)/2 = 4 / (1-x^2)
which solves to
(4) z(x) = 2 arcosh 1/sqrt(1-x^2)
This function can be massaged a bit further and still looks quite
complicated, but it can be approximated surprisingly well by a simple
exponential function, which we know is easily produced with bipolar
transistors. Throw this into GNUplot:
set logscale y
plot [-1:1] [0.1:10] 1
f(x)=4/(1-x**2)
p(x)=4*cosh(x/2)**2
e(x,y)=f(x)/p(y)
replot e(x,x)
replot e(x,exp(abs(1.6*x))-1)
replot e(x,0.15*(exp(abs(3*x))-1))
replot e(x,0.24*(exp(abs(3*x))-1))
replot e(x,0.35*(exp(abs(3*x))-1))
Anything above one means the modulation is more "slow" than linear,
below one it is "faster". If you play around with this some more you'll
find that as you put more gain into the argument of the exponential,
the initial part of the modulation follows the original "slow"
modulation curve before bending back to become faster for some part of
the range. The attenuation is becoming extremely sensitive as the gain
for the argument is scaled up. At around a gain of three the response
curve can be varied from slow to fast with an easily attainable range
of attenuation and surprisingly good linearity to at least +-90%
symmetry. Better fits can be obtained by using more exponentials, but
tuning for linear response would become very difficult.
To make a circuit out of that one needs to undo the abs(x), which can
be done in various ways. I didn't analyze any of them so far, but some
of you might want to have a go at it anyway. Of course I have a little
writeup with all the derivations in the making as well, but not much
time right now to finish it properly - so I thought I should let the
cat out a bit early, so to speak.
Achim.
-- +<[ Q+ & Matrix-12 & WAVE#46 & microQkb Omega sonic heaven ]>+ --
DIY Stuff:
http://homepages.compuserve.de/Stromeko#DIY
More information about the Synth-diy
mailing list