Csound can't open external plugins

Hi everyone,

I’m on macOS 13.5.1 (M1 chip) running Csound 6.18. Csound isn’t able to load the plugins that are sitting in the plugins64 folder. Here’s the error I’m seeing when I run csound -z in the command line.

WARNING: could not open library '/Users/hallenj/Library/csound/6.0/plugins64/libjsfx.dylib' (-1)
WARNING: could not open library '/Users/hallenj/Library/csound/6.0/plugins64/libpathtools.dylib' (-1)
WARNING: could not open library '/Users/hallenj/Library/csound/6.0/plugins64/libelse.dylib' (-1)
WARNING: could not open library '/Users/hallenj/Library/csound/6.0/plugins64/libbeosc.dylib' (-1)
WARNING: could not open library '/Users/hallenj/Library/csound/6.0/plugins64/libcsound_webserver.dylib' (-1)
WARNING: could not open library '/Users/hallenj/Library/csound/6.0/plugins64/librisset.dylib' (-1)
WARNING: could not open library '/Users/hallenj/Library/csound/6.0/plugins64/libklib.dylib' (-1)
WARNING: could not open library '/Users/hallenj/Library/csound/6.0/plugins64/libsndmeta.dylib' (-1)
WARNING: could not open library '/Users/hallenj/Library/csound/6.0/plugins64/libpoly.dylib' (-1)

Is there a way I can adjust the permissions on these libraries so that Csound can open them? I’ve already tried giving the libraries the rwx permissions for all users via chmod, but Csound still can’t open them. Otherwise, is there an alternative way to load plugins on macOS?

Thanks!
Jason

It’s likely not a permissions issue but rather an architecture one. I may be wrong, but last I checked those libs were only published for x86_64.

Ah, thanks. Interestingly, I was able to get Michael Gogins’ libcsound_webserver.dylib running on my ARM64 laptop a year ago by placing it in the plugins64 directory. Something must have changed in the past year that causes it not to work anymore. Could be the macOS or Csound updates I’ve done, I suppose.

To check if the dylibs are of the correct platform, do


file libelse.dylib

That should return something like libelse.dylib: Mach-O 64-bit arm64 dynamically linked shared library..., which is what is returned from latest release. It is a security problem related to those plugins not being codesigned.

To authorize a .dylib do:

codesign --force -s - /path/to/dylib

Thanks Eduardo! Running file [dylib name] returns Mach-O 64-bit dynamically linked shared library x86_64 for all the dylibs. I installed csoundengine with pip, which I believe installed these dylibs with risset. Is there a way I can install the ARM64 versions of these dylibs?

Jason

I found the ARM64 versions of the plugins at Release v1.18.2 · csound-plugins/csound-plugins · GitHub. I downloaded the zip file, extracted it, and put the dylibs in the plugins64 folder. The zip file included most of the dylibs that had been installed for csoundengine, but I noticed that libjsfx.dylib and libsndmeta.dylib weren’t in the zip file so couldn’t be updated to the ARM64 versions.

When I ran csound -z I was getting this error message:

“[libname].dylib” can’t be opened because Apple cannot check it for malicious software.

So at least Csound is now recognizing these dylibs because they have the correct architecture. I ran codesign --force -s - /path/to/dylib for each dylib, and the output for each said [libname].dylib: replacing existing signature. However, I still get the same error message above when running csound -z.

Do you have any other suggestions for authorizing these dylibs?

Thanks!
Jason

Ah, I figured out a solution. I just right clicked on the dylibs and selected “Open”. This opened the dialog asking me to approve opening an executable that was downloaded from the internet. One I approved each of the dylibs they now load successfully in Csound.

libjsfx.dylib and libsndmeta.dylib still don’t load in Csound because they are on x86_64, so I’m not sure if that will impact the use of csoundengine.

I was able to import csoundengine in Python and successfully create an Engine().session(). Woohoo! Thanks for your help.

Jason