Cabbage Logo
Back to Cabbage Site

Cabbage JUCE

I am wondering if it would be possible to utilize Cabbage to design and layout GUI elements and then take that into JUCE and Xcode to polish and create iOS apps?

It’s easier than that, you just need to build it for iOS. I’m happy to explore this with you. The code should already port to iOS, as both JUCE and Csound run on that platform. The current Android version of Cabbage is more or less a mobile port of Cabbage. It would run even better on iOS. We would need an Apple developer license, but it would be enough to explore it further. Do you have some experience with iOS? I have zero :wink:

@rorywalsh Hey, sorry it took me so long to reply. I had gotten tied up in an endless hardware project for my omnimod eurorack module release for 2 years and am now circling back to some plugin and app development.

I have a bit of experience with iOS / Xcode.

One thing I am curious about is the license of Cabbage based projects? is everything GPLv3 aside from JUCE? I am pretty ok with releasing source code as the GPL requires and I love that its possible to generate revenue with GPL.

I’ve been looking at HISE, it may be worth checking out and referencing and connecting with the developer on the forum ( as they have an iOS AUv3 plugin export and their project is also built around JUCE.

I have also been getting deeper into JUCE, and evaluating options for developing cross platform apps/plugins with Pure Data / Heavy, MAX’s Gen~, FAUST.

One of my big plans going forward is to develop my codebase in a way that is portable to native Unity audio as well as versions for embedded linux based hardware synths, OSX/Windows based plugins and stand alone apps, as well as android and iOS AUv3 and stand alone apps.

I have some solid ideas and I want to hopefully implement them in a way that allows full portability which is where JUCE seems to shine, as well as FAUST.

I am just now circling back to Cabbage as I found it again through a search for “Unity JUCE” that brought me to a forum thread and that reminded me “OH YEAH HOLY #&*(@ I FORGOT HOW COOL THIS IS”

Im down to help in any way I can in realizing an iOS export. You might want to start with checking out

@MacroMachines, we thought we’d lost you there for a moment :wink: I’m familiar with Christoph’s work. it’s a very impressive framework. As I mentioned in the previous post, porting to iOS shouldn’t be that tricky. JUCE looks after almost all of the loose ends for us. The real problem is that I don’t have access to an iOS device to work and test with. It’s really as simple as that right now.

If you don’t want to share your Csound source code, and want to remove all Cabbage branding from your plugins we can discuss private licenses which are available. Just PM me if you’re interested. I have a JUCE license, but will continue to publish stuff a GPLv3.

If you wanted to try porting to iOS, I’d be happy to help out and work with you on it. For now I’d suggest you open up the ProJucer and create a simple iOS audio app. If that works, then we can move on from there. :wink:

I am down to work on testing that with you. I will do as you suggested and get a basic test app up and running on my device through JUCE.

Likewise you may want to check out the workflow they have in HISE:

Is there anything you would like me to make notes on in the JUCE process? Im pretty sure that all the things to be aware of in the ios app export workflow are all noted on the above HISE ios export tutorial, and hes been great at responding on the HISE forum.

Really I am wondering/dreaming of forming a connection between the two tools. HISE has a great feature rich sample and synthesis instrument creation workflow as well as a DSP extension, and Cabbage has a great csound / DSP deeper flexibility and I just saw the FMOD export… these two things together would be like the Voltron of audio plugin development!

I would hope to provide a more streamlined approach to exporting than HISE does. As it stands Cabbage users don’t need any dev tools installed on their machines to export plugins, VST or AUs. If that was the case I’d simply create a template for them to use in Xcode, which kind of defeats the purpose of an export option.

My first port of call here would be to compile CabbageLite as an iOS app. That much alone would be ground breaking! Btw, have you any experience with iOS emulators? Do they exist for testing, are they any use?

I don’t think its possible to directly build and launch a plugin on iOS, I have done a fair bit of research and testested a few methods for creating iOS apps for years, and I am fairly certain even Unity uses Xcode as a conduit to launch the simulator/upload test applications. If you want to allow actual publishing of created iOS apps, apple makes you go through their tools.

I just went through the Juce process, and this is the same. I opened the AUv3SynthPlugin from their examples, and selected Xcode (iOS) from the exporter dropdown list at the top of JUCE and hit the button to the right with the Xcode icon, and then I selected AUv3synthPlugin - StandAlonePlugin at the top left of Xcode window, which default selected the iPhone 8 Plus simulator, and hit the play button, this launched the iOS simulator with the app and it runs and appears to work (though I have no idea what the app is supposed to do, it has a slider and record button, and neither appear to do much in the OSX or iOS versions I compiled and ran.)

This is really the only route to allow publishing or running on an iOS simulator, and would be a great start. And yes the iOS simulator works great for testing.

From there I have solid ideas of ways to allow rapid running and testing on an iOS device. MobMuPlat and Gemma both allow running PureData patches with customized UI objects on iOS using libPD, and csSpectral and csGrain iOS apps by mr.Csound himself Dr.B both run csound as the audio engine, which you seem to have figured out for the most part also.

so after an we do an initial test to proof of concept, we could look at the option of an app that works like your cabbage lite on iOS, where you can run cabbage .csd files and from there you could even consider the possible option of making an iOS port of the cabbage editor, and those might bring you in some app store $, but first things first, I think its prudent to test one of your examples >> Juce AUv3 >> Xcode (iOS) simulator.

thats the one thing these other platforms I mentioned with PureData/libPD never had, was any ability to turn your project into any kind of actual app/plugin for iOS… they box you in to just loading your patch in their app, which is fun but doesn’t give a route to a deliverable product. I am sure you can get both going and potentially generate some solid revenue from your work.

There’s still no way I want end users to have to get involved with Xcode. I’m pretty sure we can avoid that. A Cabbage Lite for iOS would be great, and users wouldn’t have to bother with Xcode. Of course we’ll have to use it in order to build the interface, but that’s fine. The Csound audio engine on iOS is not the same as on other platforms. It might take some work to get that working Ok. I’ll need to ask around.

Thanks for the info on building iOS stuff with Xcode. Once I get through this mountain of exam papers I’ll take a look.

I agree that >end users< should not have to get involved with Xcode, and those MobMuPlat and Gemma apps both take this route by providing a paid app store release which allows people to make a Pure Data patch and GUI to interface with it. And in general I think porting your Cabbage Lite to an iOS app could bring you in some press and potential revenue, and am in support of you doing it and will help test it.

The thing that HISE has done that was completely missing in the marketplace is an actual way for >developers< to deploy a created application/plugin to iOS that was designed in a more accessible tool, which appears to involve an Xcode template that can be relatively readily generated using JUCE.

I resonate with your distaste for Xcode, in general I hate xcode and have looked at using Visual Studio now that it works on OSX, I don’t know if that’s at all useful to you but heres some info that indicates VS can be used

At any rate, let me know if/when you would like any info, testing or help.

How I expect this might go would. Produce a CabbageLite for running Cabbage .csd files on iOS. Available on the iOS store for a nominal fee which would help cover the apple tax. If commercial developers want to package their own Cabbage based iOS apps they can do so with the Pro version of Cabbage.

Btw, I’m using CLion now quite a bit on Linux. It may not be long before I start using it instead of Xcode…

Wow CLion looks bananas… watching their demo video at
Apparently I looked at their site previously at some point but didn’t see the video… they really should have this front and center, cause wow… that debugging comment thing and all the insane auto generated code. How are you using this with JUCE, just importing it as a static library? I presume you don’t use the projucer?

I like your idea of CabbageLite for iOS for testing and endusers running .csd files and then a Pro version for publishing, that seems cool. I didn’t realize there was a Pro version, where can I find out more about that? How much is it? Is that the same thing as a Cabbage license for proprietary closed source development?

I use the Projucer to generate the cmake stuff for Clion. Works well enough. PM for me details on the Pro version, although I’ve been mentioning it now for quite some time in our discussions :joy: