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)
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!!
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.
Haha, used to be able to play that on piano but I definitely don’t have the muscle ability anymore for that.
Yeah I hear you! But boy what a great poly test track
Oh hey by the way: Your profiling meters are sooo useful. Just generally - thank you for making Rack 1 both great and sensible software!
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.
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!
Just want to give this a bump. “Surge for Rack” version 1.beta1.0 is now in the Rack V1 library
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!
@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
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!!!
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:
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
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)
i guess that the headless version is about the same as the patch player surge-rack plugin? that works perfectly fine on arm
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!
@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.
Hi! It’s been a while since we updated surge-for-rack even though a load of things have been happening in surge-vst. Thanks to the community team, we just released 1.beta1.2 of the surge-rack modules which include a couple of big changes. Just do a regular update to get them.
Upgraded the underlying surge to the 1.6.3 engine. This means that the wavetable oscillator can read wavetables from many popular WT synths, including Serum; and that there’s a much larger collection of wavetables, including a wave-tabled virtual orchestra
Several DSP improvements, including an expanded distortion effect.
Thanks to @TroubledMind and @Eurikon poking me and helping with design, the modules now have swappable skins also. Some people don’t like that orange and blue it turns out! RMB and choose skins/(skin name). Ships with 4. Classic, Miami and New York which show the color ranges, and @TroubledMind’s Night, which is a great dark mode. If you want to add more skins, just look in res/skins and it should be clear
There’s still a lot of new features coming to surge and I’ll try to keep the rack modules more up to date as we push them. Enjoy!