Emission Control 2: Open-source granulator

I just received an email from Curtis Roads that a few of his students have released Emission Control 2. It looks like Mac and Linux builds are available EDIT: WINDOWS IS NOW AVAILABLE. This is very exciting! The original EC was only available on OS9.


Thanks for sharing Michael! Just downloaded, looks very promising! :slight_smile:


Actually it was osx but was compiled for G5 processors. This is great news thanks for letting us know!!

Ps this is fantastic work thanks to everyone involved


Ah, good catch! Yeah, I only remember being able to use it on borrowed computers when I was at MAT/CREATE. This is huge that this is out, along with the upcoming NuPG (New Pulsar Generator).


This looks amazing. Any good writing out there about the original Emission Control? I’ve heard about it before, but only in the context of “I wish an updated version of this came out”.

Not a lot, but there’s a selection of historical documents on the repo as well: https://github.com/jackkilgore/EmissionControl2/tree/master/docs/historical/ec_2004


The thesis in that link looks like good reading. Thanks!

Looks amazing, wait for Windows and the video demo :slight_smile:

Has anyone around here managed to build the application on Linux? There seem to be some build-related scripts in ecSource/scripts but when running them I always get some errors from CMake (which I’m not really familiar with…).

I’m using Arch and there seem to be several ways to install .deb packages, but I’m not sure how easily and cleanly they can be removed afterwards…

1 Like

Interesting. Any idea of recommend machine specs? Could this be run on an rpi I wonder? I have a pisound lying around here waiting to be put to use…

1 Like

such a great application of public money public code

any publicly funded university should open source their shit!


Just a heads up: it looks like Windows builds are now available.


Hello, thanks for posting it! I along with Rodney DuPlessis have been the lead developers on this project. We still have some hiccups with older OSX releases and we don’t have arch based system support yet. However, if you want to work with us to get that going that would be COOL. Thank you for all the support, you can message me if you have any questions or problems. :,)

Note that if you want to compile from source, we aren’t quite there in documenting the build process and figuring out all the dependencies we forgot we had. Stay tuned if that interests you.


I had a chance to tool around with this last night… sooooo good! thanks for the hard work and sharing!!!


Hey! Great to see that you’ve been a member here. There are a few other MAT alums (and probably current students) on here, including @charlieroberts.

For builds, the one thing I would recommend would be to look into Azure DevOps or Github Actions. I’m not really an expert on either, but I had assistance setting up Azure on my VCV repos.

On https://github.com/mhetrick/nonlinearcircuits you can see the Azure file here: https://github.com/mhetrick/nonlinearcircuits/blob/master/azure-pipelines.yml
This automatically creates Mac, Windows, and Linux builds for my projects every time I push a commit and uploads them here: https://github.com/mhetrick/nonlinearcircuits/releases/tag/Nightly

I see @Dewb set up the Github Actions equivalents for his VCV repo here: https://github.com/Dewb/monome-rack/tree/tt2020/.github/actions

Both options are free for open-source repos like this.

Maybe Andres Cabrera would have some helpful advice. He seems to know everything :laughing:


The .deb package in the release appears to be compiled with a version of libc (2.29) more recent than the one (2.28) shipping with Debian 10 (stable) so i just attempted to compile from source, but it failed.
There seems to be a dependency on libnfd which is not packaged in debian and appears to need some rust environment to compile: that’s about the limit of my understanding. I’m not too sure about trying to compile libnfd as i don’t know a thing about rust or cargo.

1 Like

@trickyflemming Thanks for posting! I’ve been a lurker on here for a while but this prompted me to finally make an account :upside_down_face:

Those tools look very promising. Thanks for the tip! So far, we’ve been relying on Andres to compile the app for windows, and he’s been a huge help in other regards along the way. If we can get that build system set up then we won’t have to bother him every time we push a new bug fix! lol

@lsky Wow, I honestly wasn’t expecting an Arch user to try and compile it! In hindsight I should have expected it though haha. I’m running Debian 11 and honestly not too familiar with Arch but I’d be very interested to see if we can get an Arch version working. The deb packages should only work on Debian based distributions like Ubuntu etc. so those probably won’t help you. But as to your question about how easily and cleanly they can be removed after, uninstalling seems to work quite well from my testing using apt remove emissioncontrol2 from the terminal.

For compiling on Arch there are a couple of hurdles. First, I need to document and add to the README the necessary libraries you need installed on your system to build it. One that I can remember off the top of my head is libsndfile. Next, I need to get rid of some Debian-specific things I did in the code and make it more general. My bad. As Jack said, we’re hoping to create the documentation for the build process soon. We’re honestly surprised and thrilled that so many people are trying to build it!


@Oootini unfortunately the main dependency for the application, Allolib, seems to not support compiling 32-bit targets. As far as I know RPIs are all 32-bit… but I haven’t played with them much.

@ermina Yeah I’m running Debian 11 Testing so I compiled it with a newer version of libc. But I didn’t expect that to cause any problems for debian users if they’re just running the compiled app? At which step did you run into problems? Unpackaging the .deb or afterwards, when running the application?
As for compiling from source, it should work if you run the configure.sh script from inside ecSource/scripts. That should handle building all the submodules including nfd. There are some libraries you need to install but they’re all available in the debian repo. One is libsndfile1-dev, and I think also libfftw3-dev. The configure script should report any other missing libraries, in which case just search for them in the debian repo and install them. Reach out to me if you have any other issues along the way! I’m happy to help. Hopefully I’ll get the documentation for building from source up on github soon…


this might win best ui of an open-source program I’ve ever used. everything worked perfectly and I was able to figure out the controls super quickly…being able to switch between different files is really cool.

Thank y’all for sharing this!


I installed the .deb package using
# dpkg -i EmissionControl2_1.0-1_amd64.deb
then executing the binary results in
$ EmissionControl2
EmissionControl2: /lib/x86_64-linux-gnu/libm.so.6: version GLIBC_2.29' not found (required by EmissionControl2)

For the compilation i cloned the repo and ran the ./configure.sh script.
All dependencies seemed satisfied, and nfd appeared to be built indeed.
Then i ran ./run.sh which fails at:
[100%] Linking CXX executable ../../bin/EmissionControl2
/usr/bin/ld: cannot find -lnfd
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/EmissionControl2.dir/build.make:102: ../../bin/EmissionControl2] Error 1
make[1]: *** [CMakeFiles/Makefile2:131: CMakeFiles/EmissionControl2.dir/all] Error 2
make: *** [Makefile:130: all] Error 2
./run.sh: line 25: ./EmissionControl2: No such file or directory

I’ll take a closer look at the results of ./configure.sh to be sure that i didn’t miss anything.
(maybe github is a better place to discuss these issues?)