Surge - a new module collection from a great digital synth

So: If you have ways that 1.5.2 is better we would love to know them. They must be obvious since 1.6.0 was only released literally 20 hours ago! But none of us have 1.5.2.

So please do feel free to drop those in as issues https://github.com/surge-synthesizer/surge there.

Thanks

I played with the Surge VST last night, it is very powerful and I have only scratched its surface. This can be my intro into polyphonic synths. Have to say I am looking forward into bringing Surge to Rack.

1 Like

Just as a sneak preview here’s a little demo I made of the surge vocoder running in rack. (In this case I used loopback and logic as the sound sources but the routing and processing is all rack as I hope you can see)

6 Likes

This sounds really good to my ears, but its 1.0 only?

Any chance you could try Nysthi SAM through it? Because that’s the first thing I would do.

Yes it is 1.0 only.

You can route anything to it yeah! My dev environment just has surge-rack BaconMusic and fundamental but if you can build 1.0 plugins and are running 1.0 you can grab it from GitHub and try today!!

1 Like

Here’s another fun preview. I’ve been making everything polyphonic and also doing some profiling Here’s a multi-osc polyphonic voice set playing one of the midi files from the BaconPlugs poly generator.

You can get all those modules right now if you build surge-rack from master. All the changes are in the code. As you can see, more of the modules are getting proper faceplates as well as polyphony. In this example, only the Delay unit has a generic face.

Will try and get this into the community release before I do some travel at the end of June. Again, feedback and tests welcome.

3 Likes

Haha, used to be able to play that on piano but I definitely don’t have the muscle ability anymore for that.

2 Likes

Yeah I hear you! But boy what a great poly test track :slight_smile:

Oh hey by the way: Your profiling meters are sooo useful. Just generally - thank you for making Rack 1 both great and sensible software!

2 Likes

OK as of this morning all the modules which can be polyphonic are. Here’s an example of the super powerful wavetable oscillator using one of the hundreds of wavetables which ship with surge to make a sort-of-wierd-trumpets-in-a-canyon sound to goldberg variation 10.

I’m going to try and get this software ready to include in community this week so it can be available, even as an incomplete but working beta, when rack 1 ships. If you are building your own 1.0 plugins, trying these would really help me bang out bugs.

7 Likes

Hi everyone.

I have these modules far enough along that I’ve decided to tag them as a “1.beta1.0”. I still have lots to do and there will be changes over the summer, but the module set is a good starting point. (Over the summer we will see more filters, more non-generic faceplates, and more performance and code improvements).

