Cabbage Logo
Back to Cabbage Site

Missing FMOD Export Options Cabbage v2.9.0

Good morning everyone,

I was using Cabbage v2.9.0 to build an FMOD plugin and I couldn’t seem to find the options to export as FMOD plugin in the File tab. Is this a bug or a feature?

See below for v2.9.0 missing ‘Export as FMOD Sound/Fx’ plugin options:

I downgraded to v2.8.0 (https://github.com/rorywalsh/cabbage/releases) and the issue has gone away.

See below for v2.8.0, where the options are now present:

I’m working with macOS Mojave 10.14.6
I haven’t investigated much further, but I hope this info helps

Thanks all

It’s always a good idea to check out the pre-releases from the Azure DevOps build system:
https://dev.azure.com/rorywalsh/cabbage/_build?view=runs
I think this issue has been resolved. Can you you let me know? The Azure site is a little cryptic, details on how to access the latest builds are posted here.

Hey Rory, I downloaded the latest pre-release (v2.9.96) from DevOps and the issue has resolved:) Thanks for the pointer, I’ll keep this in mind from now on!
See below for success:

Thank you!!

1 Like

Opening this one up again as I celebrated a little too soon lol.
I attempted Export as FMOD Sound Plugin using v2.9.96 and received the following error:

‘/Applications/Cabbage.app/Contents/fmod_csound_64.dylib cannot be found? It should be in the Cabbage root folder’

Screenshot 2023-09-09 at 8.46.49 am

I deduced this may be something that would only be present in an earlier version (I have no clue) and that I may be able to just copy it in from the old Contents folder to the new one.

So, I downloaded cabbage v2.8.0 onto a separate drive (Releases here).

Upon inspecting the app’s Contents folder I discovered that the ‘fmod_csound_64.dylib’ was also not present here either? But I wasn’t getting these errors when I was using v2.8.0 to export working FMOD plugins about a week ago. For good measure, I tested a fresh export using v2.8.0 and it exported with no issues

Heres the directory for v2.8.0:

Screenshot 2023-09-09 at 9.22.52 am

Is this odd or am I missing something?
Many thanks for the support thus far

Can you download the relevant libraries here and place them into the Cabbage.app/Contents directory and let me know if that does the trick :slight_smile:

Hey Rory thanks for this, I can’t seem to find ‘fmod_csound_64.dylib’ in the provided link, only a .dll (fmod_csound64.dll)- not sure if i’m missing any steps

Aha my apologies. However, my confusion stems from the error message asking specifically for fmod_csound_64.dylib - I have always had the fmod_csound.dylib and fmod_csound_fx.dylib in the Cabbage v2.9.96 app Contents (using v2.9.96) See below:

I replaced them anyway with the ones from the link for good measure, but the error persists in asking for fmod_csound_64.dylib to be present in the Contents

My apologies, I see the issue now. For now you can create you FMOD plugins manually by simple copying the dylib to a new directory, place the .csd file into the same dir, and then rename the dylib to match that of the .csd file, keeping the dylib extension. So if you export synth.csd, the fmod lib should be renamed to synth.dylib. I’ll look into the export options when I get a chance. Thanks for bringing this to my attention :+1:

1 Like

Thanks Rory, hope this helps - I have followed these steps in attempt to manually setup an FMOD instrument. I’ll provide more detail to help determine solutions. In my case, my .csd is called FormantSynth.csd.

  1. Saved Cabbage .csd (FormantSynth.csd)

  2. Copied fmod_csound.dylib from Contents to same directory as .csd

  3. Renamed fmod_csound.dylib to FormantSynth.dylib

  4. Copied both .dylib and .csd to platform-specific Unity plugins path (Mac, in my case):

    Assets/Plugins/FMOD/platforms/mac/lib

  5. Renamed FormantSynth.dylib to FormantSynth.bundle

  6. Renamed its metadata from FormantSynth.dylib.meta to FormantSynth.bundle.meta

