The CEM3340 VCO chip is one of the legendary chips designed by Doug Curtis that played an important role in the analog polysynths of the 1980s. By integrating a complete analog VCO on a chip, it made more compact and cost-effective synth designs possible.
Together with the classic analog polysynths themselves, the Curtis chips have long been out of production. In 2018 however, thanks to the new boom in analog synthesis, the 3340 VCO chip is once again available, from no less than three sources. Curtis' own company OnChip Systems re-issued the CEM3340 Rev. G, and cloned/compatible devices are available from CoolAudio (v3340) and from the Latvian company Alfa (AS3340).
The new availability of these chips triggered my interest in building a VCO around these chips. I chose to use the AS3340, which is the cheapest of the three options. The 3340 VCO is known for good tracking and temperature stability. It has the exponential converter and temperature compensation built in, which makes it very easy to build a decent VCO. For the module, I wanted to stick with that idea: an easy to build VCO with good stability and basic features. After a few revisions, the result looks like this:
- Pulse, Saw, Triangle and Sine outputs
- Big frequency control + fine-tune control
- PWM control, serves as attenuator for PWM input or as pulse width control when no PWM is connected
- Exponential (V/Oct) and linear FM inputs
- Switchable hard and soft sync
- 9mm pots, Thonkiconn jacks and all throughhole components on a single PCB
- 8hp Eurorack format
About the design
Since it is a triangle core oscillator, it is a great starting point for glitch-free sine waves. I added the same JFET-based triangle-to-sine converter that I use in my other VCOs.
The 3340 chip has some unusual implementations of "hard" and "soft" synchronization. They give slightly different results, and the results also depend on the amplitude of the sync signal and whether it has positive, negative or both positive and negative transients. To keep the module simple, I decided to expose the sync inputs (switchable between hard and soft) directly via only an AC coupling capacitor. The user can experiment with different transients by feeding a saw, inverted saw or square/pulse wave to the sync input. The amplitude can also be tuned if desired with an external attenuator.
The module has exponential and linear FM inputs, that can also best be used with external attenuators. For Pulse Width Modulation an attenuator is integrated into the module. If no PWM signal is plugged in, the PWM control simply sets the pulse width manually.
I offer the PCB for this module for sale. The build documentation below contains everything you need to know to complete a successful module. Please read it through carefully before starting, and especially check the notes in the Bill of Materials when ordering parts.
- All documentation can be found on github.
Here is a short demo of the basic functions of the VCO. There is some clipping or other issue in the audio track, so it sounds grittier than in reality:
Molten Music Technology has made a much nicer demo of the VCO 3340:
He also has a complete build video of this module, based on the kit sold by Infinite Machinery.
Hey Kassu, a few questions/notes before I get started on my builds:ReplyDelete
Pots: Is there any particular reason you used 10k instead of 100k for the coarse frequency knob (RV3)? Looks like a voltage divider to me. Am I safe replacing with 100k?
Trimpots: It seems to me that RV6 and RV7 are just voltage dividers, so I should be able to use 100k instead of 10k for those, correct? Can the same be said for either RV1 or RV2?
Sine shaper: I have used the same sine shaper topology in the past using a 2N5457 JFET. I used 100 ohm resistors on the source and drain rather than 1k. Mouser is out of MMBTJ201, so I intend to use some 2N5457s for my builds. I will report back here with the results in case future builders also want to do this.
Power regulation: Any reason for choosing LP2950 over the 78L05? Is it just what you had on hand, or does it have advantages over the 78L05?
Let me try to answer your questions:
Pots: I used B10k for RV3 such that it is not loaded down by the 47k summing resistor. A B100k pot will work fine, but the response will be nonlinear (a bit like a log pot).
Trimpots: RV1 and RV2 should be 10k. They are fed with a current from the 3340, so the value must match to get the right voltage out. RV7 can indeed be 100k or any other reasonable value, I used 10k simply because it is on the BOM already anyway. For RV6 I recommend keeping 10k, since it has to drive the fairly heavy load of the sine shaper. With a higher value, the performance of the sine shaper will suffer a bit.
Sine shaper: for the same reason, I would say 100 Ohm is a bit low, but of course you can just try if you have them around. As alternative to J201 I recommend MMBF4117, which is available on Mouser and works well with 4.7k resistors (see last page of the documentation).
Power regulation: LP2950 has a reasonable specified temperature coefficient, but 78L05 will also work fine!
First off thank you for this Kassu, amazing documentation. It sounds quite nice.Delete
I just built this on perfboard so I figured I would share some info.
For the sine shaper, I used 2n5458 jfet with 100 ohm resistors since it was what I had, seems to work well. I'm not sure how to measure the distortion but it looked ok on my scope. Seems like the 2N5457 might work but cant confirm.
For the power regulators I had L7805 + L7905 worked well.
Thanks for sharing!Delete
Hi Kassu, thanks for sharing your work. What a beautifully designed and documented project. Thank you, JohnReplyDelete
Hey Kassu, great work! Love the sound of the vco.ReplyDelete
Are you still selling the PCB?
I want to build a vco myself, and that looks/sounds beautiful!
Yes, I am still selling the PCB. Just send me an email or message through the contact form so I can reach you back!Delete
The output buffers kinda look like comparators.ReplyDelete
Is that in fact what they are?
The output buffers are opamps used as non-inverting amplifiers. The different resistor values are chosen for each waveform to adjust the amplitude to 10Vpp and to offset the wave such that is centers around 0V.Delete
Is that why you have 12VA and 240K r to offset the voltage??Delete
Thank you for this PCB - received mine in a few days. Nice compact design, well documented and straightforward to build.ReplyDelete
On the edges of the pulse wave and the sharp edge of the saw I get pretty strong ringing up to 3V amplitude on top of the 10Vpp. This can be cured with 4.7 pF capacitors across pins 1-2 and 6-7 of U1.
Anyone else see this?
Yes, I also see some ringing on the sharp transitions but decided that it is not critical. Adding the capacitors as you suggest is a good addition though. 4.7 pF is actually a quite small value there, putting the bandwidth at over 300 kHz, but if it is enough to stop the ringing that's great! I'll see if there is space for some capacitor footprints in a future revision.Delete
I was also wondering if it is worth applying some clear coat/varnish to the birch panel for added protection - or is that already part of the process?ReplyDelete
I use the panels as such, but adding a clear coat will give extra protection. I would probably use an acrylyc based product.Delete
Thank you for the extra info!Delete
Hey, does anyone have an idea what could be wrong with my OSCs, i've made several of them and all of them have a strange vibrato as if some strange FM was going on with fixed frequency??? With this feature, though, I can totally reproduce the intro of the Cure's Forest: https://www.youtube.com/watch?v=zJQRfhYEMqkReplyDelete
CV seems to be ok when I check it with oscilloscope...
Hi! I haven't heard of this issue before. Are all three of them modulated with the same frequency? In that case it could well be some kind of electrical interference related to the power supply, other modules or other electronics nearby. Could you check one of the VCOs separately on a different power supply?Delete
The issue is present event without modulation: if I sweep the tune knob, I get faint wobbles in the background as if I modulated pitch with some hearing range frequencies. I'll have to get some other PSU to test the gear with. I don't have any issues with my uZeus, however there is some noise present in other modules... Maybe I just need a proper power brick.Delete
This comment has been removed by the author.Delete
I tried today on a "standardized" system. Same results with all 4 oscs. I must have messed up something with BoM, because there's no way I could recreate the same defect by soldering on all 4 oscs.
Here's the recording, where FM gremlins can be clearly heard: http://www.ljudmila.org/grejpfrut/primvla/osc_fm.mp3
I just sweep the coarse tune (all 4 waveforms) and output to mixer and recorder.
I'm total electronics noob and I can't find the culprit, maybe some of you guys can give me a hint who the odd one could be? I can post my BoM if needed...
I'm having the same problem here :(Delete
Yep , exactly same problem here, horrible aliasing type noises. I think it may be AS3340, every youtube demo I have seen with AS3340 sounds dirty. Have to order some CEM3340's and test with them.Delete
Once you have tested with the CEM3340, could you let me know if the problem is fixed? With my AS3340 VCOs I definitely don't have these kind of aliasing sounds, but perhaps some of them are problematic and others are not.Delete
If the problem is not solved with the CEM3340 I would also be happy to have a look at your VCO, to see if I can track down the source of the problem. I can't test this issue otherwise since I don't know a way to reproduce it.
Thanks to Mikko I now had the chance to inspect this issue, and it turns out it was a stability with the +5V voltage regulator U4 (Onsemi LP2950ACZ-5.0). The solution is to add a 1uF electrolytic capacitor across pin 1 (+) and pin 2 (-) of U4.Delete
Alternatively, using a plain old LM78L05 for U4 should also fix any oscillations, since that part is inherently more stable.
I can hear the FM-like sounds. Here is a spectrogram plot of part of the file, made with Audacity, where you can see the modulations clearly:ReplyDelete
The white line is the fundamental of the VCO, the purple "cross hatched" pattern is all kinds of intermodulation products.
How are you listening to the VCOs? Some kind of aliasing would create similar problems, if it is going through a digital thing that doesn't filter out the high harmonics (the analog VCO has very high harmonics). Or perhaps one of the VCOs is modulating the others, what happens if you change the other VCOs while listening to one?
I have also tried all 4 of them separately, with just PSU in a case. Through mixer, directly to PA, directly to headphones, recorded to zoom,... Always the same phenomenon. My other oscillators have clean sweep. I also can't get near the decent sine wave, it's always some sort of crooked triangle. I must have done something wrong with BoM, I can't think of anything else that would repeat so perfectly four times (it's not the PSU). But I have no idea what could possibly be the source. I was too eager and built all 4 of them at once before testing the first one. They have character, though :) and with plucks and chord stabs, the feature won't be so noticeable as it was with pitch sweep. Pads on the other hand shall wobble a bit.Delete
Hey, I would really like to build this, and im gonna purchase the PCB. I want to obtain the parts myself though. My question is does it really matter whether the capacitors are C0G/NP0, or can i just use these? https://www.taydaelectronics.com/test-group-2.htmlReplyDelete
Also, is it possible for you to make a page where the links are to the components I am struggling to find some of themDelete
Hi! The capacitor C1 determines the frequency of the VCO, and should really be C0G or NP0. The others are not so critical.Delete
I can't keep an up-to-date list of component links for everything, since the sellers are always changing what parts they have available, but I will work on a list for some of the less common ones in the future.
I begin with a synth. I made the two VCO with your PCBs but a bit customized (coarse tuning replace with Octaves 0...+5). Thanks for the documentation and the quality of the PCBs, it's really perfect!
They work fine but I have a problem with the sync : I try the sync between VCO1 and VCO2 with the pulse output of the VCO1 and there is a positive pulse in the output signal (tri) of the other on the edge of the pulse of VCO1.
Do you know what's going on?
Is it possible to post a file (image of the scope screen)to show the problem?
You can send me more details via kassutronics at gmail.com.Delete
To play with the sync, you can try different waveforms as sync source, and using an attenuator before the sync input also can give different variants of sync sounds.
Hello! I couldnt find any 10pF for the C14, C15. Can I switch those to something else without problem?ReplyDelete
Hi! These capacitors are not critical, they just avoid a bit of overshoot on the square and saw outputs. If you have anything in the range of 2 pF to 22 pF you can put those. Otherwise you can also omit C14 and C15 completely, the overshoot doesn't have any audible effect.Delete
I want to thank you for posting your work.
I'm trying to work my way though the 3340 specs and how you've implemented your design so I have a couple questions.
1. Based on the 3340 specs, changing C1 from 1nF to 1uF would yield an accurate frequency range between 10uHz (~100s period) up to about 10Hz?
2. Brushing up on my limited electronics knowledge ... The maximum voltage on the freqCV is +/-6V permitting the usual +/-5V CV signals. Am I correct the the freqCV is current based (max 40mA)? I'm trying to work through the math from the specs to determine frequency from the CV voltage / current.
This comment has been removed by the author.Delete
I spent some more time looking over your Yusynth VCO core article and I think I figured out my source of confusion about question 2 above. I was forgetting about the opamp on the cv inputs. Changing the gain on that opamp would allow a larger (or smaller) cv voltage range (up to +/- rails). Your 3340 design does not have the external opamp and so is limited to the 3340 specs (+/- 6v, 40mA).Delete
1. Yes, the frequency range would change by a factor 1000. However, for LFO frequencies like that you probably don't need exactly 1V/Oct, so I would go for a bit smaller capacitor (say, 100nF or less), so you can have 1V/Oct tracking in the lower audible range. You can still get way lower frequencies by feeding negative CV (or changing the resistor values in the CV knob circuit).
2. Don't confuse the absolute maximum ratings with useful operating conditions. In normal operation, the CV input pin will always be at 0V, since the 3340 basically has an opamp built in there (functioning similar to the Yusynth input circuit). Indeed the current into that pin determines the frequency. The current range of +/-40mA is again absoute maximum rating, in practice the current will be a few 100 uA at most.
The original CEM3340 datasheet (you have to find the complete version) has a detailed description of the frequency control circuit with example calculation. The section "Course tuning range" under "Potential modifications" in my module documentation has also some formulas to calculate the range.
That's a good point about keeping the V/OCT tracking towards the lower audio range. Thank you again for the advice and especially for posting your designs and descriptions. Half the fun of getting started in modular synths for me has been learning how they work and you have been a tremendous help.Delete
I've got some more reading to do but when you mention the CV input pin will always be at 0V ... that's a result of the virtual ground node going into the opamp (A1) in the 3340?Delete
Started calibrating my first 3340 last night and I couldn't get Y to equal any less than four times X (usually when I am at 100hz and go up an octave I get about about +400hz and no matter how much I trim I can't get it much below that. I'll try one of the others I built tonight and report back.ReplyDelete
Double check the values of R1, R2, R5 and RV1, and make sure you have turned RV2 all the way such that it's middle pin is at 0V. Good luck!Delete
Due to an error in my breadboard sequencer the VCO has seem a much higher voltage on the 1v/oct than usual.ReplyDelete
Any guidance on what to check first for defects? The AS3340 chip, opamps?
This comment has been removed by the author.ReplyDelete
This comment has been removed by the author.ReplyDelete
Can I replace J201 to J112 (sine)?ReplyDelete
Hi! J112 won't work, the JFET needs to have fairly low VGS_off for this circuit to work. There is more information and suggested JFET types in the end of the build document :)Delete
If I leave out j201 while i wait for one to arrive in the mail can the rest of the circuit function normally?Delete
Hi Kassu - I have bread boarded this and it works great! The only issue I am having is with the sine wave shaping. I was initially using J111 JFETS and they kind of worked, but I ended up getting some MMBF4117 which I attempted to solder to a piece of perfboard with wires to use on my breadboard. Not entirely sure how to test that they're working, but they did produce a similar looking wave as the J111s. Anyway, the issue I am having is that the sine waveform is only sinusoidal on the top half, while the bottom half are sharp points. It seems like this has something to do with the diodes perhaps? I'm not sure... I can't figure it out. Any idea how to fix this?ReplyDelete
Hi! I haven't seen this kind of problem before. Is there some offset on the triangle wave, or is it nicely centered around 0 volt?Delete
Indeed it could be a problem with one of the diodes, one of the resistors connected to the JFET, or the JFET connection itself.
I'm honestly not sure - It looks like it is completely positive, but I am using a JYETech oscilloscope and the y-axis does not have voltage on it. When I unplug the scope however, there is a flat line that appears to be in the same place as where the points at the bottom of the waveform end. I will look into the oscilloscope further.Delete
I tried adding negative voltage to the triangle waveform coming into RV6, but that did not provide any offsetDelete
Ok, I see now that the trigger position has a voltage readout, which is showing the waveform to be completely in the positive voltage regionDelete
So I've added a summing opamp to sum the triagle waveform and an offset voltage, and I can get a (fairly) nice looking sine wave out, so that's nice. I'm still unsure why I need this though, since your's didnt...Delete
R6 is supposed to shift the triangle such that it is centered around 0V, perhaps it has a bad connection?Delete
It's also worth to check if the other waveforms are centered around 0. If not, maybe the 240k resistors you used are the wrong value for example.
Yeah - none of them look like they're centered around 0V, but I am using 240K. I can recheck them thoughDelete
Solved it! I was taking the triangle straight from the 3340 instead of from the output of the opamp. Thanks for your help!!ReplyDelete
Could a 78L05 be used in place of LP2950?ReplyDelete
Hi! Yes, 78L05 will be fine. I think the pinout is the same, but please double check this yourself before soldering it in.Delete
I have problem with sine output - it's triangle or square (it's depend from pot settings). Weird...
Hi, is that the behavior when you change the "sine shape" trim pot? It might be that your JFET is not correct. Which JFET do you use, and where did you get it?Delete
Hi, I check connections and I solved part - now I have sinus on top half and tri/square on down half. My JFET is J112.Delete
I think J112 will not work properly for this application, it has a low on resistance (Rds_on). I recommend J201/MMBFJ201 or MMBF4117 with modified resistor values. This is described in the very end of the PDF documentation. There is also more info there about the JFET specs in case you want to try a different one.Delete
Do c12 and c9 need to be electrolytic? I only have 50v 1uf electrolytics that are too tall and my tayda pots showed up horizontal pcb mount instead of vertical 🤦♂️ so i cant screw my panel onto the pots just the jacks. I have 1uf ceramics though will that work?ReplyDelete
Ceramic 1uF capacitors will probably work, but there is a possibility that either regulator is unstable due to the low ESR of ceramics. Especially U4 is a bit sensitive to the capacitance charateristics. If you use ceramics, prefer a stable dielectric like X7R, and avoid Y5V or Z5U. It's also good to check the +5V and -5V rails with an oscilloscope to ensure they are stable.Delete
An alternative is to use the electrolytics you have and mount them on the backside of the PCB.
Maybe you can help me.ReplyDelete
I try to make a VCO with 3340 ship. I can read on your post the FM can be log or exp.
But on the CEM3340's datasheet and your schémas I see just FM linear.
Do you know How can do to make FM log and FM exp with this input?
Hi! The V/Oct input is exponential FM.Delete
I (finally!!!) finished my first VCO and using an oscilloscope I get nice waves in each of the outputs. I also managed to calibrate the sine wave, but my problem is that the coarse frequency AND the fine tune adjustments do not show any change in frequency which is stuck at about 72kHz (which is extremely high). I tried my CV keyboard input to both linear and exp V/Oct inputs but absolutely no change in frequency. I checked my oscilloscope by connecting a Werkstatt-01 and the scope works fine. I am a (75 yr old) newbie in building my own synth stuff so pardon my ignorance.
Ignore my comment. Just found out my power supply has failed.
Will check again once I have a properly working PSU
Was wondering if you had any tips on measuring the RDS(on) of jfets? I've been looking at THT substitutes for the j201 and often it's not listed in the data sheet - do you have a method for measuring the RDS?
I haven't tried, but it should be doable. First of all, the J201 datasheet only shows RDS(on) in a graph, not in the table of specifications, so perhaps some other JFETs also have a corresponding graph.Delete
For the J201 the graph has the specs for rDS measurement written in the graph: VDS = 100mv, VGS = 0. So you could recreated this situation by connectinge Gate and Source together, applying 100mV to the Drain, and measure the current from IDS drain to source (for example with a multimeter in series between the 100mV supply and Drain).
One final note is that the write rDS, with small r, which may refer to the "small-signal" resistance. This means you would not measure RDS = VDS / IDS, but rather rDS = d(VDS) / d(IDS), where d() stands for derivative or small difference. This can be replicated, but at the small VDS of 100mV the numbers should be pretty similar anyway.
Hope this helps, and please report if you get some useful results with this method!
That's great, thanks so much! I'll try that out and let you know if I get any interseting results for other jfets using this.Delete