vamp-plugins / vampy-host

Python module to load and use native Vamp plugins for audio feature analysis.
https://pypi.python.org/pypi/vamp
Other
26 stars 6 forks source link

Can't load plugins from both "Programs Files (x86)" and "Program Files" #6

Closed bdyetton closed 4 years ago

bdyetton commented 4 years ago

I have both 32 bit Vamp Plugins in "Programs Files (x86)" and 64 bit plugins "Program Files", but when i run vamp.list_plugins() I can only see the 64 bit ones. There are no issues loading both with sonic visualizer. I'm using python 3.7 on windows 10.

bdyetton commented 4 years ago

Any chance on an update for this? Thanks!

cannam commented 4 years ago

Hi there - this is really an intrinsic limitation when loading binary plugins in-process. You can only load plugins compiled for the same processor architecture as the host process, so a 64-bit Python runtime can only load 64-bit plugins and a 32-bit Python can only load 32-bit ones.

The reason they work in Sonic Visualiser is that Sonic Visualiser has a substantial amount of machinery that causes all plugins to be loaded out-of-process, using a protocol known as Piper - and the Windows build of Sonic Visualiser actually comes with two separate out-of-process plugin helpers, a 32-bit one and a 64-bit one. This is quite a lot of effort to build and ship.

Most Vamp hosts don't do anything like this, so you will notice that (for example) the Sonic Annotator command-line host has the same limitations as you are experiencing with Python.

Your best bet would almost certainly be to get 64-bit builds of your plugins - are there any particular plugins you don't have access to 64-bit versions of?

bdyetton commented 4 years ago

Ah, this makes sense, thanks for being so clear! The majority of the plugins I'm looking to use are 32 bit, but perhaps i can find 64 bit versions for all. If not it sounds like I might be able to hack my way around this by calling the 32-bit version of python from the 64-bit version.