[sdiy] Saw DCO
john mahoney
jmahoney at gate.net
Wed Oct 6 18:37:12 CEST 2004
Fredrik,
Damn you for stealing an idea I had that wasn't really my idea to begin with! ;-) Heh-heh...
I'm all for the square-to-sawtooth conversion idea and have discussed it off-list with a few folks. Well, guess what? I found the same concept in Hal Chamberlin's "Musical Applications of Microprocessors" (MAM) book, starting on page 598 of the 2nd edition. As this book is still available, I don't want to post schematics of the 2 relevant circuits. But I'll talk about them...
Chamberlin's circuits are different from yours, and he suggests the use of a multiplying DAC (MDAC) in the feedback path of an op amp. The MDAC is controlled by "the [10] most significant frequency control bits."
Maybe you'd get better results by using a conventional op amp instead of a 3080, although it would require an additional DAC.
Now, you lost me -- which isn't too hard to do -- with your hard sync talk. The sawtooth's frequency is normally determined by the square wave, so it's not clear how you would turn this around to take a sync signal from the sawtooth. I see how it would work electrically, but I can't figure out what the resulting frequency (pitch) would be when used in this way. "What's the frequency, Kenneth?"
--
john
----- Original Message -----
From: Fredrik Carlqvist
To: synth-diy at dropmix.xs4all.nl
Sent: Wednesday, October 06, 2004 4:34 AM
Subject: [sdiy] Saw DCO
Hi all!
I have had great luck implementing a saw DCO and I thought I should tell you about it. Only one problem remains. The story is this: I like DCOs. No tempcos, no octave drift, no trimming. I had a perfectly good square/pulse DCO but I found it lacked a nice edge. I needed a saw output. Since the DCO had the timing right, I thought I should implement it using a simple ramp generator that the DCO would reset. You can find a schematic here: http://www.minod.com/saw_generator.gif. I also like simple circuits. It has a trim to adjust the amplitude.
The hard thing then is to apply a proper control voltage so that the ramp gets the same amplitude regardless of the DCO frequency. I already had a 16-bit DAC hooked up to the MCU, I just added another channel to it. I measured a couple of slopes and had some luck in finding an interpolation polynome that was cheap to compute (about 150 cycles or 15us on my MCU). It worked well above my expectations. The amplitude is within 2% from 20Hz to 5kHz (which is as high as the DCO goes) at room temperature.
Now, there is only one problem: Temperature drift. The ramp slope changes noticeably when I warm up the CA3080 with my finger tip. Observe that this only affects the amplitude, not the frequency! So I would like to put in some kind of compensation. Since the MCU running the DCO already has a lot of 10-bit A/D channels, I could put a forward biased base-emitter diode and measure the voltage drop. As it drifts, I could change a factor in my interpolation and compensate. What do you all think? It's not critical, so there is no need for a precision circuit.
One nice added feature is that the MCU has a built in comparator. I use this to trigger an extra reset pulse when the saw slope reaches 3.6 volts. So, if I increase the saw slope, the ramp is reset both when reaching 3.6V and by the DCO. This way, I get 'hard sync' waveforms with only one DCO! Observe also that there is no qualitative difference between the saw output of this DCO and a proper VCO. Especially since I have added the bass jitter I measured up during the summer.
Fredrik C
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://synth-diy.org/pipermail/synth-diy/attachments/20041006/5b2f69cc/attachment.htm>
More information about the Synth-diy
mailing list