Open FMOD Studio 2.02.11

  1. Set plugin path (Preferences -> Assets -> Plugins Folder) to the Unity plugin path: Assets/Plugins/FMOD/platforms/mac/lib where the .csd and .bundle reside
  2. Create new event, add audio track
  3. In event window, add Plugin Instrument -> FMOD does not register the plugins existence and no custom ‘FormantSynth’ plugin appears

Questions:

  1. May I ask if there are any tips on creating FMOD compatible plugins? Are there any particular things we need to avoid?

  2. Is renaming the .dylib to .bundle necessary for my implementation?
    Before and after renaming to .bundle, FMOD didn’t register the plugin in this case. However, I have had some success simply using .dylib and .bundle in the past week (using v2.8.0) to test my plugin in FMOD, which is a little confounding how that works. Is the renaming to .bundle more relevant to the Unity side of things as opposed to FMOD?

I have attached my .csd just to provide more context, hope this helps.
Disclaimer: it’s a work in progress

FormantSynth.csd (19.3 KB)

Thank you for all the help!

Thanks for this, I will try to make this process a little simpler once I get a chance, there is clearly some naming mismatch between Cabbage and the FMOD plugins.

To be honest, I’ve no idea. I haven’t used FMOD in many years. I wrote this interface to Csound almost 10 years ago, with a few little updates over the years. I guess it’s a case of experimenting and see what you see.

As far as I recall this is more a Unity thing than FMOD. I think this was the only way I could get Unity to see my plugins. :+1:

1 Like

FWIW I’ve triggered a new build which should hopefully avoid you having to do this each time you wish to export an FDMO instrument :+1:

1 Like

Thanks Rory! I’ve downloaded the new build and it does export a bundle perfectly and automatically now! The plugin was also detected by FMOD immediately which is very encouraging. Great stuff! I will highlight some other issues that have arisen to assist any future debugging in this area:

I created the Plugin instrument in the event window and it did indeed recognise and load my plugin complete with parameters no problem:

  1. If I select the instrument from the event hierarchy, even while the instrument is stopped, all system sound breaks, I had some sounds going in a few YouTube tabs and all were abruptly cut out (the videos themselves continued playing). However, when I press space (start event playback) or press the Play button, my sound fixes itself, but the instrument is frozen and doesn’t produce output and the Play button is never really pressed, it stays paused

  2. In the case of my instrument, for playback to work, I need to set it’s toggleInstrument parameter (In Cabbage, a button) to 100% to turn the instrument’s sound on, this where I discovered moving any parameters would cause FMOD to freeze, I could only adjust parameters by 1-5% percent before they would stop to process my input - clicking to view the parameters or interact with the plugin in general causes freezing

  3. It causes a slowdown and bugs in the FMOD UI also, where the plugin instrument’s width in the timeline doesn’t seem to be adjustable, it’s stuck at a fixed length, all other events work, so it doesn’t break everything which is nice. No scaler tool appears as it usually should when hovering over the plugin instruments timeline edges - adjusting loop regions is also causing freezing and it seems that when I try to adjust the loop region, it loses accuracy in the steps that I can set it to, and it sets itself to unexpected values, not corresponding to where i’m dragging it.

Q: Do you think this FMOD UI related stuff is something I should perhaps post in the FMOD forum so they could investigate? Or must you simply adapt Cabbage to fit their schematic?

  1. One other strange anomaly is that there seem to be two extreme values inside the instrument itself? It looks like it’s the absolute lowest note and the absolute highest note, but I can’t determine where they come from and why they are the length they are?

Bear in mind, I have many parameters in my plugin so I imagine this plugin is quite heavy on CPU. (Could I measure this somehow via a Console?)

Thank you for the update! You’re doing amazing work. Hope this info helps

I think it’s most likely an issue with CsoundFMOD rather than FMOD itself. I will take a look. One thing to note is that CsoundFMOD doesn’t support all the parameters offered by Cabbage. I’m not sure how the xypad will translate. I think you’d be as well to replace it for two sliders. Everything else should translate fine. I’ll down FMOD now and see if I can spot anything. One of the reasons I more or less gave up on this is that debugging issues is a nightmare and the FMOD API is not the most user friendly…

