KORG MS20 Filter Emulation

Apr 5, 2007 at 11:05pm

KORG MS20 Filter Emulation

Im trying to emulate this incredible filter from the MS20, it has a HP and LP which Ive read are 12dB/oct and have insane resonance, with the HP you can add bass thats unbelievable, great grizzly stuff. I usually use my korg legacy MS20 emulator to process drums with the filters being modulated by an envelope follower (Aphex did it a ton for his old stuff, It gets this great sound totally unique)

Im curious if anyone has tried this or has any tips. Ive looked through every filter in max and in every library I can find and nothing comes close. If you would like to hear demos download the demo version of korg legacy analogue, or

check out these vids on youtube:

http://www.youtube.com/watch?v=YyH5MJsrrO8

http://www.youtube.com/watch?v=D0rMl6bgL1o

http://www.youtube.com/watch?v=AuykoMNET9s

and heres a pdf on the thing

http://mysite.wanadoo-members.co.uk/tstinchcombe/synth/MS20_study.pdf

and some gear emulators of it:

http://www.doepfer.de/A106.htm

http://www.synthtech.com/motm420.html

http://www.frostwave.com/theresonator/index.html

http://www.richardcraven.plus.com/Korg/Korg%2035/

any ideas on how to make it in max, Im trying but I jsut cant get that harsh resonance of the HP, its almost like it generates a tone when you turn it up really high, but even in the bass range which I usually dont get on any of the max highpasses ive found.

Ideas? Do you think I can do this with biquad? Not sure how to do coefficients really.. any ideas would be appreciated, Ill be experimenting more and ill let people know how it goes.

#31207
Apr 6, 2007 at 5:44am

I read through that PDF and it seems like someone with any sort of iir filter design knowhow could translate it, but I cant. I would love anyones help. Again the link is here:

http://mysite.wanadoo-members.co.uk/tstinchcombe/synth/MS20_study.pdf

Can any of you msp geniouses make this tangible?

Thanks in advance!!!

#101065
Apr 6, 2007 at 6:41am

heres some quotes that ive compiled from some of the sitees I mentioned that might be helpful. I will start delving more deeply into this tomorrow. If anyone has any ideas on how to translate these ideas into max please let me know :D
\\

” The VCF will over-drive/distort in all modes, and the resonance can be cranked into self-oscillation. The LP/HP slopes are -12dB/oct and the NF is -6dB/oct.”

“he VCF will alter it’s resonance as the input amplitude varies. This was a “flaw” in the original design, but is the main reason for the sound!”

“The famous original MS20 included two filters: a 12 dB lowpass and a 6dB high pass filter connected in series both with a very special design”

“The frequency of this low pass filter is f = 1/(2 * Pi * R * C). The resonance is Q = 1/(3 – a). With a = 1 one obtains a filter without resonance, a = 1.268 leads to a Bessel filter, a = 1.586 to a Butterworth filter and a = 2.234 to a Tschebyscheff filter. When a reaches 3 the filter is self oscillating.”

\\
that last bit seems the most important. Any ideas on how to achieve that.. I sort of know what a butterworth and chebyshev are.. but what exactly does it meen when a filter is “self oscillating.. I can tell by the sound that when you turn the res all the way up it becomes a tone in itself, unlike most filters.

At any rate thanks in advance!

NCRIII

#101066
Apr 6, 2007 at 6:58am
#101067
Apr 6, 2007 at 7:16am

streight from the ms20 manual regarding the resonance:

“Peak: This knob determines the amount of amount of emphasis applied to the area right before the low-range cut-off frequency chosen with the knob above. When turned up to around its maximum position, the filter itself begins to oscillate, becoming in effect another sound source. This self-oscillation capability is another big feature found in the MS-20.”

Just need to figure out how to self oscillate a filter… what does it mean!!

#101068
Apr 6, 2007 at 4:37pm

in basic terms, it’s when the resonance of the filter reaches a point where it starts to create a tone. a bit like another oscillator at the cutoff frequency of the filter. this is typically achieved by setting the resonance to maximum.

however some filters stop just short of self-oscillation…

i think you can make biquad~ oscillate if u set the resonance to 1. or 0.99

j

Quote: Axiom-Crux wrote on Fri, 06 April 2007 08:16
—————————————————-
> streight from the ms20 manual regarding the resonance:
>
> “Peak: This knob determines the amount of amount of emphasis applied to the area right before the low-range cut-off frequency chosen with the knob above. When turned up to around its maximum position, the filter itself begins to oscillate, becoming in effect another sound source. This self-oscillation capability is another big feature found in the MS-20.”
>
>
> Just need to figure out how to self oscillate a filter… what does it mean!!
—————————————————-

#101069
Apr 6, 2007 at 5:15pm

I agree max filters don`t sound like that flavour, the filters used in reaktor come closer to your result.
not to post off topic:)

#101070
Apr 6, 2007 at 5:18pm

yes^^ and it creates an endless self induced sine at 1., on a 0. to 1. scale.

#101071
Apr 6, 2007 at 5:42pm

It definately does, but it seems that the “self oscillation” stops before it gets into the low frequencies, which is the best part of the ms20, it can add a really great resonant bass into anything.

Oh wait!! I take that back, I found it by george, I just had to do 2 biquads with the same coeff and reson, and you get a deeper reson, this is a wonderful start!

#P window setfont “Sans Serif” 9.;
#P window linecount 1;
#P hidden newex 202 24 48 196617 loadbang;
#P hidden message 200 44 14 196617 1;
#P newex 92 413 61 196617 clip~ -1. 1.;
#P hidden message 358 97 20 196617 50;
#P hidden message 414 99 14 196617 2;
#P hidden message 462 112 26 196617 100;
#P hidden newex 462 84 48 196617 loadbang;
#P hidden newex 186 328 31 196617 mtof;
#P user hslider 184 294 25 232 128 1 0 0;
#P toggle 64 409 15 0;
#P flonum 174 366 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P newex 91 364 79 196617 biquad~;
#P comment 265 80 288 196617 imitation-analog variants for bandpass and peaknotch;
#P toggle 197 79 15 0;
#P message 212 79 52 196617 analog $1;
#P toggle 197 61 15 0;
#P message 212 61 64 196617 gainmode $1;
#P user umenu 120 61 70 196647 1 64 77 0;
#X add display;
#X add lowpass;
#X add highpass;
#X add bandpass;
#X add bandstop;
#X add peaknotch;
#X add lowshelf;
#X add highshelf;
#X add resonant;
#X add allpass;
#P newex 91 388 39 196617 *~ 0.1;
#P newex 93 305 35 196617 noise~;
#P newex 93 338 79 196617 biquad~;
#P comment 452 130 35 196617 Q or S;
#P flonum 451 144 47 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P newex 87 457 29 196617 dac~;
#P flonum 403 144 47 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P flonum 355 144 47 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P window linecount 3;
#P comment 38 214 140 196617 the horizontal line is always at unit gain (amplitude = 1.0) , or phase = 0. in phase mode;
#P user filtergraph~ 180 168 255 124 3 9 0. 22050. 0.0625 16. 1 1 1 0 0 1 1;
#X frgb 193 193 255;
#X brgb 233 233 255;
#X rgb2 0 0 0;
#X rgb3 130 130 130;
#X rgb4 0 0 0;
#X rgb5 118 121 166;
#X rgb6 210 74 54;
#X rgb7 255 22 22;
#X linmarkers 5512.5 11025. 16537.5;
#X logmarkers 10. 100. 1000. 10000.;
#X nfilters 1;
#X setfilter 0 2 1 1 0 49. 3. 25. 0.0001 22050. 0.0001 16. 0.5 25.;
#X done;
#P comment 355 107 46 196617 cutoff or center freq;
#P window linecount 2;
#P comment 405 118 39 196617 gain (linear);
#P window linecount 1;
#P comment 277 62 350 196617 gain-based variant for lowpass , highpass , bandpass , bandstop and resonant;
#P window linecount 3;
#P comment 192 130 134 196617 you can also enter biquad coefficients in the first five inlets when in display mode;
#P connect 29 0 8 0;
#P connect 22 0 8 0;
#P connect 4 0 20 0;
#P connect 11 0 20 0;
#P connect 20 0 13 0;
#P connect 13 0 29 0;
#P connect 12 0 11 0;
#P connect 4 0 11 1;
#P connect 29 0 8 1;
#P hidden connect 27 0 14 0;
#P connect 21 0 13 1;
#P hidden connect 17 0 4 0;
#P hidden connect 15 0 4 0;
#P connect 14 1 4 0;
#P connect 30 0 16 0;
#P hidden connect 30 0 18 0;
#P hidden connect 31 0 30 0;
#P hidden connect 16 0 15 0;
#P hidden connect 18 0 17 0;
#P hidden connect 23 0 24 0;
#P hidden connect 28 0 6 0;
#P hidden connect 24 0 6 0;
#P connect 6 0 4 5;
#P hidden connect 25 0 28 0;
#P connect 7 0 4 6;
#P hidden connect 27 0 7 0;
#P hidden connect 25 0 27 0;
#P connect 9 0 4 7;
#P hidden connect 26 0 9 0;
#P hidden connect 25 0 26 0;
#P window clipboard copycount 32;

#101072
Apr 6, 2007 at 5:51pm

heres a version with signal rate ctl

#P window setfont “Sans Serif” 9.;
#P window linecount 1;
#P hidden message 54 159 43 196617 $1 100;
#P hidden newex 54 180 32 196617 line~;
#P user number~ 100 158 139 173 9 3 3 1 0. 0. 0 123.470825 250 0. 0 0 0 221 221 221 222 222 222 0 0 0;
#P comment 104 183 54 196617 frequency;
#P comment 226 183 19 196617 Q;
#P user number~ 213 164 252 179 9 3 3 1 0. 0. 0 100. 250 0. 0 0 0 221 221 221 222 222 222 0 0 0;
#P user number~ 163 160 202 175 9 3 3 1 0. 0. 0 2. 250 0. 0 0 0 221 221 221 222 222 222 0 0 0;
#P newex 91 202 104 196617 filtercoeff~ highpass;
#B color 5;
#P comment 168 183 26 196617 gain;
#P hidden newex 266 277 48 196617 loadbang;
#P hidden message 264 297 14 196617 1;
#P newex 47 317 61 196617 clip~ -1. 1.;
#P hidden message 95 77 20 196617 50;
#P hidden message 154 77 14 196617 2;
#P hidden message 206 77 26 196617 100;
#P hidden newex 148 42 48 196617 loadbang;
#P hidden newex 51 139 31 196617 mtof;
#P user hslider 53 107 25 232 128 1 0 0;
#P toggle 19 313 15 0;
#P flonum 88 294 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P newex 46 268 146 196617 biquad~;
#P toggle 261 332 15 0;
#P message 278 332 52 196617 analog $1;
#P toggle 261 314 15 0;
#P message 276 314 64 196617 gainmode $1;
#P newex 46 292 39 196617 *~ 0.1;
#P newex 48 209 35 196617 noise~;
#P newex 48 242 146 196617 biquad~;
#P newex 42 361 29 196617 dac~;
#P connect 17 0 0 0;
#P connect 10 0 0 0;
#P connect 1 0 8 0;
#P connect 8 0 3 0;
#P connect 3 0 17 0;
#P connect 2 0 1 0;
#P hidden connect 11 0 12 0;
#P hidden connect 12 0 28 0;
#P hidden connect 28 0 27 0;
#P connect 17 0 0 1;
#P connect 21 0 8 1;
#P connect 21 0 1 1;
#P connect 9 0 3 1;
#P hidden connect 27 0 21 0;
#P hidden connect 13 0 16 0;
#P hidden connect 27 0 26 0;
#P hidden connect 16 0 26 0;
#P connect 21 1 8 2;
#P connect 21 1 1 2;
#P connect 21 2 8 3;
#P connect 21 2 1 3;
#P hidden connect 22 0 21 1;
#P hidden connect 13 0 15 0;
#P connect 21 3 8 4;
#P connect 21 3 1 4;
#P hidden connect 15 0 22 0;
#P connect 21 4 8 5;
#P connect 21 4 1 5;
#P hidden connect 23 0 21 2;
#P hidden connect 13 0 14 0;
#P hidden connect 14 0 23 0;
#P connect 18 0 5 0;
#P hidden connect 18 0 7 0;
#P hidden connect 19 0 18 0;
#P hidden connect 5 0 4 0;
#P hidden connect 7 0 6 0;
#P window clipboard copycount 29;

#101073
Apr 6, 2007 at 7:29pm

from an MS-20 freak – Very nice patch!

#101074
Apr 6, 2007 at 11:40pm

Thanks :D

Im glad it turned out to be more simple then I would have thought, I never realized just layering 2 of the same filter would make it so much harsher :D

Ill upload the official abstraction version in a bit. I ended up going with 3 of them in series.

NCRIII

#101075
Apr 7, 2007 at 1:52am

agreed. kick ass patch. I heard a rumor that there will be “better” sounding filters in max5. but this patch proves that most of this stuff can be done by combining what we have already

(I could be full of crap here)
One thing I find helpful when “emulating” analog electronics is to really consider the gain structure and how it distorts… When I have signals that go nuts like that, the most realistic thing to do is to normalize it to -1.2 to 1.2 (manually, not like the included patch), and then subtly add some wave shaping (overdrive~)

really get the scope~ out and make sure its distoring in the right places.

that way the next block gets the harmonics

#P toggle 117 351 15 0;
#P window setfont “Sans Serif” 9.;
#P window linecount 1;
#P newex 59 451 35 196617 *~ 1.;
#N vpatcher 30 89 630 489;
#P inlet 329 59 15 0;
#P window setfont “Sans Serif” 9.;
#P window linecount 0;
#P newex 248 43 67 196617 metro 2000;
#P newex 267 66 41 196617 t reset;
#P window linecount 1;
#P newex 124 75 41 196617 *~ 1.2;
#P newex 50 73 58 196617 clip~ -1 1.;
#P newex 50 50 60 196617 normalize~;
#P newex 89 159 62 196617 selector~ 2;
#P newex 128 107 79 196617 overdrive~ 1.4;
#P newex 123 49 60 196617 normalize~;
#P newex 68 139 27 196617 + 1;
#P inlet 93 30 15 0;
#P inlet 68 119 15 0;
#P outlet 89 181 15 0;
#P connect 10 0 7 0;
#P connect 2 0 7 0;
#P connect 7 0 8 0;
#P connect 1 0 3 0;
#P connect 3 0 6 0;
#P connect 6 0 0 0;
#P connect 8 0 6 1;
#P connect 10 0 4 0;
#P connect 2 0 4 0;
#P connect 4 0 9 0;
#P connect 9 0 5 0;
#P connect 5 0 6 2;
#P connect 12 0 11 0;
#P connect 11 0 10 0;
#P pop;
#P newobj 45 387 90 196617 p;
#P toggle 48 361 15 0;
#P hidden message 61 166 43 196617 $1 100;
#P hidden newex 61 187 32 196617 line~;
#P user number~ 107 165 146 180 9 3 3 1 0. 0. 0 50. 250 0. 0 0 0 221 221 221 222 222 222 0 0 0;
#P comment 111 190 54 196617 frequency;
#P comment 233 190 19 196617 Q;
#P user number~ 220 171 259 186 9 3 3 1 0. 0. 0 363. 250 0. 0 0 0 221 221 221 222 222 222 0 0 0;
#P user number~ 170 167 209 182 9 3 3 1 0. 0. 0 22. 250 0. 0 0 0 221 221 221 222 222 222 0 0 0;
#P newex 98 209 104 196617 filtercoeff~ highpass;
#B color 5;
#P comment 175 190 26 196617 gain;
#P hidden message 102 84 20 196617 50;
#P hidden message 161 84 14 196617 2;
#P hidden message 213 84 26 196617 100;
#P hidden newex 155 49 48 196617 loadbang;
#P hidden newex 58 146 31 196617 mtof;
#P user hslider 60 114 25 232 128 1 0 0;
#P toggle 8 409 15 0;
#P newex 53 275 146 196617 biquad~;
#P newex 55 216 35 196617 noise~;
#P newex 55 249 146 196617 biquad~;
#P newex 47 494 29 196617 dac~;
#P comment 142 354 292 196617 turn this on to normalize every 2 seconds (for fair judgement);
#P comment 26 348 48 196617 compare;
#P connect 25 0 23 2;
#P connect 24 0 2 0;
#P connect 24 0 2 1;
#P connect 23 0 24 0;
#P connect 5 0 23 1;
#P connect 22 0 23 0;
#P hidden connect 10 0 16 0;
#P hidden connect 9 0 12 0;
#P hidden connect 9 0 11 0;
#P hidden connect 9 0 10 0;
#P hidden connect 16 0 14 2;
#P connect 14 4 3 5;
#P connect 14 4 5 5;
#P hidden connect 11 0 15 0;
#P connect 14 3 3 4;
#P connect 14 3 5 4;
#P hidden connect 15 0 14 1;
#P connect 14 2 3 3;
#P connect 14 2 5 3;
#P connect 14 1 3 2;
#P connect 14 1 5 2;
#P hidden connect 12 0 19 0;
#P hidden connect 20 0 14 0;
#P hidden connect 20 0 19 0;
#P connect 14 0 3 1;
#P connect 14 0 5 1;
#P hidden connect 21 0 20 0;
#P hidden connect 8 0 21 0;
#P hidden connect 7 0 8 0;
#P connect 4 0 3 0;
#P connect 3 0 5 0;
#P connect 6 0 2 0;
#P window clipboard copycount 26;

#101076
Apr 7, 2007 at 2:58am

is there a way to smooth the normalization? It clicks and has a sort of decay when it normalizes.

Cool though. I never understood what exactly overdrive does, is it more the just clipping?

#101077
Apr 7, 2007 at 5:02am

I’d like to try this patch but Max crashes if the dac is turned on whenever
the slider is moved (both with & without normalization) Anyone else having
problems?

Thanks

On 4/6/07, Nicholas C. Raftis III wrote:
>
>
> is there a way to smooth the normalization? It clicks and has a sort of
> decay when it normalizes.
>
>
> Cool though. I never understood what exactly overdrive does, is it more
> the just clipping?
> –
> -=ili!ili=- http://www.Axiom-Crux.net -=ili!ili=-
>

#101078
Apr 7, 2007 at 5:03am

re previous crashing on Max 4.5.7 or 4.6.2 OSX PPC

On 4/6/07, Dave Leith wrote:
>
> I’d like to try this patch but Max crashes if the dac is turned on
> whenever the slider is moved (both with & without normalization) Anyone else
> having problems?
>
> Thanks
>
> On 4/6/07, Nicholas C. Raftis III wrote:
> >
> >
> > is there a way to smooth the normalization? It clicks and has a sort of
> > decay when it normalizes.
> >
> >
> > Cool though. I never understood what exactly overdrive does, is it
> > more the just clipping?
> > –
> > -=ili!ili=- http://www.Axiom-Crux.net -=ili!ili=-
> >
>
>

#101079
Apr 7, 2007 at 8:01am

>Cool though. I never understood what exactly overdrive does, is it more the just clipping?

its not clipping at all. it makes a sine wave gradually tend towards a square wave, , at higher values. mathematically i’m not sure what it is, but arctan distortion is cheaper, and i use it lots

#P inlet 167 66 15 0;
#P window setfont “Sans Serif” 9.;
#P flonum 171 102 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P window linecount 1;
#P newex 79 208 32 196617 *~ 1;
#P newex 79 156 32 196617 *~ 1;
#P newex 79 180 35 196617 atan~;
#P newex 155 177 92 196617 expr 1./atan($f1);
#P inlet 83 103 15 0;
#P outlet 79 238 15 0;
#P connect 7 0 6 0;
#P connect 6 0 4 1;
#P connect 6 0 2 0;
#P connect 2 0 5 1;
#P connect 5 0 0 0;
#P connect 3 0 5 0;
#P connect 4 0 3 0;
#P connect 1 0 4 0;
#P window clipboard copycount 8;

#101080
Apr 7, 2007 at 2:45pm

I remembered from a long time ago that a label mate of mine, Roman
Belavkin, aka “Solar X”, built an astoundingly good MS-20 emulation
in one of the very first versions of Reaktor. In fact, this is one
of the patches that “made” Reaktor for many people. I sent him an
e-mail to see if he could help, here’s his reply:

“regarding MS-20 filters, the reaktor ensemble is available online I
believe, it was long time ago I did the audio section, and later
versions were mainly the interface updates. I am not sure if the
filters are 12 db (24 total), but somehow a figure of 18db comes into
my mind. He needs to check. However, my design is purely based on the
audio characteristics and a lot of tuning/fixing by ear. Whereas the
legacy claims to have reproduced the circuitry. But the reaktor
version came very close to the real thing. The main feature there is
that there is a feedback to the filter, which is a function of
frequency (less at high freqs, more for bass), and it is distorted
(the feedback signal). Also, I design each filter with two filters
inside, that have some frequency separation between their cutoffs.
This is because on MS-20 the filters cutoff the frequency “deeper”,
so they behave like they cutoff more than 12db (this is why 18 comes
to my mind).”

Hopefully this is helpful info to make your work even better.
Interesting that even in Reaktor, he stacked two different filters
like you have. Maybe the slight frequency separation between cut
offs would make it better too..

Best,
Dan

Dan Nigrin
Defective Records
202 Hack / PC-1600 User / VSTi Host / OMS Convert / Jack OS X / Major
Malfunction
http://www.defectiverecords.com

http://www.jackosx.com

#101081
Apr 7, 2007 at 6:36pm

can we get the reaktor patch?

I have the MS20 legacy, thats how I fell in love with the filter, really thats the only part of this synth that makes it so special, the rest is pretty average, the patch bay is cool, I also bought it cause of the awesome USB controller with patch-bay (I wonder if I can use the patch-bay data in max.. but thats not important now)

The only thing I have left to fix is this damn aliasing, this always happens… FM, tons of stuff, (at least they have band-limited oscs now.

Is there a way to bandlimit this to help when it goes into the high frequencies? Ill also try this technique that roman T. told me in the analogue thread of poly~ up resolution.

Is there a way to do that up and down sampling and signal vector size for parts of a patch or abstractions other then poly?

#101082
Apr 7, 2007 at 6:38pm

dave, try playing with your signal vector size or IO vector sizes, or even overdrive and scheduler in audio inturrupt settings.

#101083
Apr 7, 2007 at 6:50pm

>can we get the reaktor patch?

as I remember it is _somewhere_ on the reaktor patches (ensembles)
page. You have to be a registred user to access those (even if the
patches were made by users)

>USB controller with patch-bay (I wonder if I can use the patch-bay
>data in max.. but thats not important now)

yes you can – the mini jacks send CC numbers so you can “see” those
in max. I started working on it, never finished eb-ven if I promise
myself to do it, some day. Each jack send 2 CC numbers, and I did not
get how exactly it knows where the other end of teh jack is…

but I belive with some time one can find the logic. (???)

best

kasper

Kasper T. Toeplitz
noise, composition, bass, computer

http://www.sleazeArt.com

http://www.myspace.com/sleazeart

#101084
Apr 8, 2007 at 12:41am

At 8:50 PM +0200 4/7/07, Kasper T Toeplitz wrote:
>>can we get the reaktor patch?
>
>
>as I remember it is _somewhere_ on the reaktor patches (ensembles)
>page. You have to be a registred user to access those (even if the
>patches were made by users)

Yeah, I don’t have it, but I’m pretty sure it’s available on the NI site…

Dan

Dan Nigrin
Defective Records
202 Hack / PC-1600 User / VSTi Host / OMS Convert / Jack OS X / Major
Malfunction
http://www.defectiverecords.com

http://www.jackosx.com

#101085
Apr 8, 2007 at 2:13am

in regards to normilization, I dont suggest doing that in your patch, this was to have an equal comparision. Thats VERY important when A/Bing things. in a typical situation you would multiply by hand

#101086
Apr 8, 2007 at 7:07am

feeding back the biquads doesn’t seem to work, as soon as I plug in any sort of fed back signal it blanks, and then when I unplug it turns back on.. wierd. Though I guess a biquad is actually technically a feedback loop already right?

RE: the MS20 USB patch bay
I plugged my headphones into one of the jack plugs on the front to see what would happen (I think it was the “headphone” jack to see if it actually was outputting audio) and it output little clicks. I checked each jack and they were all outputting these little click metronomes.. I would think each one outputs a different click and when they are plugged into each other, they detect each others clicks..?? maybe the click is amplitude = a certain cc# and when its plugged into 2 it outputs the start and destination ccs together? I did notice I could controll the patchbay from my other midi sliders on the novation so its definately cc data.

#101087
Apr 8, 2007 at 8:37am

On 08-avr.-07, at 09:07, Nicholas C. Raftis III wrote:

>
> feeding back the biquads doesn’t seem to work, as soon as I plug in
> any sort of fed back signal it blanks, and then when I unplug it turns
> back on.. wierd.

Try with a [send]/[receive] pair.

p

#101088
Apr 8, 2007 at 8:49am

oh yeah I forgot that trick, works cause its delayed by 1 sample when sent and received.

Sounds like ass though so Ill continue with the 3 filter version, its almost perfected, Ill post when done.

#101089
Apr 8, 2007 at 9:45am

000.MS20HP~

—–requires a limiter or clip~ after it to keep it safe!

#P window setfont “Sans Serif” 9.;
#P window linecount 1;
#P newex 237 224 64 196617 snapshot~ 1;
#P message 237 271 37 196617 $1 20;
#P newex 237 291 40 196617 line 0.;
#P newex 237 249 99 196617 zmap 90 127 0.1 7.;
#P flonum 237 315 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P newex 57 430 32 196617 *~ 1;
#P newex 57 378 32 196617 *~ 1;
#P newex 57 402 35 196617 atan~;
#P newex 102 402 92 196617 expr 1./atan($f1);
#P newex 111 269 40 196617 +~ 10.;
#P newex 94 293 104 196617 filtercoeff~ highpass;
#B color 5;
#P newex 55 316 146 196617 biquad~;
#P flonum 105 346 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P newex 93 224 104 196617 filtercoeff~ highpass;
#B color 5;
#P newex 111 201 40 196617 +~ 10.;
#N comlet out sig;
#P outlet 57 478 15 0;
#N comlet sig in;
#P inlet 53 144 15 0;
#P newex 95 70 46 196617 /~ 127.;
#N comlet reson sig 0. 127.;
#P inlet 187 41 15 0;
#N comlet freq sig 0. 127.;
#P inlet 96 47 15 0;
#P newex 95 111 40 196617 +~ 20.;
#P newex 96 91 50 196617 *~ 1024;
#P newex 187 68 46 196617 /~ 127.;
#P newex 187 109 40 196617 +~ 0.1;
#P newex 187 89 41 196617 *~ 10.;
#P newex 94 144 104 196617 filtercoeff~ highpass;
#B color 5;
#P newex 54 247 146 196617 biquad~;
#P newex 56 346 41 196617 *~ 0.1;
#P newex 53 176 146 196617 biquad~;
#P connect 23 0 13 0;
#P connect 26 0 24 0;
#P connect 27 0 26 0;
#P connect 25 0 27 0;
#P connect 28 0 25 0;
#P connect 10 0 6 0;
#P fasten 10 0 28 0 192 63 242 63;
#P connect 18 4 17 5;
#P connect 15 4 2 5;
#P connect 5 0 15 2;
#P connect 5 0 3 2;
#P connect 5 0 18 2;
#P fasten 3 4 0 5 191 168 193 168;
#P connect 4 0 5 0;
#P connect 6 0 4 0;
#P connect 18 3 17 4;
#P connect 15 3 2 4;
#P fasten 3 3 0 4 168 168 166 168;
#P connect 18 2 17 3;
#P connect 15 2 2 3;
#P fasten 3 2 0 3 145 175 139 175;
#P hidden fasten 14 0 15 0 116 218 98 218;
#P connect 14 0 19 0;
#P connect 8 0 3 0;
#P fasten 8 0 14 0 100 137 116 137;
#P connect 18 1 17 2;
#P connect 15 1 2 2;
#P fasten 3 1 0 2 122 173 112 173;
#P fasten 24 0 22 1 242 373 84 373;
#P fasten 24 0 20 0 242 387 107 387;
#P connect 11 0 7 0;
#P connect 7 0 8 0;
#P connect 9 0 11 0;
#P connect 19 0 18 0;
#P hidden connect 16 0 1 1;
#P connect 18 0 17 1;
#P connect 15 0 2 1;
#P fasten 3 0 0 1 99 174 85 174;
#P connect 20 0 23 1;
#P connect 21 0 23 0;
#P connect 22 0 21 0;
#P connect 1 0 22 0;
#P connect 17 0 1 0;
#P connect 2 0 17 0;
#P connect 0 0 2 0;
#P connect 12 0 0 0;
#P window clipboard copycount 29;

Thanks Yall!

#101090
Apr 8, 2007 at 11:28am

nice filter

sorry i was completely wrong, overdrive~ does clip between -1 to 1. i hadn’t tried the arctan distortion with values outside that range, it gives a very nice response, gradually distorting and compressing the signal toward the range -1 to 1.

#101091
Apr 8, 2007 at 11:30am

>
>RE: the MS20 USB patch bay
>I plugged my headphones into one of the jack plugs on the front to
>see what would happen (I think it was the “headphone” jack to see if
>it actually was outputting audio) and it output little clicks. I
>checked each jack and they were all outputting these little click
>metronomes.. I would think each one outputs a different click and
>when they are plugged into each other, they detect each others
>clicks..?? maybe the click is amplitude = a certain cc# and when
>its plugged into 2 it outputs the start and destination ccs
>together? I did notice I could controll the patchbay from my other
>midi sliders on the novation so its definately cc data.

of course there is no audio running in thgis USB controller !! (so
you can use the “output” jack for feeding back the synth)

all jacks from the patch bay respond send CC’s – 2 of them for each jack

best

kasper

#101092
Jun 11, 2007 at 11:07pm

…I am just sleuthing around and found this. I love the patch. Thanks! I added some stereo random action to it, plus I’m controlling both the random speed (via metro) and the filter behavior with two MIDI expression pedals. It’s really bubbly now. :)

Cheers,

Kris

#P window setfont “Sans Serif” 9.;
#P window linecount 1;
#P message 532 28 14 9109513 2;
#P message 701 45 23 9109513 100;
#P user uslider 622 63 19 52 100 12 20 0;
#P window linecount 2;
#P comment 607 29 83 9109513 Set speed at which pitch is changed;
#P slider 592 28 13 51 0 1;
#P window linecount 1;
#P newex 553 57 28 9109513 * 40;
#P number 553 79 33 9 0 0 0 139 0 0 0 221 221 221 222 222 222 0 0 0;
#P newex 475 68 62 9109513 metro 333;
#P message 608 139 49 9109513 seed 777;
#P window linecount 3;
#P comment 473 97 62 9109513 Click to get a random number;
#P window linecount 1;
#P comment 643 83 83 9109513 Change range;
#P number 557 141 35 9 0 0 0 139 0 0 0 221 221 221 222 222 222 0 0 0;
#P button 476 141 15 0;
#P number 475 182 82 9 0 0 0 139 0 0 0 221 221 221 222 222 222 0 0 0;
#P newex 476 161 91 9109513 random 40;
#B color 5;
#P message 833 26 14 9109513 2;
#P message 1002 46 23 9109513 100;
#P user uslider 923 64 19 52 100 12 20 0;
#P window linecount 2;
#P comment 908 30 83 9109513 Set speed at which pitch is changed;
#P slider 893 29 13 51 0 1;
#P window linecount 1;
#P newex 854 58 28 9109513 * 40;
#P number 854 80 33 9 0 0 0 139 0 0 0 221 221 221 222 222 222 0 0 0;
#P newex 776 69 62 9109513 metro 333;
#P message 903 140 49 9109513 seed 777;
#P window linecount 3;
#P comment 774 98 62 9109513 Click to get a random number;
#P window linecount 1;
#P comment 944 84 83 9109513 Change range;
#P number 858 142 35 9 0 0 0 139 0 0 0 221 221 221 222 222 222 0 0 0;
#P button 777 142 15 0;
#P number 776 183 82 9 0 0 0 139 0 0 0 221 221 221 222 222 222 0 0 0;
#P newex 777 162 91 9109513 random 40;
#B color 5;
#P message 31 642 23 9109513 100;
#P message 809 554 14 9109513 1;
#P message 776 244 14 9109513 1;
#P newex 668 627 61 9109513 clip~ -1. 1.;
#P message 936 300 20 9109513 50;
#P message 991 311 14 9109513 2;
#P message 1039 322 14 9109513 3;
#P newex 762 542 31 9109513 mtof;
#P user hslider 760 508 25 232 128 1 0 0;
#P flonum 750 580 35 9 0 0 0 139 0 0 0 221 221 221 222 222 222 0 0 0;
#P newex 667 578 79 9109513 biquad~;
#P comment 841 280 288 9109513 imitation-analog variants for bandpass and peaknotch;
#P toggle 773 279 15 0;
#P message 788 279 52 9109513 analog $1;
#P toggle 773 261 15 0;
#P message 788 261 64 9109513 gainmode $1;
#P user umenu 696 261 70 9109543 1 64 277 0;
#X add display;
#X add lowpass;
#X add highpass;
#X add bandpass;
#X add bandstop;
#X add peaknotch;
#X add lowshelf;
#X add highshelf;
#X add resonant;
#X add allpass;
#P newex 667 602 39 9109513 *~ 0.1;
#P newex 669 552 79 9109513 biquad~;
#P comment 1028 344 35 9109513 Q or S;
#P flonum 1027 358 47 9 0 0 0 139 0 0 0 221 221 221 222 222 222 0 0 0;
#P flonum 979 358 47 9 0 0 0 139 0 0 0 221 221 221 222 222 222 0 0 0;
#P flonum 931 358 47 9 0 0 0 139 0 0 0 221 221 221 222 222 222 0 0 0;
#P window linecount 3;
#P comment 614 428 140 9109513 the horizontal line is always at unit gain (amplitude = 1.0) , or phase = 0. in phase mode;
#P user filtergraph~ 756 382 255 124 139 9 0. 22050. 0.0625 16. 1 1 1 0 0 1 1;
#X frgb 193 193 255;
#X brgb 233 233 255;
#X rgb2 0 0 0;
#X rgb3 130 130 130;
#X rgb4 0 0 0;
#X rgb5 118 121 166;
#X rgb6 210 74 54;
#X rgb7 255 22 22;
#X linmarkers 5512.5 11025. 16537.5;
#X logmarkers 10. 100. 1000. 10000.;
#X nfilters 1;
#X setfilter 0 2 1 1 0 300. 2. 3. 0.0001 22050. 0.0001 16. 0.5 25.;
#X done;
#P comment 931 321 46 9109513 cutoff or center freq;
#P window linecount 2;
#P comment 981 332 39 9109513 gain (linear);
#P window linecount 1;
#P comment 853 262 350 9109513 gain-based variant for lowpass , highpass , bandpass , bandstop and resonant;
#P window linecount 3;
#P comment 768 344 134 9109513 you can also enter biquad coefficients in the first five inlets when in display mode;
#P window linecount 1;
#P message 210 555 14 9109513 1;
#P user gain~ 144 673 24 100 158 0 1.071519 7.94321 10.;
#P user gain~ 68 673 24 100 158 0 1.071519 7.94321 10.;
#N out~ 2;
#P newobj 145 829 39 9109513 out~ 2;
#N out~ 1;
#P newobj 67 828 39 9109513 out~ 1;
#N in~ 2;
#P newobj 108 323 33 9109513 in~ 2;
#N in~ 1;
#P newobj 69 324 33 9109513 in~ 1;
#P newex 252 53 64 9109513 fromsymbol;
#P number 281 109 35 9 0 0 0 139 0 0 0 221 221 221 222 222 222 0 0 0;
#P number 238 109 35 9 0 0 0 139 0 0 0 221 221 221 222 222 222 0 0 0;
#P newex 248 75 52 9109513 route 1 2;
#P newex 255 28 97 9109513 r footcontrollerdata13;
#N in 3;
#P newobj 177 155 23 9109513 in 3;
#P newex 323 143 85 9109513 scale 0 127 0. 128;
#P newex 213 144 80 9109513 scale 0 127 0. 50;
#P newex 177 179 48 9109513 loadbang;
#P message 177 245 14 9109513 1;
#P newex 69 628 61 9109513 clip~ -1. 1.;
#P message 337 301 20 9109513 50;
#P message 392 312 14 9109513 2;
#P message 440 323 14 9109513 3;
#P newex 163 543 31 9109513 mtof;
#P user hslider 161 510 25 232 128 1 0 0;
#P flonum 151 581 35 9 0 0 0 139 0 0 0 221 221 221 222 222 222 0 0 0;
#P newex 68 579 79 9109513 biquad~;
#P comment 242 281 288 9109513 imitation-analog variants for bandpass and peaknotch;
#P toggle 174 280 15 0;
#P message 189 280 52 9109513 analog $1;
#P toggle 174 262 15 0;
#P message 189 262 64 9109513 gainmode $1;
#P user umenu 97 262 70 9109543 1 64 278 0;
#X add display;
#X add lowpass;
#X add highpass;
#X add bandpass;
#X add bandstop;
#X add peaknotch;
#X add lowshelf;
#X add highshelf;
#X add resonant;
#X add allpass;
#P newex 68 603 39 9109513 *~ 0.1;
#P newex 70 553 79 9109513 biquad~;
#P comment 429 345 35 9109513 Q or S;
#P flonum 428 359 47 9 0 0 0 139 0 0 0 221 221 221 222 222 222 0 0 0;
#P flonum 380 359 47 9 0 0 0 139 0 0 0 221 221 221 222 222 222 0 0 0;
#P flonum 332 359 47 9 0 0 0 139 0 0 0 221 221 221 222 222 222 0 0 0;
#P window linecount 3;
#P comment 15 429 140 9109513 the horizontal line is always at unit gain (amplitude = 1.0) , or phase = 0. in phase mode;
#P user filtergraph~ 157 383 255 124 139 9 0. 22050. 0.0625 16. 1 1 1 0 0 1 1;
#X frgb 193 193 255;
#X brgb 233 233 255;
#X rgb2 0 0 0;
#X rgb3 130 130 130;
#X rgb4 0 0 0;
#X rgb5 118 121 166;
#X rgb6 210 74 54;
#X rgb7 255 22 22;
#X linmarkers 5512.5 11025. 16537.5;
#X logmarkers 10. 100. 1000. 10000.;
#X nfilters 1;
#X setfilter 0 2 1 1 0 621. 2. 3. 0.0001 22050. 0.0001 16. 0.5 25.;
#X done;
#P comment 332 322 46 9109513 cutoff or center freq;
#P window linecount 2;
#P comment 382 333 39 9109513 gain (linear);
#P window linecount 1;
#P comment 254 263 350 9109513 gain-based variant for lowpass , highpass , bandpass , bandstop and resonant;
#P window linecount 3;
#P comment 169 345 134 9109513 you can also enter biquad coefficients in the first five inlets when in display mode;
#P fasten 27 0 71 0 182 225 36 225;
#P connect 40 0 38 0;
#P connect 4 0 18 0;
#P connect 10 0 18 0;
#P connect 18 0 11 0;
#P connect 71 0 40 0;
#P connect 25 0 40 0;
#P connect 11 0 25 0;
#P connect 36 0 10 0;
#P connect 4 0 10 1;
#P connect 23 0 12 0;
#P connect 19 0 11 1;
#P fasten 68 0 41 0 673 658 149 658;
#P connect 40 1 41 0;
#P connect 41 0 39 0;
#P connect 42 0 19 0;
#P connect 12 1 4 0;
#P connect 13 0 4 0;
#P connect 15 0 4 0;
#P fasten 29 0 20 0 328 225 166 225;
#P connect 20 0 21 0;
#P connect 26 0 14 0;
#P connect 26 0 16 0;
#P connect 30 0 27 0;
#P connect 27 0 26 0;
#P connect 14 0 13 0;
#P connect 16 0 15 0;
#P fasten 27 0 42 0 182 200 608 200 608 547 215 547;
#P connect 33 0 28 0;
#P connect 32 0 33 0;
#P connect 35 0 32 0;
#P connect 31 0 35 0;
#P connect 32 1 34 0;
#P connect 34 0 29 0;
#P connect 21 0 6 0;
#P connect 24 0 6 0;
#P fasten 88 0 6 0 480 252 337 252;
#P connect 6 0 4 5;
#P fasten 27 0 24 0 182 201 612 201 612 299 342 299;
#P connect 7 0 4 6;
#P connect 23 0 7 0;
#P fasten 27 0 23 0 182 201 617 201 617 306 397 306;
#P connect 8 0 4 7;
#P connect 22 0 8 0;
#P fasten 27 0 22 0 182 201 621 201 621 312 445 312;
#P fasten 27 0 94 0 182 201 445 201 445 27 480 27;
#P connect 87 0 88 0;
#P connect 94 0 89 0;
#P fasten 93 0 87 0 613 159 481 159;
#P connect 89 0 87 0;
#P connect 95 0 94 1;
#P fasten 27 0 101 0 182 200 445 200 445 27;
#P connect 97 0 96 0;
#P connect 96 0 95 0;
#P fasten 99 0 90 0 625 133 562 133;
#P connect 90 0 87 1;
#P fasten 28 0 97 0 218 171 445 171 445 27 597 27;
#P fasten 101 0 97 0 537 47 576 47 576 27;
#P connect 100 0 99 0;
#P connect 47 0 61 0;
#P connect 53 0 61 0;
#P connect 61 0 54 0;
#P connect 54 0 68 0;
#P fasten 37 0 53 0 113 537 674 537;
#P connect 47 0 53 1;
#P connect 66 0 55 0;
#P connect 62 0 54 1;
#P fasten 27 0 100 0 182 200 735 200 735 38 706 38;
#P connect 70 0 62 0;
#P connect 58 0 47 0;
#P connect 56 0 47 0;
#P connect 55 1 47 0;
#P connect 20 0 63 0;
#P connect 63 0 64 0;
#P connect 69 0 57 0;
#P connect 69 0 59 0;
#P fasten 27 0 79 0 182 201 747 201 747 56 781 56;
#P connect 72 0 73 0;
#P fasten 27 0 69 0 182 201 781 201;
#P connect 79 0 74 0;
#P connect 74 0 72 0;
#P fasten 78 0 72 0 908 160 782 160;
#P connect 57 0 56 0;
#P connect 59 0 58 0;
#P fasten 27 0 70 0 182 201 683 201 683 538 814 538;
#P connect 80 0 79 1;
#P fasten 27 0 86 0 182 201 770 201 770 25;
#P connect 82 0 81 0;
#P connect 81 0 80 0;
#P fasten 84 0 75 0 926 134 863 134;
#P connect 75 0 72 1;
#P connect 97 0 82 0;
#P fasten 86 0 82 0 838 48 877 48 877 28;
#P connect 85 0 84 0;
#P connect 6 0 49 0;
#P connect 67 0 49 0;
#P connect 64 0 49 0;
#P fasten 73 0 49 0 781 201 936 201;
#P connect 49 0 47 5;
#P fasten 27 0 67 0 182 201 941 201;
#P connect 50 0 47 6;
#P connect 66 0 50 0;
#P fasten 27 0 66 0 182 201 996 201;
#P connect 51 0 47 7;
#P fasten 27 0 85 0 182 200 966 200 966 37 1007 37;
#P connect 65 0 51 0;
#P fasten 27 0 65 0 182 201 1044 201;
#P window clipboard copycount 102;

#101093
Apr 16, 2012 at 1:48pm

Hello All,

Many thanks for this thread.
Here’s the link for the MS20 from Roman
Belavkin, for reaktor :

https://www.native-instruments.com/index.php?id=userlibrary&L=1&type=0&ulbr=1&plview=detail&patchid=3449

best

Damien

#101094
Apr 16, 2012 at 2:24pm

I would consider the re-emergence of this thread to be a well thrown-down gauntlet to the gen gurus, no?
Cheers
Roger

#101095
Apr 16, 2012 at 3:41pm

+1

#101096
Apr 16, 2012 at 4:23pm

yes, a very strange way to bring back this well trodden and very famous thread, damiensko – a link to a well known, bad quality, years old, reaktor patch; hmmm.

i built a pretty great filter in Max4/5 years ago after reading this thread, but what i ended up with had little resemblance to an ms20 and was super cpu intensive.

one of the first things i looked in to when i got my hands on gen~ was this ms20 problem. the ms20 is a lot harder to emulate than the moog 4 poles etc. also, there is far less useful info about it in the public domain. and not being a scientist myself this is problematic.

there are some basics which are reasonably easy to make a start with: you need a sallen & key filter emulation (quite easy) with a nod towards the 1974 Nyle Steiner paper of modifications. then work on a vactrol emulation. then you need to get tweaking…

the simplest and easiest to understand implementation is in the Doepfer documentation for their A-101-1 and A-106 modules. really helpful.

I think this is all doable with gen~ and i am going to have another go when i find the time, which may be never of course.

anyone else made a start?

#101097
Apr 16, 2012 at 6:10pm

Analog filter models are decidedly non-trivial in nature, unfortunately, but there is some literature about them (if not a ton on the MS20)

Paper on the electrical design of the filter:

http://www.timstinchcombe.co.uk/synth/MS20_study.pdf

Not the MS20, but maybe could be modified? It already has multiple modes (which I added to the original)

http://cycling74.com/toolbox/pm-ladder-moog-ladder-filter/

Papers about filters and analog-style oscillators. Filter algorithm for PM.Ladder~ is from here:

http://www.icst.net/research/download/digital-sound-generation/

#101098
Apr 16, 2012 at 6:20pm

Update: looks like Antti Huovilainen got to it:

http://lib.tkk.fi/Dipl/2010/urn100219.pdf

(Page 28)

Looks like he started from the Moog filter designs, so this is worth a shot.

#101099
May 13, 2012 at 3:48am

-

#101100
May 13, 2012 at 5:13am

After reading through all this I can’t help but wonder why you don’t just plunk down $50 and buy the MS20 VST from Korg and load it through a [vst~] object?

http://www.korguser.net/shop/software/

#101101

You must be logged in to reply to this topic.