Non CPU autotune (was AW: RE: ASM-1 Poly Controller)

Magnus Danielson magda at it.kth.se
Tue Jul 30 01:49:31 CEST 1996


> 
> >    ...Sounds to me like maybe someone ought to try and figure out poly-
> >  phonic key assignment, autotune, and the like, and work on a program
> 
> I bet someone will kill me for this question, but nevertheless:
> 
> Is there a circuit that does an autotune job *without* a CPU?

At this point I thougth PLL... :)

Ah... being CPU hostile again, Jurgen? :) Well, they can cause a lot of trouble
when not used PROPERLY.

> I wouldn't need tuning for each octave, like some "modern" analogues do,
> but tuning for a single note in the upper middle range would be enough.
> Could not be *that* difficult ?!

Nope... but doing autotune for two points (one or two octaves from eachother)
should not be significantly more difficult either....

> A PLL with a CV quantizer/latch inside the loop should be able to do this
> job.

Now you said it.... :)

> Has anybody built something like this yet?

This is how I would create such a beast:

(Sorry, but I couln't resist... the inspiration just hit me and it is fun to
engineer stuff like this.... yes, it is almost adictive :)

(Warning, this is nontested inspirational stuff... expect faults to lay within)

The first problem we have is to create a stable frequency to compare with,
this I would do by useing a standard 10 MHz crystaloscillator (there exsits
pretty good onces which gives you TTL output and only need +5V).
Then I would dived this frequency down to a comfortable frequency (say 10 kHz)
and would then have a frequency multiplying PLL (sloooowww feedback filter) to
get a 440 KHz frequency.
Now, this frequency we can then divide down to 55, 110, 220, 440, 880, 1760
and 3520 with simple TTL(or CMOS) dividing cursuits.

Some care must be taken in picking up the VCO's output, low jitter very close
to 50% pulsewidth is the goal... this will improve stabillity...

Now, useing a phase comparator with a lowpass filter we would get the CV which
would be the input to the VCO being tuned. This CV should be added to a stable
CV offset in order to get the CV voltage corrensponding to the note which is
used as reference.

Now, this cursuit will keep the VCO tuned... but as soon as we remove the PLL
cursuit we must somehow maintain the correction voltage. This could either be
done with a analogue S/H or by useing A/D and D/A converters...

Doing an analogue S/H migth seem like a good idea initially, but in order to
get a stable voltage without leakage/load drift the capacitor must get a 
leakage
compensation which is well trimmed, the capcitor should be lowleackage 
(polystyren, polypropylene or teflon) and the OP-amp should be of lowleakage
as well (JFET type or so... ). All, in all quite some neat precission design.
This kind of cursuit can also be sensitive to more subtle changes (like air
humidity).

Makeing an A/D D/A solution migth seem like overkill, but I think it may not
need to be... if some carefull considerations are made you migth actually
reduce the necessary voltage range which have to be adjusted, therefore we 
migth
use fewer bits, and there exsits both good and fairly cheap D/A converters that
could do the job.

Now, this all seems like a lot of gear... and when tuneing an 8 VCO synth I 
would need this 8 times.... rigth? No!
You could make this scale better (less money for you) by reuse the reference
oscilltor stuff, the phase comparator and A/D converter, you need to route each
VCO into the phase comparator and the A/D to the correct VCO's D/A.
I'd think it's doable...

Now that we got all this fancy equipment stuffed into our synth, why not let it
do things properly???

Well, we can also let this stuff adjust the scale aswell. In order to do that
we let a second D/A act as a adjustable potentiometer with a narrow range.
First we tune the offset with one tone (say 440 Hz and OV modulate in).
Now we let the modulation voltage obtain a new known value (say 2V) and we now
select the new tone of the reference set (1760 Hz in this case). We now let
the PLL cursuit adjust the scale D/A in order to get into tune...

Maybe something like the dual 12-bit multiplying DAC AD7537 could be 
interesting
to use for this kind of stuff... this device will freeze the digital value by
just playing the rigth game with the pins and will keep it's value stable in
a totally diffrent manor than an analogue S/H.

Recall that even if the price of the A/D and D/A pieces migth seem quite high
you gain that in simpler triming procedures, the actuall total cirsuit is
simpler. You can also save yourself some trimming headaches...

You can also easily save the trimvalues into a nonvolatile memory in order to
have trim-presets... still without involveing an CPU!

As more equipment gets built with lot's of D/A trimmers insider this kind of
stuff have gotten pretty cheap. Also automatic trimming like this can be a 
blessing when done correctly, the above is just a draft that bursted out of my
brain, so I don't really know of any big trapps is still in there...

Stay tuned!

Magnus





More information about the Synth-diy mailing list