[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