RustAudio / vst-rs

VST 2.4 API implementation in rust. Create plugins or hosts. Previously rust-vst on the RustDSP group.
MIT License
1.04k stars 91 forks source link

Ableton 11 on M1 Mac is unable to find vst #175

Closed frikksol closed 2 years ago

frikksol commented 2 years ago

Hello,

I just started a project where I wanted to write a VST in Rust, and found this library, which first of all I think is really great! Kudos guys :)

I do however have an issue with Ableton 11.0.2 where the sample VST does not show up. I have of course rescanned Plugins, verified that I place the VST in the correct folder, used the osx_vst_bundler.sh script and restarted Ableton etc. I tested using PluginDoctor and it works perfectly there.

Could there be an issue here related to M1 macs? I am happy to help out with debugging that if that might be the case, but I am a bit unsure where to start. Apart from that I am not sure what can be possible issues, but happy to help out if needed.

Thanks for the awesome work!

frikksol commented 2 years ago

Turns out this was in fact a M1 issue with Ableton, and has nothing to do with vst-rs at all. If someone else finds themselves here I'll write a guide on how to solve this:

In my case the problem was that Ableton is x86 while I build my VST for Arm.

You can verify that Ableton is x86 by going to ~/Applications and right click on Ableton and choose Get Info. If Application (Intel) is the value for Kind then your instance of Ableton is x86

Now I chose to build the VST for intel instead, and this makes it possible for Ableton to find the VST. Luckily rust is awesome at cross compiling so this was a breeze.

To install the apple x86 toolchain run the following terminal command rustup target install x86_64-apple-darwin

Now you have to choose to use the x86 toolchain. You can EITHER set the default to x86 by running the following terminal command rustup default stable-x86_64-apple-darwin then compile again by running cargo build --release

OR

define the target on build time by running cargo build --target x86_64-apple-darwin --release PS: when defining the target on build time, the output folder of the built library changes to target/x86_64-apple-darwin/release so the osx bundling script will no longer work unless you update it to reflect this change.

Now all you need to do is bundle the package and copy it to the VST location on your Mac, rescan for plugins and you're ready to go.

chaosprint commented 2 years ago

Turns out this was in fact a M1 issue with Ableton, and has nothing to do with vst-rs at all. If someone else finds themselves here I'll write a guide on how to solve this:

In my case the problem was that Ableton is x86 while I build my VST for Arm.

You can verify that Ableton is x86 by going to ~/Applications and right click on Ableton and choose Get Info. If Application (Intel) is the value for Kind then your instance of Ableton is x86

Now I chose to build the VST for intel instead, and this makes it possible for Ableton to find the VST. Luckily rust is awesome at cross compiling so this was a breeze.

To install the apple x86 toolchain run the following terminal command rustup target install x86_64-apple-darwin

Now you have to choose to use the x86 toolchain. You can EITHER set the default to x86 by running the following terminal command rustup default stable-x86_64-apple-darwin then compile again by running cargo build --release

OR

define the target on build time by running cargo build --target x86_64-apple-darwin --release PS: when defining the target on build time, the output folder of the built library changes to target/x86_64-apple-darwin/release so the osx bundling script will no longer work unless you update it to reflect this change.

Now all you need to do is bundle the package and copy it to the VST location on your Mac, rescan for plugins and you're ready to go.

Problems solved.