Cabbage Logo
Back to Cabbage Site

Cabbage could not open fluidOpcodes library

When trying to run Cabbage, I always get the following warnings:

WARNING: could not open library ‘/Library/Frameworks/CsoundLib64.framework/Versions/6.0/Resources/Opcodes64/libjacko.dylib’ (-1)
WARNING: could not open library ‘/Library/Frameworks/CsoundLib64.framework/Versions/6.0/Resources/Opcodes64/libfluidOpcodes.dylib’ (-1)
WARNING: could not open library ‘/Library/Frameworks/CsoundLib64.framework/Versions/6.0/Resources/Opcodes64/libjackTransport.dylib’ (-1)
WARNING: could not open library ‘/Library/Frameworks/CsoundLib64.framework/Versions/6.0/Resources/Opcodes64/librtjack.dylib’ (-1)

And currently I need to use the fluid opcodes for a project. I have uninstalled Cabbage, built Csound using home brew and reinstalled Cabbage without installing Csound without it, and I can see that the libraries are installed on my machine (macos 10.14.6) - how can I get Cabbage to open these libraries, or at least the fluidOpcodes library? Thanks!

This has nothing to do with Cabbage, these are Csound warnings. I think the reason Csound is not loading these libraries is because it can’t find Jack. Try installing Jack for OSX and see if the problem goes away. I recall there being some discussion about this on the Csound mailing list recently.

Btw, I found that discussion on the Csound list I mentioned. FYI here it is.

Thanks for the response, I thought it may have been a Cabbage issue because I don’t have the problem when I run CSDs containing fluid opcodes from terminal. No luck after installing Jack

I was trying to help Ryan out with this, was wondering Rory if it could be that Cabbage is trying to use a different version of Csound to the one built from source, is there a way to see the Csound location it’s using or does it use the one from your path? Just because if it works from terminal that’d mean that the version on the path has Jack and Fluidsynth built and can find them

Hi @Syl_Morrison, @ryanjeffares. Is your homebrew version location in the standard location for Csound on OSX? That is:
/Library/Frameworks/CsoundLib64.framework
That will be where Cabbage is looking. If you want Cabbage to look elsewhere you’ll need to relink Cabbage to the new Csound binary that you’ve built using the otool program. If you have Xcode you probably have that too. But easier would be to simply place your new Csound framework into the usual place. Just rename the old one and drop the new one in. FWIW, my /Library/ folder is like a Csound framework cemetery :joy:

1 Like

Yeah it is, and the jack and fluid libs are in the version/ folder within that, just seems super weird that it would work from terminal but not within Cabbage, also we did install Jack, remember I asked a while back about a client having basically the same problem? He fixed it by downloading and RUNNING Jack but that didn’t seem to make a difference our end, same issue!
If you wanna see true hell the project I’m working on has had about 10000 different versions but I’ve been too scared to delete incase theres something I need in them, so my dev folder is full of like “FINAL” “Really FINAL” "LAST TIME"s hahahahaha
Edit: just thought, could it possibly work if I just sent Ryan my CsoundLib64 folder? or is that gonna mess up pathing for deps etc?

That might work. No fear of it messing up other things as the Csound install should ONLY ever be in that folder. I’m not sure how the brew install works, but it could be placing this in usr/bin too, which might just mess things up. I’m not sure, I never built it that way myself. It does sound like a version mismatch somehow. If you don’t need the latest version of Csound, why not just download and use 6.12, that particular version seemed to run very well for me. I still revert back to it whenever I need to hit the reset button. You know that moment when you think,

uh-oh, I just destroyed all that was good in that particular version

:slight_smile:

1 Like

Will give it a shot and let you know the results, is the source code for 6.12 on Github still? We need to build from source so we can use it in C++ I think, still trying to get my head around how Macs handle building stuff I miss linux :((((
EDIT: OMG I just realised Csound on my system and I assume Ryans is actually in /usr/local/Frameworks, not /Library/Frameworks, have we just identified the issue?

Yeah that was the problem on my system anyway, so brew builds csound to /usr/local/Frameworks, if you copy the folder over the aliases will get all mangled, so going through and replacing the aliases with copies of the aliased folders will do it, would it be much work to add /usr/local/Frameworks as a secondary search path for Csound in Cabbage when installing Rory? Idk is it a broad enough issue but it does mean that it isn’t compatible with Csound built via Brew out of the box
Cheers for all your help!!!
Edit: Here is my resulting /Library/Frameworks/CsoundLib64.framework folder if anyone needs this thread in future, should just be able to unzip and paste into /Library/Frameworks (I think)

I’m a little confused as to why you feel you must build the sources yourself? I generally tend to stay away from the brew build as it installs differently to the main package, as you have just seen. In fact, what I do is build my own OSX Csound remotely using Dev-ops Azure. It builds and produces OSX packages for me which I can install just as I would a regular Csound OSX package. Seems a lot cleaner than messing around with local builds. And also possible in this way to maintain several different builds, as each one will have its own git branch.

Oh that’s my bad, for some reason I had it in my head that to get the headers and stuff and all features to use from c++ I needed to build from source which I guess in hindsight doesn’t make that much sense hahahah

Yeah, the headers ship with each of the platform installers. And the only thing you need to link to is Csound64Lib. That is unless you are modifying the core system…

1 Like

Lol well I def overcomplicated it, as for distributing a project that uses the Csound API, would it be best to install Csound64Lib when installing the project? or to distribute with it in the folder and just reference it from there for the headers?

Both should work fine. To save yourself some hassle you can just add Csound as an optional install in your package installer. This is what Cabbage does. But if you don’t want to ever have problems with conflicting versions, you’re better off putting it into the resources folder of you app bundle and relinking to your app. This is what I’d recommend for distributing plugins.

1 Like

Just to close this off, me and Ryan finally sorted this earlier, brew installs it to /usr/local/Frameworks by default, so we cd-d to applications, and relinked cabbage to that directory with install_name_tool -change /Library/Frameworks/CsoundLib64.framework/CsoundLib64 /usr/local/Frameworks/CsoundLib64.framework/CsoundLib64 Cabbage
Thanks again for your help!!!

1 Like