I'm trying to use a linear CV to control the resonance, but without the exponential converter of the original circuit.
I've simulated the Jove circuit and got this response:
My linear CV has this response
Linear response, indicating the max/min input CVs needed to get same i_abc range as the Jove one.
To get the same control curve, I need to map the linear response in my own code.
But what shape should it have?
Here is a graph showing what input voltages will give the same I_abc as the Jove version:
As we can see, it is the same curve as the I_abc curve for the jove, but dropping instead of rising as our CV is inverted.
I tried with a logarithmic curve but it doesn't quite have the correct shape. Instead, an exponential curve but mirrored around 0 would do the trick, I'll see if I can add that to my generator.
NB: R_abc is 10k instead of the 18k found in the JOVE circuit.
Resonance
I think the resonance looks quite good
Here are some quick measurements of the resonance voltages using the JOVE resonance circuit. This seems to give approxmiately unity gain for HP/LP and self resonance (could perhaps be a bit better).
Output of trimmer 1: -2.83V
Output of trimmer 2: -10.83V
Reso CV: 0V
Output CV mixer: 2.9V
Base voltage: -52mV
Reso CV: 5V
Output CV mixer: 7.94V
Base voltage: -10mV
Cutoff
The cutoff range seems too limited, but with this, a 50Hz wave has an amplitude of approx 130mVpp. At max, the HP filter lets a 1.5kHz wave through with 180mVpp. An 8k wave has approx 5Vpp amplitude.
Cutoff trimmer 1: -8.4V
Cutoff CV 0:
Output CV mixer: 998mV
Base voltage: 100mV
Cutoff CV 5:
Output CV mixer: -1.25V
Base voltage: -100mV
Polarities
LP output, Cell 1: inverted
BP output, Cell 1: normal
HP output, Cell 1: inverted
Amplitudes
HLP Max: +/-5.25V
BP Max: +/-3.5V
HP Max: +/-5.25V
High frequency oscillations
The high frequency oscillations seen previously are completely gone (though I have not tested with higher CV), perhaps they were caused by the erroneous 3p filter cap
I'm testing the component based JP6 filter on a breadboard. I have some initial problems getting it to work, but then I realised that resonance is probably turned up way too high.
This made me take a look at how I generate the CV and how it affects the circuit.
This is the current circuit. The reason it is so large is that the resonance works backwards, feedback is needed to stop resonance rather than introduce it, so the CV is inverted from 0-5V to 0- -5V, then moved up 5V to get the correct response:
Measuring CV vs I_abc/V_abc/V_collector. NB: For +/-15v supply
CV (V)
I_abc (uA)
V_abc (V)
V_tran (V)
0
-126.0
-13.38
-12.11
1
-101.7
-13.39
-12.37
2
-77.0
-13.40
-12.6
3
-52.0
-13.42
-12.9
4
-27.5
-13.46
-13.18
5
-2.7
-13.58
-13.55
I have noted in my simulation that the CV must increase rapidly and then slow down, which means that I will have to manipulate the output from the synth matrix. In that case I may just as well just invert it while we're at it, so 5V is no reso and 0V is max. That really simplifies the circuit. Also, just using a 20k resistor at the input seems to work fine though it needs testing. In that case I reduce the number of trimmers needed by two, which is really good.
Measurements again - the results are similar to the previous ones, just reversed
CV (V)
I_abc (uA)
V_abc (V)
V_tran (V)
0
0
-14.3
-14.28
1
-24.8
-13.46
-13.2
2
-49.5
-13.42
-12.9
3
-74.3
-13.40
-12.7
4
-99.0
-13.40
-12.4
5
-123.8
-13.38
-12.14
It is interesting to note that the max current is so low (125-ish uA). It probably means that no change to the R_abc (which is 2 x 10k now) when switching to 12V supplies, though that has to be tested.
To get a feel of how my filter is performing, I took a closer look at the Moog Little Phatty, and how its output looks on the scope.
Waveforms
The LP does not have discrete selectable waveforms. Instead, it has a continously changeable waveform that starts as a triangle wave, goes through saw and sqare and then ends up as a pulse wave.
This is what it looks like when turning:
Here are the four variations that most closely resembles the four mentioned waveforms:
Pulse wave. Notice how it is no longer centered around 0V - instead, the TOP is at 0V.
There are two things to notice:
First of all, the wave is not straight, it curves slightly. The triangle wave is actually on its way to becoming a sine wave, and the saw wave is almost like a half sine with an abrupt but not instant fall to the bottom. These photos are taken at a rather high frequency, but the effect becomes even more pronounced as the frequency drops. This means that the perceived level of the triangle wave is significantly lower than that of the other waveforms, just like with a sine wave. It also probably introduces different overtones than the waveforms from a 'cleaner' waveshaper does, which may greatly affect the character of the synth. Interesting!
Second, the wave is not always centered around 0V. This is something I've wondered a lot about after looking at various service manuals - a lot of them use a capacitor to center the wave, which means that waves with uneven energy levels above and below 0V would end up not being sentered. This is clearly the case with the LP - look at the photo of the pulse wave above, it has its TOP at 0V. This is fine and inaudible as long as the output does not start clipping, and mixing multiple oscillators that are not synced would probably reduce the offset. Still, it's interesting to see that this is actually done in professional instruments. I worked hard on my waveshaper to prevent this, perhaps it's unnecessary.
Resonance and self oscillation amplitude
Here is a video of what happens when I turn on resonance with the cutoff set to max. I then gradually reduce the cutoff to introduce self oscillation:
As you can see, the amplitude is quickly reduced to less than 50%. Then, when adding self oscillation, the self oscillation has an amplitude closer to (but less than) the original signal. It never overpowers the original:
Original wave, no resonance
Full resonance and filter fully open
Cutoff turned down, filter is self oscillating
Resonance pot response
In my last post I explained how I found that the resonance CV for the juno filter definitely not was exponential, but not sure if reverse exponential (using a reverse log pot) or linear was the best. Here is how the LP responds:
All pics are taken with the cutoff slightly higher than middle. Self resonance becomes visible about when the pot pointing to the right. This is independent of cutoff, and is fairly similar to the linear pot in my Juno VCF circuit.
Oscillator mixing
The little phatty has two oscillators. I would expect mixing them to simply sum them up, but it seems the total is less than the sum. I did the summing by running two similar waveforms on both oscillators and synching oscillator 1 and 2. The sum reached it's peak with oscillator 1 at 100% and oscillator 2 at 50%, after this further summing only changed the shape of the output slightly. It seems to me that the synth does some soft clipping or similar, which becomes more apparent when using overload.
Overload
Overload increases the amplitude of the signal. At first it appeared that it only doubled the amplitude:
But when lowering the cutoff and then turning on overload, we see that the wave is heavily distorted:
Switching to a different waveform shows this even more. It seems that the actual amplification is much more than doubled, but that the Little Phatty uses something like a compander/limiter circuit to soft clip the output (or maybe not - it starts stretching long before the edges reach the peak) - see how the middle of the wave is much more amplified than the top/bottom:
After all this simulation it's time to start testing the circuit in real life.
I breadboarded everything, and it works great right off the bat.
CV
As I am not doing computer control at the moment, and I had no log pots around, I decided to go for the emulated log pots from Elliott and others. They work great! I did a log pot for the VCA CV.
Resonance
Resonance works great as well, and the filter has no problem self oscillating.
As for the resonance CV, it became apparent that its CV should NOT be exponential. It should either be linear or we should use a reverse log pot like in the minimoog - which one depends on how much movement you want in the beginning vs end. With a linear CV it takes quite some time before anything audible happens, and it's a bit hard to control the self oscillation once it starts. With the reverse log self oscillation starts a bit early but is easier to control. Fortunately making a simulated reverse log is as easy as a simulated log.
There are a few things to be aware of with the resonance when it self oscillates. The amplitude of the oscillation is related to the signal AFTER our input summer. If we apply a weak signal at the input and try to compensate by increasing the amplification in the output VCA, we will also increase the amplitude of the self oscillation, meaning it quickly overpowers the input signal in volume. Here id an example:
First we use a 100k resistor. We adjust so that our output is half that of the input signal, and by doubling the scale on the oscilloscope we get a overlapping waveform.
Then we add resonance and start self oscillation.
Now we replace the 100k input with a 200k input. To get a similar output amplitude we now have to turn the VCA CV fully right.
Input is attenuated to 50% by doubling input resistor
Unity gain is recovered by turning up VCA CV
But look at what this does to the self oscillation - it is now much higher than the previous one.
Input resistor
I tried hooking the input up to the output from my macbook to process audio. I had to replace the input 100k resistor with a 10k one to get an ok output volume. But processing the input audio was great fun.
Overdrive
I decreased the input resistor and increased the feedback resistor even more to try to overdrive the filter. This did not work very well. I started getting hard clipping and if the input was high enough, something latched up and I had to cycle power.
Later I tried feeding the output back to the input summer instead, using a 20k linear pot as a voltage divider and an inverting opamp (because I have not swapped the inputs on the output OTA, the output is not in phase with the input). This proved so much nicer. I got a controllable overdrive that did a much softer clipping. It did also latch up stuff when the feedback was too high, but a great experiment all in all. I still have to look closely at the signal levels of the original signal to decide a proper range for the overdrive feedback. Oh, and of course the output level gets much higher, this has to be compensated elsewhere. Maybe its possible to tap the signal before the output VCA and do something to decrease the VCA gain CV when the overdrive CV increases. Or this could be done in software.
With a 3.9k input gain feedback resistor I could easily pass a 20V p.p. wave through the filter without distortion. But I wanted to see if I could get a distortion similar to the moog filter, and yes, I could.
Swapping the 3.9k resistor with a 33k makes the filter overdrive close to 10V p.p, quite similar to the Moog.
This is of course pre-filter amplification. I have seen people talking about the minimoog doing feedback of the original signal through the external input jack, and this sounding better, so I'll try that next. I also need to come up with a good way to control overdrive, one that is not so dependent on input amplitude.
Input (green) vs output (blue). 33k input resistor, 50k output pot
Output variations
This being a state variable filter means it can produce a multitude of filter variations at the same time - low pass, band pass, high pass and notch. It is also two filters after one another, which means we can get various falloff. I've played around with this and come up with 10 variations that are more or less usefull:
12dB LP
24dB LP
12dB HP
24dB HP
6dB BP + 12dB LP
6dB BP + 12dB HP
Notch (first SVF)
Notch + LP
Notch + HP
Notch + BP
I am not sure of the usefullness of all these but the cost to add them all is very little. Here is how I indend to wire them, with resistor values giving the following 'plateau' gain.
Constant current inputs
Just like with the Juno and Moog filters, I've swapped the resonance and vca gain CV circuits for my own, linear designs. The VCA gain control is exactly the same as for the Juno (but with slightly different part values), and has a similar deadband. The resonance on the other hand, is different. The resonance circuit works opposite of the one in the Juno, increasing the resonance OTA gain reduces the amount of resonance.
Because of this, increasing CV must decrease the output current. Also, when doing exponential conversion in software later, we must generate a negative exponentially decaying signal instead of an exponentially increasing one, which is too bad as it means that we cannot have a common control system for all filters. I will have to look closer into this.
CV vs I_abc for one resonance OTA, original Jupiter 6 circuit. With a linear response, a similar CV curve must be calulated in software.
Oh, and because of the way I did the linear control, we don't get a deadband.
Musical Applications of Microprocessors
Then I found this on a forum (which I unfortunately forgot to bookmark):
I first read about how SVFs work in Hal Chamberlin's book, Musical Applications of Microprocessors , where there's a lovely diagram of the filter's structure. I later spotted that same diagram in an article about an analogue computer. Apparently an SVF and a physical model of a spring have the same structure! Well, they're both dynamic systems that resonate, so I shouldn't be too suprised if they share the same mathematics.
Incidently I have this in my bookshelf, so I checked it, and it did indeed have a good diagram. But even better - it had an implementation using CA3080, which is almost exactly identical to the one in the Jupiter 6!
It's the first time I have come across that implementation, it even says that the capacitor-to-ground between the OTA and the buffer equals the configuration with the capacitor in the feedback loop of an opamp that I have seen elsewhere. Oh - and the book is from 1980, three years before the JP6 came on the market.
This one has both BP and band reject/notch. Oh, and it is missing the resistor i talked about in a previous post and has no change in gain for frequencies below the resonance frequency.
Matrix 12
I also looked at the Matrix 12 filter. It is NOT a state variable filter, it is a multimode filter, which mixes the output from four poles in various gain/variations to get 15 different responses. This matches well with what MT-223 above says about mixing different gains.