I know this might be a pipedream but what about a VCV rack export for cabbage?
I think it would be game-changer for VCV surely if we can export csound/cabbage files directly to or create VCV rack modules.
Cabbage VCV-rack export
I got a basic Csound VCV interface working Ok. I think it would be quite a lot of work to recreate the same GUI interfaces in VCV as we have in Cabbage. I am leaning towards the same approach I took with CsoundUnity, that is users can develop instruments in Cabbage, but they would load as native interfaces in VCV. Building on Windows might also be a pain as Csound is now built with MSVC and not gcc. I canāt promise any movement on this soon, but itās on my radar
Hi Rory !
Your menu entry for exporting to a Rack plugin raised some interest on the official VCV Rack users group page. Whatās the status of this aspect of Cabbage ? Is it going forward ? V1 of VCV Rack will be released soon, might be a good time to review the possibilities of Cabbage + VCV Rack. Btw, Iāve used some Cabbage-made VSTs hosted in Rack, the results are iffy. Some plugins work fine but I often get a lot of JUCE assertion errors caused by the plugin.
Also btw: I built the latest Cabbage and CabbageLite. It was kind of a pain to get everything built that I wanted, particularly the full version of Cabbage, but I did get it all compiled and running. And given the very slight acceptance of VST3 in the major DAWs (excepting Bitwig, of course) I hope that Cabbage will continue to export as VST2.
Best regards,
dp
Hi Dave, Iāve no returned the VSV Rack project in quite some time as I donāt use VCV. But It must be said that itās only a simple implementation. On the other hand, doesnāt VCV rack now support VSTs? So doesnāt this make the whole thing rather redundant?
Regarding building on Linux, Iāve not spent too much time in Linux lately, so Iām not sure of where things stand there, but I will take a look shortly. And rest assured that I intend to support Linux Native VST in all forms
@davephillips it would appear that you were trying to build with the master branch? Iād stay clear of that one as it is well behind the dev branch, which should build out of the box. Note that you will need to put the VST2 files into a vst2.x folder and place it within the /SDKs/VST_SDK/VST3_SDK/pluginterfaces
folder. The contents of mine contains the following the following files:
aeffect.h aeffectx.h vstfxstore.h
After that it should build without any problems. I just tested here and it built straight out of a fresh clone of the develop branch.
Thanks, Rory, Iām on develop now. I had a problem with the buildCabbage script, it wouldnāt pick up the path to the VST SDK. I resolved the problem by running Projucer on CabbageIDE.jucer and adding the path to the Extra Includes. Also, when I try to export as a VST effect or synth I get an error that /usr/bin/CabbagePluginEffect.so canāt be found, and indeed, I canāt find it. Am I missing steps somewhere ?
Did you run the installCabbage script? Doing so will install Cabbage and place binaries into the usual system dirs. If you donāt install, you should still be able to run Cabbage and export plugins so long as the .so files are contained in the same directory as the Cabbage app itself. Everything gets built into the ābuildā dir when buildCabbage.sh is called. Look in there for the .so files. If they are not there then they didnāt build.
The IDE now depends on the VST SDK too since I added the ability for it to load 3rd party plugins. Iāll update the .jucer files. Thanks for letting me know.
Right-o, the .so files arenāt building. Iām getting this error:
Compiling GenericCabbageEditor.cpp
/bin/sh: -c: line 0: unexpected EOF while looking for matching "' /bin/sh: -c: line 1: syntax error: unexpected end of file /bin/sh: -c: line 0: unexpected EOF while looking for matching
"ā
/bin/sh: -c: line 1: syntax error: unexpected end of file
MakePluginEffect:199: recipe for target ābuild/intermediate/Release/include_juce_audio_plugin_client_Unity_f9553f92.oā failed
Whatās Unity and do I need it ? [Edit: Never mind, I looked it up. I donāt think I need it, so Iām disabling it in the makefiles.]
Whoops, Iāve also removed that from the dev branch. Sorry about that. Is it building Ok now?
Still no joy. Now the build fails here:
Compiling CsoundPluginProcessor.cpp
/bin/sh: -c: line 0: unexpected EOF while looking for matching "' /bin/sh: -c: line 1: syntax error: unexpected end of file MakePluginEffect:185: recipe for target 'build/intermediate/Release/CsoundPluginEditor_3f0e809d.o' failed make: *** [build/intermediate/Release/CsoundPluginEditor_3f0e809d.o] Error 1 make: *** Waiting for unfinished jobs.... /bin/sh: -c: line 0: unexpected EOF while looking for matching
"ā
/bin/sh: -c: line 1: syntax error: unexpected end of file
MakePluginEffect:190: recipe for target ābuild/intermediate/Release/CsoundPluginProcessor_dc39856c.oā failed
make: *** [build/intermediate/Release/CsoundPluginProcessor_dc39856c.o] Error 1
/bin/sh: -c: line 0: unexpected EOF while looking for matching "' /bin/sh: -c: line 1: syntax error: unexpected end of file MakePluginEffect:180: recipe for target 'build/intermediate/Release/CabbagePluginProcessor_8a6343af.o' failed make: *** [build/intermediate/Release/CabbagePluginProcessor_8a6343af.o] Error 1 /bin/sh: -c: line 0: unexpected EOF while looking for matching
"ā
/bin/sh: -c: line 1: syntax error: unexpected end of file
MakePluginEffect:170: recipe for target ābuild/intermediate/Release/include_juce_audio_plugin_client_VST2_dd551e08.oā failed
make: *** [build/intermediate/Release/include_juce_audio_plugin_client_VST2_dd551e08.o] Error 1
Compiling GenericCabbageEditor.cpp
/bin/sh: -c: line 0: unexpected EOF while looking for matching "' /bin/sh: -c: line 1: syntax error: unexpected end of file MakePluginEffect:175: recipe for target 'build/intermediate/Release/CabbagePluginEditor_4348213a.o' failed make: *** [build/intermediate/Release/CabbagePluginEditor_4348213a.o] Error 1 /bin/sh: -c: line 0: unexpected EOF while looking for matching
"ā
/bin/sh: -c: line 1: syntax error: unexpected end of file
MakePluginEffect:195: recipe for target ābuild/intermediate/Release/GenericCabbageEditor_50c74848.oā failed
make: *** [build/intermediate/Release/GenericCabbageEditor_50c74848.o] Error 1
cp: cannot stat ā./build/CabbagePlugin.soā: No such file or directory
JUCE v5.4.1
I just pushed some changes through now to address a few things. I think they address the issues youāre having. Sorry about this, I know how frustrating it is! But the build and install scripts should work fine now.
Hey Rory, you rocked it, thank you ! All good now, export as VST works as advertised, Iām a happy Cabbage camper again. Btw, I exported the waveguide1 processor, it loads and apparently works well in the VCV Host FX module. Iāll let you know if I run into any really horrible problems.
Meanwhile, yeh, I donāt know how much work you want to put into the Export As VCV Rack Module. Itās a great idea, but if Rackās VST hosting works okay thereās not much need for that export function. I admit it would be cool though. At any rate, now is not the time to work on it, VCV Rack v1 is close to a release date and the code is still unsettled. If you do want to put any effort into it, you should probably wait until v1 shakes out after its release, let things settle into stability.
Thanks again for all the help, Rory, itās much appreciated.
I already got bitten once by the constant state of flux in the VCV code base. Itās like hitting a moving target. Iāll definitely be waiting till it settles down again before revisiting it!
Iād like to help re-creating the GUI interfaces. Is there some basic documentation I can follow to learn how Cabbage GUI widgets are created and the basic differences between Cabbage GUI and VCV Rack GUI engines?
These are all the Cabbage widget classes in VCV Rack. These are native implementations of the ones in the main Cabbage IDE. You see that each one has to be drawn manually. You will see also that they inherit some basic VCVRack classes such as Knob
, Switch
, etc. That means I didnāt have to write my own event handlers to create the interaction between the widgets and the users. It might be possible to build a VCV Rack module using JUCE. If you could find any work done in this area it would probably make life a lot easier.
Yeah, I see a lot of functions starting with ānvgā. From where do the nvg-functions originate?
They are all part of the nanosvg library that Rack uses. Tbh, most of the code you see in CabbageRack is cobbled together from the examples provided by VCV Rack and what info I could source from other open source projects. The API docs are not so helpful from I recall.