SurgeXT Modulation Goobits

Couple of folks over in the SurgeXT thread have mentioned the modulation system.

Just opening a thread here to answer questions on it

Basic idea is

  1. There’s a model bit, which is the mod matrix, which has both a monophonic and polyphonic variation. That’s a heavily templated C++ class which does all the calculations and has use stuff and bits

  2. There’s parameters for modulation which have size n_targets * n_sources

  3. There’s the UI. That’s really just a stack of knobs all in the same space and the arm button toggles the correct one visible.

  4. there’s details for things like param quantities for mod depth displays

Happy to answer questions or walk folks through the code if you want.


Oh @FergusL asked explicitly about it so let me tag them here.


oh and of course, the easiest module to understand it is the mod matrix module, which only does modulation.

1 Like

My first question isn’t related to modulation actually! Though I guess it’s fine and still on topic?

Did the effort to make this new Surge XT version helped make the Surge modules more modular (lol) in terms of code?

I would be curious to add several low pass filter flavour to my AcidStation module especially if it simplifies the licensing. I’d be interested to swap the filter with either of the Vintage or Diode ladder as seen in the Filter module.

To be honest I haven’t looked at the code yet and that should inform me. I thought I might ask because the work the Surge team has done, either on the code or on the plugin building facilities (thx for the workflow files, saved me a loooot of time!), is top notch and I could definitely see it reused widely in future plugins!

1 Like

Well it is definitely the case that 3 years of improving surge made it easier, but yes some of that work was definitely more careful factoring and that made a lot of it easier. But quite a bit of the plumbing form the ancient surge modules was a useful starting point too.

All of the filters which run in the VCF module are available in a separate, standalone, header-only GPL3 library at GitHub - surge-synthesizer/sst-filters: Surge filters as a GPL3 library and so if that works for you, then go for it! We made them a library so people could use them in all sorts of ways.