Sallen-Key filter pair

ATMOSYNTH built-in module

A resonant high-pass and then a resonant low-pass, built as the Korg MS-20's are: two filters of two poles each, one after the other, each with its own cutoff and its own resonance. With the high-pass at the bottom, where it starts, it is a low-pass of twelve decibels an octave; brought up under the low-pass's cutoff, the two are a band-pass as wide as the gap between them; and either can be made to sing. Below one Resonance emphasises what is at the cutoff, at one the filter rings on for as long as it is left, and above one it holds a tone of its own with nothing played into it at all. Turning it up takes nothing away from the bass, as it does on the ladder, so the peak stands out over a full low end. What holds a singing filter at a level is a pair of diodes clipping its feedback, so the tone it sings has an edge on it, and a loud sound played into a resonance turned high is clipped at the peak while the rest of it comes through — the MS-20's scream. Drive is how hard the sound is pushed into the filter: at one a sound at full scale passes nearly clean, and above it it thickens and compresses. It is kept out of the feedback, so driving the filter does not move the point at which it starts to sing. What its curves leave off centre on a sawtooth or a narrow pulse is taken off below any note, so what comes out sits on centre. Cutoff and Cutoff depth work as they do on the ladder, in cents and negative to invert, eight octaves either way, and the high-pass's cutoff has a depth and an input of its own; Key tracking moves both cutoffs with the note played, which needs the note routed here. Resonance is an input as well, for each filter, and its depth how far a signal there moves it. However far it is pushed, it stays inside the knob's own range. The low-pass's knobs are the ladder's, without Slope, and it plays at about the ladder's level, so a patch moves between the two by changing the module. This module carries code: nothing in the vocabulary can be fed back into itself a sample at a time, which is the whole of what a filter like this is.

Four notes played on Keys, passing through it on their way out.

What it is made of

Ports: note input ‘Note’, audio input ‘In’, audio input ‘Cutoff’, audio input ‘Resonance’, audio input ‘High-pass cutoff’, audio input ‘High-pass resonance’, audio output ‘Out’.

  • ‘in’: audio input · port in · into ‘gen’
  • ‘gen’: Worklet (your own code) · processor name atmosynth-ms20 · inputs 1 · outputs 1 · runs its author’s code · into ‘trim’ · frequency turned by ‘Cutoff (Hz)’ · resonance turned by ‘Resonance (sings above one)’ · drive turned by ‘Drive’ · hpFrequency turned by ‘High-pass cutoff (Hz)’ · hpResonance turned by ‘High-pass resonance (sings above one)’
  • ‘cutoffin’: audio input · port cutoff · into ‘cutoffdepth’
  • ‘cutoffdepth’: Gain · modulates the detune of ‘gen’ · level turned by ‘Cutoff depth (cents)’
  • ‘note’: note input · port midi · into ‘trackdepth’
  • ‘trackdepth’: Gain · modulates the frequency of ‘gen’ · modulates the hpFrequency of ‘gen’ · level turned by ‘Key tracking’
  • ‘trim’: Gain · into ‘out’ · level turned by ‘Level’
  • ‘out’: audio output · port out
  • ‘resonancein’: audio input · port resonance · into ‘resonancedepth’
  • ‘resonancedepth’: Gain · modulates the resonance of ‘gen’ · level turned by ‘Resonance depth’
  • ‘hpcutoffin’: audio input · port hpCutoff · into ‘hpcutoffdepth’
  • ‘hpcutoffdepth’: Gain · modulates the hpDetune of ‘gen’ · level turned by ‘High-pass cutoff depth (cents)’
  • ‘hpresonancein’: audio input · port hpResonance · into ‘hpresonancedepth’
  • ‘hpresonancedepth’: Gain · modulates the hpResonance of ‘gen’ · level turned by ‘High-pass resonance depth’
  • ‘Cutoff (Hz)’: knob, 20 to 18000
  • ‘Resonance (sings above one)’: knob, 0 to 1.2
  • ‘Drive’: knob, 0.1 to 10
  • ‘Cutoff depth (cents)’: knob, -9600 to 9600
  • ‘Key tracking’: knob, 0 to 2
  • ‘Level’: knob, 0 to 2
  • ‘Resonance depth’: knob, -1.2 to 1.2
  • ‘High-pass cutoff (Hz)’: knob, 20 to 18000
  • ‘High-pass resonance (sings above one)’: knob, 0 to 1.2
  • ‘High-pass cutoff depth (cents)’: knob, -9600 to 9600
  • ‘High-pass resonance depth’: knob, -1.2 to 1.2

No published patch uses this module yet

When somebody publishes a patch built on it, that patch will be listed here.

Browse Explore