Jul 20, 2019

KS-20 Filter

My interest in the MS-20 style filter was sparked by videos from Look Mum No Computer, who built a DIY low pass version. This filter makes great basslines, with both strong bottom end which is not reduced at high resonance, and gnarly sound due to a nonlinear resonance path. Clearly I needed such a filter in my system, and the result of that is this module which I tackily named the KS-20.



The Korg MS-20 synthesizer had two filters in series, one high-pass and one low-pass. Internally, these filters are nearly identical, differing only in where the signal is fed to the filter. My KS-20 module contains one such filter core (of the later, OTA-based variant), and a front panel knob to smoothly transition between the two modes of the original MS-20 filters. It blends from a two-pole low pass, via a resonant allpass, to a one-pole resonant high-pass. Using two KS-20 modules in series the original MS-20 configuration can be created.


What sets the MS-20 style filter apart from other classic filter designs is a nonlinear resonance path, created by diodes or in this module LEDs. This nonlinearity is needed to avoid clipping when self-oscillating. More interestingly however, the nonlinear resonance makes the sound of the filter strongly depend on the amplitude of the incoming signal. This is where the drive knob comes in, allowing you to drastically change the character of the filter. At low drive settings, the filter is mostly linear and has a clean resonance. When increasing the drive level, the sound starts to "break up", and there is a sweet spot where the incoming sound and the filter resonance are competing with each other. At even higher drive level, the incoming signal starts to take over and pushes the resonance away, even when the resonance is set to self-oscillation.

This module is strongly based on the schematic published by René Schmitz, and all credit should go to him. In particular the choice to replace the string of diodes with an LED in the resonance feedback path was his. I did verify that this makes no notable difference to the sound. My additions were the variable mode control and drive knob.

The KS-20 is an 8hp eurorack module, using only through-hole components and a single PCB. It draws up to 25mA current per rail.



Circuit description

There are two versions of the MS-20 filter. Initially Korg used the Korg35 module, which contains a few transistors cleverly arranged to from the filter core. Later this was replaced with a design based on Operational Transconductance Amplifiers (OTAs), which is what the KS-20 is also using.

There are two nearly identical filter stages, each using a single OTA. The OTA is configured as integrator-with-negative-feedback, which creates the same transfer function as a single RC filter stage, as shown in the following figure.


First, let's consider the case where the signal is applied to LP_IN, and HP_IN is connected directly to GND. The OTA (U1A) creates a variable current, which is proportional to the voltage at LP_IN multiplied with the control current IABC. This OTA current is integrated by C, and the resulting voltage buffered by the opamp. The resistor R1 creates negative feedback, reducing the output current of the OTA as the output voltage approaches the input voltage. If a voltage step would be applied to LP_IN, this creates an exponential curve at OUT, just like it would charging up the capacitor in the equivalent RC circuit on the right. Hence, with HP_IN grounded, the OTA filter section is just like a single-pole RC low pass filter. The difference is, that the effective value of R can be adjusted with the control current IABC, forming the basis for the voltage control of the filter.

Also just like with the equivalent RC circuit, the OTA filter section can be turned into a high-pass filter by exchanging the input and ground terminal. So, connecting the signal to HP_IN and grounding LP_IN creates a high pass section. In fact, the two inputs can be used at the same time. It should be noted that the HP_IN node must be a low impedance point.

The MS-20 filter consists of two of these sections in series as shown below.


In the low-pass filter, HP_IN is once again grounded and there are two low-pass sections in series, forming a two-pole (12dB/oct) low-pass. Resonance is created through positive feedback of the output to the high-pass input of the first section. Hence, in the resonance feedback loop there is a bandpass filter (one high-pass and one low-pass). This configuration avoids the infamous drop in volume associated with the Moog transistor ladder filter, where the resonance feedback loop goes through the full low-pass fitler which creates negative feedback at low frequencies.

For the high-pass version of the MS-20 filter, the LP_IN point is grounded and the signal is fed to HP_IN. Hence, only the second section is used for a single-pole (6dB/oct) high-pass, and the first section is only there for creating resonance.

Build documentation

I offer PCBs and front panels for this module for sale. All documentation required to build this module is available on github.

20 comments:

  1. Hey kassu,
    Quick question, are there any replacements for the transistors (BC557C)? Mouser doesn't stock them.

    Thank you!

    ReplyDelete
    Replies
    1. Hi! Any of BC556 through BC559 should work just fine! Also a 2N3906 can be used, but it has reversed pinout so should be rotated 180 degrees. It's always good to double check the pinout and compare with the B, C, E (Base, Collector, Emitter) markings on the PCB.

      Delete
  2. Hi, do you matched capacitor (C1 and C2) in each stage?

    Thank you!

    ReplyDelete
    Replies
    1. I did not match them, which may slightly affect the frequency response but I suspect it is not a big deal in this filter.

      Delete
  3. Great site full of helpful tips! Thank you for all your hard work and sharing this knowledge!

    ReplyDelete
  4. Hi, i had one question. Why is the NE5532 opamp used instead of the regular TL072? And is the TL072 a possible substitute for the NE5532?

    ReplyDelete
    Replies
    1. Hi! U2 is used as non-inverting buffers, which means the input can see voltages almost up to the supply rails. The TL072 has a property that it's output inverts when the input is driven beyond a certain point. This doesn't damage the TL072 (as long as not too much current can flow into the input), but in this specific case the opamps are in a feedback loop, and the feedback loop locks up when the TL072 inverts.

      So the answer is that the TL072 will work most of the time, but the filter may lock up if driven hard and/or at high resonance. You can get it out of lock by turning down the resonance and drive completely, but in practice this is not very convenient. Hence, I recommend to use an NE5532 or some other opamp that doesn't have this inversion issue (it may be mentioned in the opamp datasheet as "polarity reversing").

      Delete
  5. Hey, any idea why filter is locked up evwen when using a NE5532?
    kind regards. Manuel

    ReplyDelete
    Replies
    1. Hi! Is it working when you lower the drive and resonance?

      Delete
  6. Why you used ne5532 as follower? Could i use jfet
    stage or stage with emitter follower?

    Thank you!

    ReplyDelete
    Replies
    1. Yes, a discrete follower should also work, in fact that is how the original MS-20 filter does it.

      Delete
  7. regarding the potentiometers, are they all linear or some are log ?

    ReplyDelete
  8. I was wondering about the same. In the Eric Schmitz schematic the resonance pot is log...

    ReplyDelete
  9. I use linear pots in this version. R14 modifies the response curve of the resonance pot to make it quasi-logarithmic. If you choose to use a log pot for resonance, leave out R14.

    ReplyDelete
  10. Hi kassu, thanks for your amazing filter design. I am currently trying to build one using your schematics, but ran into a problem. Upon connection, the LEDs start to burn through caused by a very high voltage. When i measure between U4B and R4, I can see a voltage of around 10.5V! Same for U4A, and interestingly also on the outputs of the NE5532 Opamps (sometimes it's -10.5V). Do you have any idea what could cause this?

    ReplyDelete
    Replies
    1. ah well turns out i twisted around +/-12V. i'm surprised the opamps didnt catch fire...

      Delete
  11. Are the pots linear or log for this module?

    ReplyDelete
    Replies
    1. Thanks! I just finished putting together 2 VCO 3340 modules, an ASR, and I'm almost done with the KS-20. Can't wait to hear it!

      Delete