VCO vs. DCO: a non-debate
Much discussion can be found online of the differences between what are simply often labelled VCOs or DCOs (Voltage/Digitally Controlled Oscillators) but as with many things, the truth is less simple. Often the argument boils down to things like phase and stability. I do not want here to get into any kind of debate or pointless pontification about whether one oscillator is better than another, or to try to delineate boundaries between oscillator types in such a black-and-white way.
The reason, in this instance at least, is partly that the Juno 6 oscillators contain features that straddle what some may see as stricly analogue and strictly digitally-controlled. I offer below an explanation, as best I can give it, of the functioning of the Juno 6 oscillators.
The job of key assignment and voice allocation is something I am not going to cover here. The Juno 6 has a CPU that scans the keyboard and generates data, and this process is beyond the scope of my analysis. I pick up the process at the point at which note data is output from the CPU.
How does the Juno’s oscillator work?
Many (if not most) analogue synthesizer VCOs employ a ramp generator core; that is, a voltage representing pitch is fed (via a convertor that scales the control signal correctly) to a circuit that charges a capacitor, the charge across it generating a ramp. When the ramp reaches a pre-defined level, a comparator in the circuit quickly triggers the discharge of the capacitor, at which point the ramp starts its cycle again. The result is what is often called a sawtooth waveform. In the analogue domain, the stability of this process is subject to factors like temperature fluctuations. Digital control helps combat instability.
Though the Juno 6’s oscillator core is based on this analogue capacitor-charging approach, the ramp reset pulse relies not on an analogue comparator but a digital counter. Effectively, the CPU is programmed with the relative frequencies of each note, and provides a counter (one for each voice) with a value representing how long it should wait before resetting the ramp for any given pitch. The CPU also sends note data (via a DAC) as an analogue voltage to the ramp generator control input. Perhaps counterintuitively, this is not to determine its pitch – after all, pitch is frequency, and the frequency is determined by the resetting of the ramp – instead, it is to maintain an even ramp waveform across all frequencies.
Imagine a low frequency. The clock waits longer to reset the ramp. If the voltage fed to the ramp generator were constant for all frequencies, it would ramp at the same rate no matter which note was played. At low frequencies the ramp would reach its limit and stay there before being reset, and at high frequencies, the counter would reset much sooner, cutting the ramp off before it had achieved optimum level. In this scenario, the low pitches would be severely distorted, and the high pitches would be extremely quiet. Thus, in accordance with the frequency data provided by the CPU, an analogue voltage is generated which will charge the capacitor in the analogue oscillator core at a rate optimised for that pitch, while the resetting process (and therefore the oscillator frequency) is controlled digitally. The result is more stable than a purely analogue circuit.
The matter is slightly more involved, however. Firstly, the counters that provide the reset pulse have to know how fast to count. They are clocked not by the CPU, but by an analogue voltage-controlled clock, which is governed in turn by a sum of the pitch bend, fine tune, and LFO voltages as collected on the bender board. This ensures there is no stepping in the pitch during modulation – as the master clock is in the analogue domain, it is thereby continuously variable. The sum of analogue modulation voltages is also mixed with the CPU-generated ramp feed voltage, so that there is no distortion of the ramp during modulation.
To summarise, the basic process is as follows: note data is sent as a binary number from the CPU to a high-speed counter. An analogue voltage is also generated by the CPU via a DAC, and fed to an analogue ramp generator. When the counter completes its cycle, it resets the ramp circuit capacitor, and charging begins again. Thus, an analogue ramp – the sawtooth wave – is frequency-controlled by a digital device.
It may help to study the schematic for the oscillator core and its logic control. Below is the appropriate page of the service manual. The complete manual contains further technical information.
The counters, DAC, exponential converter, and ramp generator are highlighted in red.
PDF version: Juno 6 main board
The Rogue in its original form includes keyboard CV and Gate inputs and outputs. It’s a slightly odd arrangement of TRS (stereo) jacks – one for the CV, with the input on one terminal and the output on another, plus signal ground, while the Gate connector has an even more awkward arrangement of short-to-ground on one terminal and positive trigger on another, either of which can act as input or output. It’s not great. But it does work, providing you have the right cables.
Rather than split these into separate jacks, which would be a handy mod, I just use custom made cables for my interconnects between CV devices. However, the Rogue lacks a CV input for the filter, which I thought might make a useful addition. It’s a simple enough job.
I decided to use a 3.5mm minijack for the sake of convenience. Pick a spot on the rear panel and drill a suitable hole:
I had a switched 3.5mm mono socket to hand, so used that:
Solder a ground wire from the appropriate jack terminal to the Rogue’s jack PCB. Its large solder plane is suitable and easy to work with:
The filter CV input requires a 45k3 resistor to give the same scaling as the keyboard. As presented here, there is no onboard scaling, so if you want to run the input as anything other than 100% follow, use an external amplifier/attentuator. It would also be possible to build such a circuit into the Rogue, but I chose not to for simplicity.
The other end of that blue wire goes to the filter CV node on the main PCB. Rather than outline it on the schematic, I’ll just show you where that is on the board. This is the point where various filter CV inputs are summed. It’s an easy job to solder a wire at the top of this area:
Here’s a wider shot. Note the longer black wire is a previous bodge and not related to these mods and repairs:
I used a Dymo labeller to add the finishing touch to the back panel:
Hey presto! A filter CV input scaled at the same degree as the keyboard. I use a Kenton MIDI-CV interface, which has an auxiliary output for filter CVs, amongst other things, so this little mod should come in quite handy.
The Rogue’s original power supply is not ideal. It uses an external transformer in a box with one cable going to the mains, and another cable plugging into a 3.5mm headphone-style minijack on the synth. The minijack delivers a nominal 24V AC, which is then rectified into +12 and -12V DC internally. The power switch on the synth simply connects/disconnects the AC input at the jack.
When I received my Rogue, the transformer was damaged. Rather than buy a replacement, I decided to install a power supply inside the body of the Rogue. There is plenty of room to do this safely.
NB: I take no responsibility for anyone’s actions regarding mains electricity. If you are not confident working with it, don’t. Hand the job to someone qualified.
First job was to desolder the power inlet jack, and solder two wires to the place where the jack was on the main PCB. Unfortunately, the photo below is the best I have at hand. Note the two red wires supplying low-voltage AC:
These two wires go to a connector that allows one to plug or unplug from the transformer for ease of maintenance. There are several kinds of connector that would work; I chose the type found in computer power supplies, as it’s what I had in the spares box:
The other part of this connector goes to the low-voltage AC output of a transformer. The service notes state the Rogue requires 24V AC at 200mA. I leave selection of a suitable transformer up to you. Note that the Rogue’s rectification is provided by a 78M12 and a 79M12. A 12V AC, 12VA unit should suffice – the Rogue is rated at 6W. Again, I am not taking responsibility for the safety of others here, only providing an outline of my own process.
The transformer is bolted to the base plate of the Rogue. An earth lead is connected to one foot of the transformer:
From the transformer’s mains-level connections, wiring goes to a newly-added mains inlet. I chose the clip-in type with an internal switch and fuse. I cut a rectangular hole in the rear of the Rogue, set low down so as not to interfere with the graphics, which also meant trimming a little of the base plate’s rear lip.
Here is an overview of the result, with tape to secure the looser wires:
Here is the result from the outside:
My Rogue also came with a plug to stop up the hole left by removing the power jack:
I tend to use the mains switch on the rear, and leave the panel switch set to ON. It would be a simple job to remove and bypass this, but I consider it unnecessary.
MAINS ELECTRICITY CAN KILL OR SEVERELY INJUR. PLEASE NOTE THAT SAFETY MUST BE PARAMOUNT. IF YOU ARE NOT CONFIDENT WORKING WITH MAINS ELECTRICITY, GET SOMEONE QUALIFIED TO DO THE WORK FOR YOU.
Between the top panel and the main PCB, the Rogue employs a sheet that fits around the controls to prevent dust from clogging the sliders and switches. For some reason, the material has a tendency to decay, and after 20 years, it’s likely that it has turned to crumbly black goo. This goo is horrible stuff, and will stick to anything. The only remedy is to scrape it away.
My own Rogue arrived after a clean, so I have no photos of this goo. But below is a picture of the switches collecting dust after using the Rogue with no dust protector for a while. Clearly it would be a good idea to not only remove the sticky residue from a decayed dust-shield, but to replace it so as to avoid having to clean all these contacts.
The best material I have found for the job is neoprene sheeting. It can be found at craft stores, or online, and comes in sheets around 2mm thick, which is ideal for this purpose. I use black sheets around 200 x 300mm in size, though it doesn’t matter much what size the sheets are because they will be cut into much smaller pieces for application.
If we look at the Rogue’s control panel, we can see a cluster of sliders, two separate sliders, and several switches spread across the surface. It would be possible but awkward to cut one sheet to fit all these holes at once, so I chose to use a simpler method: apply individual pieces to the switches, and use larger pieces for the sliders. The switches being relatively broad, I chose to use snug slip-on pieces over each switch. The sliders only need to poke through a slot, so I chose to attach slit pieces to the panel and have the slider tangs poke through.
Measuring the panel is easy enough:
The neoprene sheet can be marked with pencil, and scored and cut with a craft knife:
Here are some close-ups of the slider protectors:
Checking that it fits:
Fastening the sheets to the panel is also easy. Rather than glue, I use double-sided sticky tape. These strips are about 5mm wide. I buy broader tape and cut the lengths down the middle. Care should be taken applying these taped pieces to the panel as the adhesive sticks quite readily.
The pieces for the switches are more fiddly. I cut small rectangles and used a regular office hole punch to make the holes for the switch to poke through:
They happen to fit nicely. In retrospect, I would have used larger pieces, as these were a little narrow for my liking, but they still do the job.
Once the job is complete, the panel looks much neater from outside, and the likelihood of dust getting in to clog the controls and damage them is much lower:
Opening the Rogue is easy enough. There are five screws to undo on the base and back, and two on the front. It doesn’t matter what order you work in, as long as care is taken while moving the Rogue when it is only partially screwed together, so as to avoid spraining or cracking the screw points. Four screws are located at the corners of the base plate, as outlined in red on the photo below. One screw is located at the bottom of the rear panel, also outlined in red on the photo. Two screws are located on the front, one at each end of the keyboard. The second photo shows one of these partially undone.
Turn the Rogue upright and lift the lid. The third photo shows my previously-modified Rogue open like this; note the wiring at the left that connects the keyboard to the upper part. This is present in an unmodified Rogue. Be careful not to strain this.
To remove the main PCB from the top part, firstly remove all the knobs from the rotary controls and sliders. They should just pull off with little difficulty. The main PCB is attached to the top section by mean of three screws at the front, and a clip at the rear, which is itself attached to the body via three more screws. It is a simple matter to unscrew these in whichever order you feel works best. The clip simply slides off the PCB. The photos below highlight the locations of these screws from inside and out. Note that in the photos I have also removed the jack PCB. This is attached to the rear panel by the nuts around the jack sockets. Simply unscrew them and the PCB pulls away.
The final photo shows the Rogue open with the main PCB and jack PCB removed from the panel.
Problem: Yamaha CS not triggering from an external Gate
Solution: small converter circuit
I had a Yamaha CS5 for some time, a neat little monophonic synth with one oscillator, one envelope, switchable HP/BP/LP filter, a simple LFO, white noise, and a single VCA. It has Control Voltage and Trigger input jacks round the back for interfacing with other devices.
The CS series uses a Hz/V (Hertz per Volt) CV, and the better modern MIDI-CV interfaces can handle this with no problem. The Trigger levels are comparatively awkward though, with ‘off’ being nominally +3 to +15V, and ‘on’ being nominally 0 to -10V. I say ‘nominally’, because the outputs of these CS synths are stated as +3V for off, -7V for on.
Why is this awkward? Well, there are two other common systems – Positive Gate (aka V-Trig), and Short to Ground (aka S-Trig), which I shall not discuss here – and whereas the other systems have been employed by several manufacturers, Yamaha was, and is, on its own with theirs. Though many CV interfaces are stated as being compatible with Yamaha CS synths, I have found this not to be reliably the case.
The problem comes when a Short to Ground signal will not trigger a Yamaha Gate. For whatever reason, some units just don’t provide a good enough trigger output to correctly pull down the inputs of some Yamaha CS triggers. I suspect a number of things, but won’t speculate here as I found an easy and practical solution.
I owned both a CS5 and CS15, which use very similar, but not identical, trigger input circuits. My Kenton Pro-2 MIDI-CV interface would trigger the 15, but not the 5.
The Pro-2 is an older model, and has been long superceded by better units, but at the time I wanted to get the Kenton and the CS5 working correctly. My solution was to build a small buffer board and install it in the Kenton, adding a separate Trigger Out jack on the Kenton specifically designed for Yamaha’s system.
It works very simply. The Kenton provides a +15 Positive Gate by default. Its own subsequent conversion to S-Trig being insufficient, I added to the V-Trig output a single op-amp with a few resistors to provide both offset and scaling of the signal, transforming it into the ‘correct’ +3/-7V, and routed the new Trigger output to its own ‘CS-Trig’ jack socket. The schematic can be found below in both JPEG and PDF formats.
The circuit can be built onto a small piece of stripboard; I used a TL072 as it’s what I had to hand, but almost any op-amp will do. Mine was powered from the dual +15/-15 supply rails in the Kenton, but you could equally well install it within your CS synth if desired – just pay attention to where in the circuit you install it. Perhaps add a second jack for this input if you wish to leave the original in place (for example, if you wish to run your badly-triggering CS from another CS). Another option would be to install a switch to select the type of Gate input being used. That’s up to you; I present only the basic circuit that converts one gate to another.
NB: actual output values are 3.74V for ‘off’ and -6.45V for ‘on’, but they are within tolerance and much closer to Yamaha spec than the regular S-Trig.
PDF version: CS Trig schematic
Here are a couple of photographs of the extra board in situ in the Kenton Pro-2. Note the angled PCB at the bottom left is Kenton’s own optional Hz/V CV board (from the factory the Pro-2 only provided V/Oct CV). My extra circuit is mounted on the small piece of stripboard at top left. It takes power from the Kenton’s 15V rails, and takes its trigger input from the Kenton’s V-Trig +15V Gate, and it outputs a near-Yamaha-spec +3/-7V off/on gate signal to a dedicated jack socket which I added myself. The unused half of the dual op-amp is not connected to anything other than 0V and itself, as indicated on the schematic. If you use a single or even quad op-amp in this circuit, re-arranging the pin-out is up to you.
The Korg Lambdas I have encountered have each exhibited problems:
Fault: A very thin, almost silent, Chorus preset; all other sounds were fine.
Solution: A loose capacitor in the filter bank for that preset, which was a simple solder job.
Fault: A loss of Percussion presets and a thinning of the Ensemble presets in Normal Octave mode; in Up Octave mode everything was fine.
Solution: A faulty CMOS switch (IC1 on KLM-184, a 4066) which failed to pass the divided-by-two clock to the first TOG, thereby effectively muting the first oscillator in that mode.
One case proved more problematic, however, and I have documented the process for reference.
Two main jobs were carried out on this machine:
The main PCB in the base of the Lambda is home to the TOGs, divider/keyer circuits, and associated per-key envelope generators. The lines of diodes/resistors/caps that form the envelopes can be seen quite clearly stretching along the board, and the nine divider/keyer ICs can be seen poking up, mounted vertically on daughter-boards. Each of these smaller boards holds a single divider/keyer IC and some zero-Ohm jumpers.
In this example, two of these daughter-boards had been damaged – someone had gouged away the tracks on the PCBs and bridged the gaps with wire, but solder was everywhere and the PCBs were in less than ideal condition. Rather than simply tidy up the existing mess, I chose to replace one of those boards with a fresh PCB. The manufacture was carried out by Jim Harris, who kindly documented the process in the video below.
The results are very satisfactory. I always install replacement ICs in sockets for ease of future repair. Turned-pin sockets are preferable as I find they assist in seating the IC firmly, but here a flat-pin type is used as it was the only one to hand.
When I initially tested this particular Lambda, it was exhibiting thinner sounds than expected. It became quickly clear that one of the oscillators was not sounding. The beat-frequency indicator LED B was locked in one state, revealing the culprit to be the third oscillator (Miii, as per the schematics).
There are multiple possible causes for a dead oscillator in the Lambda: faulty clock (including its output buffer logic), faulty octave switching, faulty wiring and dry/cracked solder joints/tracks, faulty TOG, badly seated ICs, corroded sockets, dirty switches, or even failed capacitors pulling down the power rails. There are probably more, but these are some options that occurred to me during testing.
In fact, everything seemed OK except the TOG itself, so I ordered a replacement vintage part and installed it. Despite initial success (all three oscillators worked, hurrah!) the new-old TOG failed after a few minutes. A pattern emerged of it working for the first few minutes after switch-on from cold, but then failing – and the machine had to cool down again for the TOG to function once more. It occurred to me there could be another faulty component bringing this TOG down, but isolation of the TOG from the other parts and testing it again showed the TOG itself to be at fault.
These ICs have been obsolete for many years, and are expensive to replace, if they are to be found at all. Stocking up with a batch of S50241s, of unknown provenance and with unknown remaining lifespans, is not a viable option.
How not to build a Top Octave Generator
I initially resolved to build a replacement using CMOS logic to fulfill the same function as the TOG – effectively it is a logic device, taking a clock signal and dividing it by fixed amounts to give outputs such that the pulse trains on them represent the frequencies of an octave scale.
Although the frequencies outlined on the S50240 datasheet are specified to give a certain pitch for a certain frequency clock, the Lambda’s keyboard begins at F, not C. To minimise the circuitry used, the TOGs are clocked so the outputs are pitched to match the octaves on the keyboard; thus, the nominal C output becomes an actual F, etc. This requires a higher speed clock than the recommended 2.00024 MHz, somewhere closer to 2.5 MHz to raise the overall pitch by a few tones.
The need to divide by 3-digit numbers in the low hundreds, some of which have no common factors, suggested the 4040 CMOS counter. My initial sketch is presented here for reference only, and in no way represents a functional circuit:
The clock, buffered by a 40106, pushes the 4040 along on each positive edge. The 4040 is a 12-stage (divide-by-4096) ripple counter, which means it has enough stages to divide by several hundred, but suffers the disadvantage of long propagation delays – each stage only flip-flops after the previous one, so there are several consecutive toggles to go through before a stable and desired output is obtained. The principle of using a clock divider is that when the correct number of clock pulses has been received (as derived by AND-ing together the correct combination of output bits), the counter is reset and an output pulse sent. This triggers a flip-flop to give a 50% duty-cycle output at the correct frequency. In theory, the result is a pulse train with a frequency of clock/n where n is the divide-by for a given pitch.
Experiments were sadly not successful. To illustrate one example, the note A requires division of the clock by 358. The total propagation delay using the 4040 to get through enough cascaded toggles is 65+(30*7) = 275ns. As the clock period is approximately 200ns, it can be easily seen that this is too long. In practice, I found this particular example gave a note around E – the incoming clock pushes the 4040 along before that count’s toggles have settled on the correct combination, erroneously triggering the next division faster than the desired division can be completed; a partial set of toggles is carried out and spills over to the next count – the resulting output is therefore at a higher frequency than desired.
Although there are ways around this, pragmatism demanded a tighter solution.
How to replace an obsolete Top Octave Generator the easy way
Time constraints eventually led to the purchase of a custom-built TOG replacement from FlatKeys, which is a small SMD circuit housed in a compact enclosure, and connected to the original IC position by a ribbon cable. It came configured as a 50240, which is identical to the 50241 except for the output pulse width – not an issue here as the Lambda further divides the TOG outputs at the divider/keyers. The enclosure fits nicely down the side of the main PCB, and the ribbon plugs into the TOG’s socket. It works perfectly, and there is no obvious difference between the original and replacement tones. It responds to pitch bend and modulation as expected. Though it would have been nice to make an entirely DIY circuit myself, simplicity proved the greater benefit.