Would Any Rack Plugin Devs Like To Join The Surge Team?

Given the number of Rack users - and I don’t think @vortico or anyone else has said how many people have gotten as far as downloading Rack and starting an account on VCVRack.com.

But I think it’s a fair guess that the majority of Rack users have never been in the same room with a hardware modular synth, much less used one and gotten hooked on ‘knobiness.’

Given that I’m not sure if the majority of users are attached to skeumorphic interfaces.

And the worst of both world is when a module/VST/whatever duplicates a hardware interface to a ‘classic’ synth, complete with all the compromises the synth maker made to make an affordable front panel interface. Looking at you, Arturia!

How many people on earth have used a Prophet V clone VST, versus the 6000 Prophet 5s that were actually built?

I’m definitely not a developer, but I am a graphic designer. I’d be happy to help with designing new module panels.

Because it is less complexity for Rack’s use case once it is set up (which it is now). I can do integrations on one machine (Ubuntu), and within 2 minutes usually have a good idea if there are integration issues. Same for official builds. A much simplified build pipeline on Andrew’s build system, which produces the releases plugin builds.

Sounds good. I am happy to test and work with you to get this to work. I really like Surge in general (I use the VST mostly) and want to see this continued to be available in Rack.

4 Likes

Yeah I didn’t mean to complain. You build how you build you know! It’s just really really really far away from how we build!

Anyway I just did a push which removes the juce dependency. Like I said this means we can’t provide a couple of FX and there may be one or two edges which don’t work in the wavetable oscillator right now (but I can fix). But it would be great if you could give it a whirl again.

You will need to re-pull main then do a submodule update then remove the directory surge/ignore completely, then remake deps and plugs. (And is there a way a module can add custom content to the clean rule? I can’t figure that out).

Thanks so much!

1 Like

Track integration issues here: Rack v2 integration · Issue #321 · surge-synthesizer/surge-rack · GitHub

I think this is the one that stands out, in terms of the Rack toolchain which is all GCC AFAIK.

Thanks!

And yeah, choosing GCC on windows is certainly the most unorthodox choice rack makes among the world of audio software. But we are working around it.

There will be some features which we can’t expose to rack with XT (the patch player will have to go and a couple of FX will not show up) but that’s OK. The majority of the stuff should work. One more change and I think cshol and i will have it down.

4 Likes

Well that’s because it’s not building on Windows is it :wink:

Cross-compiling for windows using gcc (and usually mingw) is very common. Ardour also does this I believe so within audio software it’s not that uncommon.

yes i understand that rack chooses to cross compile. but even on windows proper it still uses gcc. I think that is a relative rarity other than rack and ardour. certainly none of the other projects i’ve got commits on seem to do that.

But that’s ok we got it working just with some limitations! So all good. There will be some features where if you want the full fledged experience just go buy host and use surge itself but i bet a lot of the good stuff we can get into rack modules now we have this working.

2 Likes

(It’s also not just that it uses gcc; it is that it uses gcc in a limited environment off the native OS. We were able to build all of surge for rack in a GitHub actions environment on the target OS but that is different than the cross compile environment. Which is OK! Just we turned off those features.)

As far as I know, you can use the compile service and deliver source code with all that restrictions you mentioned above

or

you can compile yourself for all 2 platforms and deliver binaries via the VCV library (I think, at least all commercial plugin developers do so).

Yeah good point I could just hand cschol binaries off the back of our github actions rather than use his compile toolchain. I wonder if thst is a better approach? @cschol do any oss plugins do that? It means I could lift those restrictions we placed and it’s no problem for me to make binaries in automated way.

1 Like

Yes, this is true. That is how closed source plugins like NYSTHI get in the library. btw, is “all 2 platforms” a typo of a dig at one of the 3?

I figured it was a typo but I did chuckle.

1 Like

@baconpaul @Squinky Yes it’s a typo, of course we have 3 platforms to care about.

I changed CI builds for windows and linux to use the official Rack toolchain in Docker. It is based on GitHub - qno/rack-plugin-toolchain. As I mentioned in my post this is what I was already trying to do at first but it was not easy to get it working, but with your latest simplification it was possible. I still need to figure something for the windows build and I need to discuss this with @cschol at the Github pull request.

Great thank you so much. I merged this!

I’m presuming its the CMAKE_SYSTEM_NAME thing you want to discuss with @cschol?

But good to have this working. Really appreciated!

1 Like

The CMAKE update is actually an issue in the Rack SDK in dep.mk. The current implementation only works in an actual native MSYS shell and not in our cross-compilation environment. No other plugins have used cmake to build their dependencies so it has gone unnoticed until in the past two days TWO plugins have tried and run into the same issue. dep.mk will be updated in the next Rack SDK release to handle this issue correctly.

@qno Updated the Github issue with additional information on the failing macOS build.

Issue gets resolved by adding correct CMake toolchain for oscross compiler - see Rack v2 integration · Issue #321 · surge-synthesizer/surge-rack · GitHub

All that’s required is setting the CMAKE_SYSTEM_NAME per the target platform, which in the future will be set correctly in dep.mk in the Rack SDK.

After setting CMAKE_SYSTEM_NAME, all platforms build successfully with the rack-plugin-toolchain inside of the Docker container.