Thanks Rory, I did anticipate the xypad may not translate well as FMOD parameters, for that reason I did indeed create two separate sliders called ‘xCoord’ and ‘yCoord’ that write to the xypad’s X and Y coordinates, rather than trying to expose the xypad’s parameters. Haven’t been able to conclude its effectiveness yet but i’ll see what I can do on my end! Also yes fully agree that the FMOD API can indeed be quite the rabbit hole lmao

I noticed that the sound plugin exports are automatically be given the .bundle extension, whereas the fx exports are not. I wonder does this explain why I can’t get FMOD to see any FX I export? Also, what’s the trick for playing a sound? It’s so long since I used FMOD, I’m a little at sea here. Can you try this .csd and let me know? From my limited understanding, I should be able to drop it onto a timeline, hit play, and bring up the enable button to hear some sound? Can you try it? And maybe take a look to see if I’m missing something…

simpleSynth.csd (792 Bytes)

p.s. I’m definitely doing something wrong because I can’t even get the builtin FMOD plugin sounds to work…

Okay, here are the steps I took:

Testing Export as FX

  1. Downloaded the simpleSynth.csd
  2. Opened it in Cabbage, saved it to some appropriate directory
  3. File > Export as FMOD Fx Plugin
  4. Exported to another appropriate directory as a ‘.csd’ and ‘.dylib’ (not .bundle)
  5. Open FMOD
  6. FMOD Studio > Preferences > Plugin Path
  7. Set the plugin path to the directory we exported to
  8. Saved project, closed and restarted FMOD to ensure changes applied
  9. Create new event
  10. Assign event to the ‘Master’ bank (Right click Event > Assign to Bank > Browse > Master)
  11. Event selected, create new audio track in Event window
  12. Audio track selected, in the bottom window where metering and parameters live, Right Click > Add Effect > Plug-in Effect > Simple Synth (It appears!)
  13. No output seems to come from the Effect even when enabled

Also, the simpleSynth.csd works fine in Cabbage itself (Just to confirm that fact)

Testing Export as Sound

  1. Deleted the FX instruments from the directory ready to test the Sound export
  2. Exported simpleSynth.csd as an FMOD Sound Plugin to the plugin path we set in FMOD, it was exported as a .csd and .bundle
  3. Restarted FMOD
  4. The plugin now appears in FMOD when I look for the plugin in the event window (Add Plugin Instrument > Simple Synth), I add it, and it seems much smoother than my previous plugin test performance wise. No sound crashes. The loop region issues and the timeline stretching issues are no longer a problem.
  5. The plugin makes no sound regardless of the On/Off Parameter, no output
  6. Tested a separate event with a simple audio track just in case, audio was fine
  7. I looked inside the Console (Top menu bar > Window > Console) and this is the output when playback is enabled:

And here is some Verbose logging providing a little more detail. Though it’s a bit spaghettified, it may contain some clues?:

Also, is there anywhere I could download the source code for the most recent build? Not too sure how to actually access it if it’s avaliable - Not sure how much i’ll be able to decipher with my current knowledge but just curious in taking a look to see how it’s all interfacing with FMOD in order to possibly help debug, would that be a welcome proposition?

New development, while testing the FX export further, the session actually crashes immediately and consistently when I try to open the event with the FX parameter in it, I can still create new events and implement the FX plugin again with no immediate issues but still no output despite all

Maybe I need to rebuild against the current API. Oh the pain. Btw, are you planning on using this is a game, because trying to manage the bundling of Csound, along with FMOD in a game might be a bit of work. That’s why I gave this up in favour or CsoundUnity.

I am indeed planning on using this with a game i’m developing in Unity, if I were to use CsoundUnity then I would need to remove all trace of FMOD from the project and use Unity’s built in audio system.

It would certainly would be a big job to reconfig the whole sound system i’ve built so far but its certainly doable. I wouldn’t be totally averse to this if i meant I could use Cabbage and prevent headaches later down the road.

In fact i’m naturally moving more towards procedural everything, including audio. The limitations of FMOD for procedural audio techniques/generation have slowly become evident to me over development, and thinking about it, there aren’t many things I couldn’t do in CsoundUnity that I currently do in FMOD. Maybe it would be freeing.

I may make a fork of my project and attempt this