Open Source EML-200 modular synthesizer with sequencer

This is a model of Vassar College’s Electrocomp EML-200 that I built for my students.  Vassar’s EML-200 has a couple of hot-rodded features that the original didn’t have, such as the tuning knob for VCOs 1 and 2, and extra outputs for VCO 1 and 2, so I included those.   The EML-200 is quite limited in many respects: it has one AD envelope generator, its VCOs can only produce sawtooth waves, and it lacks a VCF.  Nevertheless, it can do quite a bit, particularly with creative routing (ring-mod = opportunity for envelope…), and I’ve included some presets.

Since we lacked a hardware sequencer, I built one based on the Moog 960.  It has almost of the features of the original–including the ability to be used as an oscillator itself–and I’ve added ways of randomizing/adjusting the values for the steps, and you can also use it as a full 24×3 step sequencer instead of an 8X3 or 24X1 step sequencer.  Click the numbered button at the bottom of a column in the step sequencer to temporarily activate that step.  As in the original, Row C can control the duration.

It also can record its output.  Specify the prefix (i.e. the beginning of the filename), and the path, and it will create filenames with timestamps in them so you don’t have to keep choosing new filenames.





v. 1.0.1: replaced old Max5 anti-aliasing upsampling code, and fixed various error messages printing in Max window.

It's written entirely in Max.

Thomas Fredericks
Jan 28 2012 | 1:23 pm

Can it be downloaded?

Jan 29 2012 | 9:25 am

hi, is there a link to this project so we can have a look at it and use it please? sorry if i haven’t seen it


Jan 30 2012 | 6:01 am


where can i find this modular synth ?

Jan 30 2012 | 9:29 pm

Link is now fixed.

Rupert Lally
Apr 21 2012 | 7:38 am

Any chance you’ll port this over to M4L at some point?

Apr 23 2012 | 10:07 am

Yes, I’d definitely like to. I’d prefer to wait for Max6 for MaxForLive is standard, as I’ve been able to replace the sequencer with gen~ code which improves the performance quite a bit. IIRC the version here has the old sequencer which, like the analog original, is a series of distributed steps (check out the bpatchers with the knobs in the step sequencer), but it’s a thoroughly weird design in Max as it uses feedback, which limits the maximum speed of the sequencer when you use it as an (!) oscillator. (max freq = samplerate / (vectorsize * 24))

My main hitch with doing Max4Live is what to do about tempo? I’m guessing that the easiest thing is just to have an auto-sync of sorts that resets the sequence every n measures, though people would also probably want more clearly defined rhythmic steps. You can do it now, but it’s not the most obvious way. Rather than a thousand knobs like the original, I’m guessing I might want to use some hybrid of live.step for the sequence controls.

Also on my to-do list is to replace some of the oscillators. I’m upsampling saw~ to help with FM, but I’m considering replacing it with something different because saw~ isn’t great with FM. (but this is also gen~ territory)

The original EML isn’t set up for keyboard control at all, but this is probably something people would be interested in, so I might see if there’s a way of incorporating that.

Any thoughts, questions, etc. are welcome.

Apr 30 2012 | 8:14 am

Hi Peter, the link seems to be broken again – I’d love to take a look at this

Apr 30 2012 | 10:14 am

Thanks for the heads-up. Should be fixed now. I moved the dynamic content over from the old site, but had forgotten about the static content…

Apr 30 2012 | 5:53 pm

Link works fine now – thanks very much Peter

Oct 06 2014 | 7:38 pm

Hello man,

Do you happen to have any instructions as to how does the routing works in this patch. I get confused with the numbers and what is an input and what an output.

Thank you!

Viewing 10 posts - 1 through 10 (of 10 total)

Explore More

Subscribe to the Cycling ’74 Weekly Newsletter

Let us tell you about notable Max projects, obscure facts, and creative media artists of all kinds.

* indicates required