Sunday, March 24, 2019

JP6 filter almost complete

I worked so hard trying to finish the JP6 filter this month. It's a really shitty filter to breadbord, but I finally got it working in all modes.

I thought I had it finished last week, but after trying to replace the output VCA with an opamp to be able to tap output pre-VCA, I can't get a proper single SVF BP output - it's a lot higher than it should. I did break parts of an DG409 in the process, so I'm not sure if that's part of it. I will have to breadboard a proper switch again later.

Anyway, here is how I THINK it should be:



The overdrive does not work very well btw. It overdrives way too much I think.


Missing in this schematic: Overload indicator circuit, like this:



Tuesday, March 12, 2019

JP6 filter breadboarding

The last of the three filters I intend to do (at least initially) for the XM8 is on my breadbord. Well, partially anyway.

I have had so much trouble getting it to work, to the point where I ripped it apart and started over. Even then, I could not get it right. The times I could see a signal it quickly latched up etc.

Last night I finally got parts of it up and running after swapping out some opamps and going over the wirings again. I had among other things connected the I_abc of one of the cells to its own output, and connected a cap to the input instead of the output of another. Sigh. I am getting a bit stressed as my wife is having a baby sometime in May, so I'm pushing on to get the filter finished by then. Guess I'm a bit too tired!

Unfortunately, even if I could get a good signal for parts of the range, when the cutoff CV pot was above halfway I only got a lot of weird stuff.

I am currently using a 4x multiplier for the CV to get a full cutoff range. In my simulations, I got some strange oscillation on the signal at about 5.5V CV, which corresponds approximately to this point - which made me suspect that this was my problem.

And here I did what I had promised myself not to do until I had a working prototype: I looked at the System 80 Jove schematics. Sadly, they were almost identical to mine (no surprise there, as both are based on the Jupiter 6 service manual), but the Jove filter uses J112 JFETs instead of the opamp buffers.

I noticed that it also used 18k resistors on the OTA controls where I use 10k. I tried replacing the resistors in my simulation, and now the oscillation stopped - simply because the Iabc would never get high enough for the oscillation to start.

I did measure the cutoff for some currents in my simulation:

with 10k resistors:

5V: 593mA, 17kHz
5.5V: 1mA, 26kHz
6V: 1.37mA, 33kHz (oscillation)

with 18k resistors:

5V: 17kHz
5.5V: 21kHz
6V: 21kHz

Now, I tried replacing the resistors on the breadboard as well, but it didn't really change anything.

So, next up, I gave up on the TL082s. I only have two TL072s left and I suspect they are broken, so I hooked up a TL074 and ran wires to it. And suddenly the circuit worked! However, I did get the same oscillation, but sooner than expected.

I then replaced the 18k resistors with 10k again. This time the oscillation was gone!

But then, when I put my multimeter across the resistor to measure current, it returned - but only at very high cutoff.

More over, I realised that one of the 18k resistors had in fact been 1.5k. So my guess is that when the resistors are too different, one of the cells amplify more than the others and we get problems like this.

Anyway, I'm happy that I could get the filter working, and even better, that it worked at very high frequencies (>30kHz).

Sunday, March 3, 2019

Moog VCF overload reference voltage

The filter starts overloading right after +/-5V input. The input summer has a gain of -0.15 (15k/100k), so after the summer the voltage is +/-0.75V.

By using a resistor divider consisting of a 10k and a 1.8k resistor between 5V and GND, the center will be at 0.763V.

Moog filter with overload


Not much to say really, added overload feedback w/vca. Specified single/multiturn pots. Almost ready for computer control.

Deadband width calculation

I use the same circuit to control various VCAs. To completely turn these off I have added a deadband at the start, usually 100mV wide (meaning that nothing happens before the CV is > 100mV.

As the input resistor / max output current varies, the resistor from the summing point to -15V needs to be adjusted as well. Here is how to do that:


Once you've picked your R_cv, R_db is found using the formula above. I_abc is the OTA control current, usually connected through a 10k resistor to prevent currents > 2mA which would kill the LM13700.

Digital 12/24dB switching for the moog filter

I built a digitally controllable switching circuit for the moog filter. I doubled up the differential buffer and connected one after the second pole and one after the fourth, giving 12dB and 24dB respectively.

After connecting a Vishay DG403 as a dual SPDT, I realised that the two outputs did not have the same DC offset anymore, so I had to move the balance trimmer to before the switch and duplicate it as well.

Resonance feedback is tapped after the 24dB buffer but before the switch, so resonance is always based on 24dB.

The circuit looks like this:


Overload indicator

As the moog filter overloads nicely by feeding back the output, we need a way to know when the filter starts overloading.

We do know how high the maximum input signal may be, so overloading happens when the input passes this threshold.

The following circuit lights up the led whenever the input is too high. In the analog domain, the brightness of the led corresponds to how much of the signal is too high, as it will rapidly turn on and off.

If we choose to remove the led and connect the output to an MCU instead, a positive (5v) signal means overloading and 0 means not overloading - for a single signal cycle.

Doing this digitally lets us also filter the signal - we may trigger a "overloading" flag whenever the input is high, set a timer to clear the flag, and reset the timer whenever a new high input is received. That way we get a continous overload if the time between a low and a high overload input is short enough.

Some MCUs even have built in comparators, which lets us supply a reference voltage on one pin and the input on the other, meaning we do not need the pullup resistor or LM311.



In the XM8 I intend to have replaceable filters. For our filter, the reference voltage should be generated by the filter circuit using a trimpot or resistor divider, and the signal to measure should be tapped after the input mixer.

By doing it this way we don't need a separate comparator for each filter.