I have asked for the project to be added to the library builds (https://github.com/VCVRack/library/issues/565) but if you want to try the project, now that Rack ABI is stable, if you are using an appropriate version of Rack 1.0 you can download our nightly builds from here: https://github.com/surge-synthesizer/surge-rack/releases

We would very much value you’re feedback. GitHub issues are the best approach. I am going to be offline a bit for the end of June and start of July, but all feedback is useful.

EDIT: A rudimentary manual is now online at https://surge-synthesizer.github.io/rack_manual/

Thanks and look forward to hearing anything you find and - more importantly - hearing any music you happen to make with these modules!

4 Likes

Folks:

Just want to give this a bump. “Surge for Rack” version 1.beta1.0 is now in the Rack V1 library

https://vcvrack.com/plugins.html#surge

just add it and download and you will get the modules in current state matching the manual. Polyphonic Oscillators, LFOs, envelopes, and loads of effects from the VST, as well as a module which plays any surge patch as a polyphonic voice.

Loads of bugs (like I need to map the rack midi MPE to the surge voice MPE for the voice player; and add loads of face panels; and the like). And I’m about to head off on a vacation for a bit. But please let me invite you to download and play with these and raise issues either here or on the GitHub. Like I said, slow response time from me for a couple of weeks but will have some dev time to fix and address issues in July as you find them, as well as finish some modules which don’t have final UIs and add the rest of the filter banks from the VST.

Have fun! And most importantly: if you make any cool music with these modules would love to hear!

10 Likes

Nice!

1 Like

@baconpaul - just fyi: i have just successfully compiled the surge-rack modules on arm 32bit and 64bit as part of getting vcvrack running on both architectures (https://github.com/hexdump0815/vcvrack-dockerbuild-v1 - not yet updated and used by https://github.com/hexdump0815/sonaremin) - i used simde (https://github.com/nemequ/simde) to automatically translate intel sse to arm neon and the surge plugins seem to work - maybe this might be useful for a future port of surge to arm too in some way … i’ll soon update the above repos with the scripts and patches i used as soon as i have polished them a bit

on intel i’m impressed how cpu efficient the surge modules are - i’ll still have to see how much of this remains alive on arm :slight_smile:

best wishes and keep up your cool work on the surge stuff! - hexdump

Well that is remarkably interesting. A few of us have tried to build surge for a raspberry pi and failed but seems you have got it working. With the caveat that I am on a 2.5 week trip with no development device let me ask a couple of questions

1: did you have to change surge-rack or surge code? If so I would be more than happy to merge a pr appropriately ifdefed

2: can I run an arm build easily in our ci pipeline so I make sure it keeps running? Our Linux box can stage and run a docker image I bet so love to hear thoughts on this

3: I would love surge proper (the headless app not the vstgui) to compile non intel so any docs you have on how you did it could also go back to main repo

But short version is: whoa cool - happy to include changes in our build pipeline or codebase to make your effort easier!!!

1 Like

hi paul,

enjoy your trip - i think there is no hurry with this - i just wanted to note, that there is now a proof of concept that it works. to your questions:

  1. yes and no - not directly, but i searched all of the intel sse _mm_xyz calls and replaced them with the simde versions simde_mm_xyz … i think this could be done much cleaner by adding a header file which redefines all the _mm_xyz used in surge with the simde ones and is included together with the simde headers via ifdef on arm instead of the intel sse intrinsics headers

  2. that would require a native arm and arm64 machine (i’m building all this stuff native on arm/arm64) - otherwise cross compiling would be required or i think there are also ways to run an arm/arm64 system somehow via qemu as docker container on an intel machine - not fast, but should be doable (https://blog.hypriot.com/post/docker-intel-runs-arm-containers/ and https://gist.github.com/Manu343726/ca0ceb224ea789415387 and most probalby many more)

  3. i guess that the headless version is about the same as the patch player surge-rack plugin? that works perfectly fine on arm :slight_smile:

i think the just announced raspberry-pi 4 might be a good target for all this …

best wishes - hexdump

Got it. You can see the work the dev who tried before did in this string of github issues if you want.

As to the prefix to all the _mm yeah the way I would do that is in surge (the submodules of surge-rack) add a directory called “src/arm_support” or some such and then add an “arm_intrinsics” and at the same time add the simde library as a submodule in libs. Then that file looks like

#define _mm_ps_zero simde_mm_ps_zero

I presume. Then in the appropriate place (probably globals.h where we include xmmtrim) do a #ifdef, add the #ifdef to the cmake file for headless and go.

Headless is a standalone exe which is the smallest code path to make any sound with surge indeed. I did it so I could run valgrind and stuff without a DAW; but then the headless code became (most of) the code path I used for surge-rack. (There are a few other rack differences; on windows we compile with visual studio for the VST and gcc for rack etc… and so the surge code has TARGET_RACK).

But anyway if you are interested in having a change like that be part of the surge code base so you don’t always have to merge it in, I would be happy to have that fired in as a PR and work with you to get it merged and so on.

And then perhaps I can finally build that physical surge keyboard with an embedded PI! :slight_smile:

Cool stuff.

@baconpaul let me know if you need some help with this!

Would love some help! Anything particular you are interested in? Probably best to have a convo in pm or on github when I’m back.

1 Like