flathub / com.obsproject.Studio

This repository is no longer used to build OBS. Issues should be reported at https://github.com/obsproject/obs-studio
https://github.com/obsproject/obs-studio
29 stars 21 forks source link

Unclear where flatpak of OBS looks for VST plugins. #146

Open develroo opened 2 years ago

develroo commented 2 years ago

So following the guide here which lists a whole load of places where it coudl live in package installs, none of them seem to work.

When examining the flatpak with Flatseal I can see that the VST path environment has been set to:

VST_PATH=/app/extensions/Plugins/lxvst

So I created ~/.config/obs-studio/extensions/Plugins/lxvst dropped my .so in there and restarted obs but still no sign of the VST plugin in the drop down.

So where exactly should the VST plugin library go ?

Thanks.

TingPing commented 2 years ago

CC @hfiguiere ?

develroo commented 2 years ago

OK follow up.

I did some more digging and see that the Plugins paths become merged and that OBS flatpak pulls from the LinuxAudio stack. So on a hunch I decided to flatpak install org.freedesktop.LinuxAudio.Plugins.x42Plugins

I then entered the running container using flatpak enter com.obsproject.Studio sh and nosed around.

Sure enough, the /app/extensions/Plugins/x42Plugins folder was there.

So that is cool, they automatically get added to the flatpak. However, it does not solve my original problem, as the lxvst folder was not even present. So again, how do I add a 64bit .so to the search path?

For reference, this is the vst Plugin I am trying to install

tinywrkb commented 2 years ago

@develroo

Have you tried overriding the env var? Something like

$ flatpak run --env=VST_PATH="/app/extensions/Plugins/lxvst:~/.config/obs-studio/extensions/Plugins/lxvst" com.obsproject.Studio

For more details about supported plugins, see org.freedesktop.LinuxAudio.BaseExtension.

... dropped my .so in there

Good luck with this. Do you know that these libs are usually dynamically linked against other shared libs and need to be ABI compatible?

hfiguiere commented 2 years ago

org.freedesktop.LinuxAudio.Plugins.x42Plugins only contain LV2 plugins so it won't work

There there some plugins flatpak that have VST. flatpak search VST should help. OBS should find them if they are installed.

As for whether OBS can find stuff in ~/.vst or ~/.lxvst (don't know which one), I haven't really tried.

hfiguiere commented 2 years ago

Now, be aware that if you run OBS in Wayland, I'm 100% positive that the plugin UI will crash along with OBS as it expect an X11 windows. I mentionned this in the PR back then.

We are stuck in a paradox where Audio plugins expect X11 and it's Wayland.

develroo commented 2 years ago

@hfiguiere Yes I have found that out. The plugins will work but the UI will crash instantly in Wayland. But you can run them in X and the settings are saved for when running in wayland.

@tinywrkb Yes one of the first things I tried was using flatseal to overwrite the ENV path variable. But it seemed to do nothing. But now I am wondering looking at the other plugins if my layout was correct? I will try again and see

Good luck with this. Do you know that these libs are usually dynamically linked against other shared libs and need to be ABI compatible?

Your guess is as good as mine. I am no audiophile and have never played with VST before. I just saw the filters button in OBS and saw the VST 2.x plugin and figure ok how do I do this?

Speaking of plugins though, and this is going slightly off track but still relevant to flatpak use. How do I install any of the plugins listed on the forums. I followed this guide which seems logical but when I do that no plugins appear.

 /.var/app/com.obsproject.Studio

$ find plugins/
plugins/
plugins/downstream-keyer
plugins/downstream-keyer/bin
plugins/downstream-keyer/bin/64bit
plugins/downstream-keyer/bin/64bit/downstream-keyer.so
plugins/downstream-keyer/data
plugins/downstream-keyer/data/locale
plugins/downstream-keyer/data/locale/en-US.ini
plugins/droidcam-obs
plugins/droidcam-obs/bin
plugins/droidcam-obs/bin/64bit
plugins/droidcam-obs/bin/64bit/droidcam-obs.so
plugins/droidcam-obs/data
plugins/droidcam-obs/data/locale
plugins/droidcam-obs/data/locale/de-DE.ini
plugins/droidcam-obs/data/locale/en-US.ini
plugins/droidcam-obs/data/locale/nl-NL.ini
plugins/droidcam-obs/data/locale/ru-RU.ini

Really wish there was plugin manager built into OBS ;)

hfiguiere commented 2 years ago

It's in ~/.var/app/com.obsproject.Studio (HOME directory). It's not in the sandbox.

Ideally OBS (upstream) would have "Open Plugins Folder" that would open the directory in the file manager.

develroo commented 2 years ago

Yup I have tried there. (see above for the Plugins and further about the VST_PATH) but actually getting the VST plugin to be detected is still not working. I tried pointing it specifically at the folder with the VST_PATH variable and have arranged it just like I see it in the sandbox.

What I see currently is

sh-5.1$ pwd
/app/extensions/Plugins
sh-5.1$ ls -la
total 0
drwxr-xr-x 9 user   user    180 Aug  5 14:44 .
drwxr-xr-x 3 nfsnobody nfsnobody   21 Jan  1  1970 ..
drwxr-xr-x 5 nfsnobody nfsnobody   74 Aug  4 09:39 ArtyFX
drwxr-xr-x 7 nfsnobody nfsnobody   99 Aug  4 09:40 DISTRHO-Ports
drwxr-xr-x 7 nfsnobody nfsnobody  101 Aug  4 09:30 LSP
drwxr-xr-x 6 nfsnobody nfsnobody   85 Aug  4 09:20 Yoshimi
drwxr-xr-x 7 nfsnobody nfsnobody  101 Aug  4 09:34 ZamPlugins
drwxr-xr-x 2 user   user   1080 Aug  5 14:44 lxvst
drwxr-xr-x 5 nfsnobody nfsnobody   74 Aug  4 09:13 x42Plugins

The actual lxvst folder is full of symlinks to the various packages.

drwxr-xr-x 2 user user 1080 Aug  5 14:52 .
drwxr-xr-x 9 user user  180 Aug  5 14:52 ..
lrwxrwxrwx 1 user user   60 Aug  5 14:52 DISTRHO-Dexed.so -> /app/extensions/Plugins/DISTRHO-Ports/lxvst/DISTRHO-Dexed.so
lrwxrwxrwx 1 user user   54 Aug  5 14:52 EasySSP.so -> /app/extensions/Plugins/DISTRHO-Ports/lxvst/EasySSP.so
lrwxrwxrwx 1 user user   54 Aug  5 14:52 HiReSam.so -> /app/extensions/Plugins/DISTRHO-Ports/lxvst/HiReSam.so
lrwxrwxrwx 1 user user   54 Aug  5 14:52 JuceOPL.so -> /app/extensions/Plugins/DISTRHO-Ports/lxvst/JuceOPL.so
lrwxrwxrwx 1 user user   58 Aug  5 14:52 KlangFalter.so -> /app/extensions/Plugins/DISTRHO-Ports/lxvst/KlangFalter.so
lrwxrwxrwx 1 user user   56 Aug  5 14:52 LUFSMeter.so -> /app/extensions/Plugins/DISTRHO-Ports/lxvst/LUFSMeter.so
lrwxrwxrwx 1 user user   61 Aug  5 14:52 LUFSMeterMulti.so -> /app/extensions/Plugins/DISTRHO-Ports/lxvst/LUFSMeterMulti.so
lrwxrwxrwx 1 user user   55 Aug  5 14:52 Luftikus.so -> /app/extensions/Plugins/DISTRHO-Ports/lxvst/Luftikus.so
lrwxrwxrwx 1 user user   51 Aug  5 14:52 Obxd.so -> /app/extensions/Plugins/DISTRHO-Ports/lxvst/Obxd.so
lrwxrwxrwx 1 user user   59 Aug  5 14:52 PitchedDelay.so -> /app/extensions/Plugins/DISTRHO-Ports/lxvst/PitchedDelay.so
lrwxrwxrwx 1 user user   53 Aug  5 14:52 ReFine.so -> /app/extensions/Plugins/DISTRHO-Ports/lxvst/ReFine.so
lrwxrwxrwx 1 user user   69 Aug  5 14:52 StereoSourceSeparation.so -> /app/extensions/Plugins/DISTRHO-Ports/lxvst/StereoSourceSeparation.so
lrwxrwxrwx 1 user user   56 Aug  5 14:52 SwankyAmp.so -> /app/extensions/Plugins/DISTRHO-Ports/lxvst/SwankyAmp.so
lrwxrwxrwx 1 user user   56 Aug  5 14:52 TAL-Dub-3.so -> /app/extensions/Plugins/DISTRHO-Ports/lxvst/TAL-Dub-3.so
lrwxrwxrwx 1 user user   59 Aug  5 14:52 TAL-Filter-2.so -> /app/extensions/Plugins/DISTRHO-Ports/lxvst/TAL-Filter-2.so
lrwxrwxrwx 1 user user   57 Aug  5 14:52 TAL-Filter.so -> /app/extensions/Plugins/DISTRHO-Ports/lxvst/TAL-Filter.so
lrwxrwxrwx 1 user user   61 Aug  5 14:52 TAL-NoiseMaker.so -> /app/extensions/Plugins/DISTRHO-Ports/lxvst/TAL-NoiseMaker.so
lrwxrwxrwx 1 user user   59 Aug  5 14:52 TAL-Reverb-2.so -> /app/extensions/Plugins/DISTRHO-Ports/lxvst/TAL-Reverb-2.so
lrwxrwxrwx 1 user user   59 Aug  5 14:52 TAL-Reverb-3.so -> /app/extensions/Plugins/DISTRHO-Ports/lxvst/TAL-Reverb-3.so
lrwxrwxrwx 1 user user   57 Aug  5 14:52 TAL-Reverb.so -> /app/extensions/Plugins/DISTRHO-Ports/lxvst/TAL-Reverb.so
lrwxrwxrwx 1 user user   60 Aug  5 14:52 TAL-Vocoder-2.so -> /app/extensions/Plugins/DISTRHO-Ports/lxvst/TAL-Vocoder-2.so
lrwxrwxrwx 1 user user   53 Aug  5 14:52 Temper.so -> /app/extensions/Plugins/DISTRHO-Ports/lxvst/Temper.so
lrwxrwxrwx 1 user user   58 Aug  5 14:52 TheFunction.so -> /app/extensions/Plugins/DISTRHO-Ports/lxvst/TheFunction.so
lrwxrwxrwx 1 user user   57 Aug  5 14:52 ThePilgrim.so -> /app/extensions/Plugins/DISTRHO-Ports/lxvst/ThePilgrim.so
lrwxrwxrwx 1 user user   59 Aug  5 14:52 Wolpertinger.so -> /app/extensions/Plugins/DISTRHO-Ports/lxvst/Wolpertinger.so
lrwxrwxrwx 1 user user   57 Aug  5 14:52 ZaMaximX2-vst.so -> /app/extensions/Plugins/ZamPlugins/lxvst/ZaMaximX2-vst.so
lrwxrwxrwx 1 user user   59 Aug  5 14:52 ZaMultiComp-vst.so -> /app/extensions/Plugins/ZamPlugins/lxvst/ZaMultiComp-vst.so
lrwxrwxrwx 1 user user   61 Aug  5 14:52 ZaMultiCompX2-vst.so -> /app/extensions/Plugins/ZamPlugins/lxvst/ZaMultiCompX2-vst.so
lrwxrwxrwx 1 user user   58 Aug  5 14:52 ZamAutoSat-vst.so -> /app/extensions/Plugins/ZamPlugins/lxvst/ZamAutoSat-vst.so
lrwxrwxrwx 1 user user   55 Aug  5 14:52 ZamComp-vst.so -> /app/extensions/Plugins/ZamPlugins/lxvst/ZamComp-vst.so
lrwxrwxrwx 1 user user   57 Aug  5 14:52 ZamCompX2-vst.so -> /app/extensions/Plugins/ZamPlugins/lxvst/ZamCompX2-vst.so
lrwxrwxrwx 1 user user   56 Aug  5 14:52 ZamDelay-vst.so -> /app/extensions/Plugins/ZamPlugins/lxvst/ZamDelay-vst.so
lrwxrwxrwx 1 user user   60 Aug  5 14:52 ZamDynamicEQ-vst.so -> /app/extensions/Plugins/ZamPlugins/lxvst/ZamDynamicEQ-vst.so
lrwxrwxrwx 1 user user   54 Aug  5 14:52 ZamEQ2-vst.so -> /app/extensions/Plugins/ZamPlugins/lxvst/ZamEQ2-vst.so
lrwxrwxrwx 1 user user   56 Aug  5 14:52 ZamGEQ31-vst.so -> /app/extensions/Plugins/ZamPlugins/lxvst/ZamGEQ31-vst.so
lrwxrwxrwx 1 user user   55 Aug  5 14:52 ZamGate-vst.so -> /app/extensions/Plugins/ZamPlugins/lxvst/ZamGate-vst.so
lrwxrwxrwx 1 user user   57 Aug  5 14:52 ZamGateX2-vst.so -> /app/extensions/Plugins/ZamPlugins/lxvst/ZamGateX2-vst.so
lrwxrwxrwx 1 user user   57 Aug  5 14:52 ZamGrains-vst.so -> /app/extensions/Plugins/ZamPlugins/lxvst/ZamGrains-vst.so
lrwxrwxrwx 1 user user   57 Aug  5 14:52 ZamHeadX2-vst.so -> /app/extensions/Plugins/ZamPlugins/lxvst/ZamHeadX2-vst.so
lrwxrwxrwx 1 user user   56 Aug  5 14:52 ZamPhono-vst.so -> /app/extensions/Plugins/ZamPlugins/lxvst/ZamPhono-vst.so
lrwxrwxrwx 1 user user   55 Aug  5 14:52 ZamTube-vst.so -> /app/extensions/Plugins/ZamPlugins/lxvst/ZamTube-vst.so
lrwxrwxrwx 1 user user   55 Aug  5 14:52 ZamVerb-vst.so -> /app/extensions/Plugins/ZamPlugins/lxvst/ZamVerb-vst.so
lrwxrwxrwx 1 user user   67 Aug  5 14:52 drowaudio-distortion.so -> /app/extensions/Plugins/DISTRHO-Ports/lxvst/drowaudio-distortion.so
lrwxrwxrwx 1 user user   73 Aug  5 14:52 drowaudio-distortionshaper.so -> /app/extensions/Plugins/DISTRHO-Ports/lxvst/drowaudio-distortionshaper.so
lrwxrwxrwx 1 user user   64 Aug  5 14:52 drowaudio-flanger.so -> /app/extensions/Plugins/DISTRHO-Ports/lxvst/drowaudio-flanger.so
lrwxrwxrwx 1 user user   63 Aug  5 14:52 drowaudio-reverb.so -> /app/extensions/Plugins/DISTRHO-Ports/lxvst/drowaudio-reverb.so
lrwxrwxrwx 1 user user   64 Aug  5 14:52 drowaudio-tremolo.so -> /app/extensions/Plugins/DISTRHO-Ports/lxvst/drowaudio-tremolo.so
lrwxrwxrwx 1 user user   56 Aug  5 14:52 drumsynth.so -> /app/extensions/Plugins/DISTRHO-Ports/lxvst/drumsynth.so
lrwxrwxrwx 1 user user   53 Aug  5 14:52 eqinox.so -> /app/extensions/Plugins/DISTRHO-Ports/lxvst/eqinox.so
lrwxrwxrwx 1 user user   58 Aug  5 14:52 lsp-plugins-lxvst-1.1.30 -> /app/extensions/Plugins/LSP/lxvst/lsp-plugins-lxvst-1.1.30
lrwxrwxrwx 1 user user   50 Aug  5 14:52 vex.so -> /app/extensions/Plugins/DISTRHO-Ports/lxvst/vex.so
lrwxrwxrwx 1 user user   55 Aug  5 14:52 vitalium.so -> /app/extensions/Plugins/DISTRHO-Ports/lxvst/vitalium.so

Now of course the sandbox being a sandbox, I can manually copy the plugin to the lxvst folder but as OBS does not seem to rescan it, and it will be lost on restart so there is no point.

Really I know a little about flatpak but I am unsure why even adding things to ~/.var/app/com.obsproject/Studio is being ignored as well

develroo commented 2 years ago

BTW for completeness The plugin I am trying to install (see above) is a dynamic library and seems all dependencies are there on the system.


file Voc.so 
Voc.so: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked, BuildID[sha1]=5ca034ee0301363bb712627ea4454c4736ca7502, stripped
[user@host lxvst]$ ldd Voc.so 
    linux-vdso.so.1 (0x00007ffe8bb77000)
    libX11.so.6 => /lib/x86_64-linux-gnu/libX11.so.6 (0x00007f1bc971b000)
    libXext.so.6 => /lib/x86_64-linux-gnu/libXext.so.6 (0x00007f1bc9706000)
    libfreetype.so.6 => /lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007f1bc9643000)
    libwebkit2gtk-4.0.so.37 => /lib/x86_64-linux-gnu/libwebkit2gtk-4.0.so.37 (0x00007f1bc5f7c000)
    libgtk-3.so.0 => /lib/x86_64-linux-gnu/libgtk-3.so.0 (0x00007f1bc57ca000)
    libgobject-2.0.so.0 => /lib/x86_64-linux-gnu/libgobject-2.0.so.0 (0x00007f1bc5770000)
    libglib-2.0.so.0 => /lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007f1bc563f000)
    libcurl.so.4 => /lib/x86_64-linux-gnu/libcurl.so.4 (0x00007f1bc55a4000)
    librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f1bc5599000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f1bc5593000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f1bc5571000)
    libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f1bc53a4000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f1bc525e000)
    libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f1bc5244000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f1bc507f000)
    libxcb.so.1 => /lib/x86_64-linux-gnu/libxcb.so.1 (0x00007f1bc5054000)
    libpng16.so.16 => /lib/x86_64-linux-gnu/libpng16.so.16 (0x00007f1bc501a000)
    libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f1bc4ffd000)
    libbrotlidec.so.1 => /lib/x86_64-linux-gnu/libbrotlidec.so.1 (0x00007f1bc4fed000)
    libwpe-1.0.so.1 => /lib/x86_64-linux-gnu/libwpe-1.0.so.1 (0x00007f1bc4fe2000)
    libWPEBackend-fdo-1.0.so.1 => /lib/x86_64-linux-gnu/libWPEBackend-fdo-1.0.so.1 (0x00007f1bc4fcd000)
    libGL.so.1 => /lib/x86_64-linux-gnu/libGL.so.1 (0x00007f1bc4f46000)
    libEGL.so.1 => /lib/x86_64-linux-gnu/libEGL.so.1 (0x00007f1bc4f31000)
    libnotify.so.4 => /lib/x86_64-linux-gnu/libnotify.so.4 (0x00007f1bc4f27000)
    libgdk_pixbuf-2.0.so.0 => /lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so.0 (0x00007f1bc4eff000)
    libgio-2.0.so.0 => /lib/x86_64-linux-gnu/libgio-2.0.so.0 (0x00007f1bc4d21000)
    libjavascriptcoregtk-4.0.so.18 => /lib/x86_64-linux-gnu/libjavascriptcoregtk-4.0.so.18 (0x00007f1bc3487000)
    libgdk-3.so.0 => /lib/x86_64-linux-gnu/libgdk-3.so.0 (0x00007f1bc3382000)
    libpango-1.0.so.0 => /lib/x86_64-linux-gnu/libpango-1.0.so.0 (0x00007f1bc3330000)
    libharfbuzz.so.0 => /lib/x86_64-linux-gnu/libharfbuzz.so.0 (0x00007f1bc3248000)
    libcairo.so.2 => /lib/x86_64-linux-gnu/libcairo.so.2 (0x00007f1bc3121000)
    libxml2.so.2 => /lib/x86_64-linux-gnu/libxml2.so.2 (0x00007f1bc2f73000)
    libsqlite3.so.0 => /lib/x86_64-linux-gnu/libsqlite3.so.0 (0x00007f1bc2e30000)
    libxslt.so.1 => /lib/x86_64-linux-gnu/libxslt.so.1 (0x00007f1bc2dee000)
    libwoff2dec.so.1.0.2 => /lib/x86_64-linux-gnu/libwoff2dec.so.1.0.2 (0x00007f1bc2de1000)
    libfontconfig.so.1 => /lib/x86_64-linux-gnu/libfontconfig.so.1 (0x00007f1bc2d9b000)
    libharfbuzz-icu.so.0 => /lib/x86_64-linux-gnu/libharfbuzz-icu.so.0 (0x00007f1bc2d94000)
    libgcrypt.so.20 => /lib/x86_64-linux-gnu/libgcrypt.so.20 (0x00007f1bc2c74000)
    libgstapp-1.0.so.0 => /lib/x86_64-linux-gnu/libgstapp-1.0.so.0 (0x00007f1bc2c62000)
    libgstbase-1.0.so.0 => /lib/x86_64-linux-gnu/libgstbase-1.0.so.0 (0x00007f1bc2be2000)
    libgstreamer-1.0.so.0 => /lib/x86_64-linux-gnu/libgstreamer-1.0.so.0 (0x00007f1bc2a99000)
    libgstpbutils-1.0.so.0 => /lib/x86_64-linux-gnu/libgstpbutils-1.0.so.0 (0x00007f1bc2a5b000)
    libgstaudio-1.0.so.0 => /lib/x86_64-linux-gnu/libgstaudio-1.0.so.0 (0x00007f1bc29db000)
    libgsttag-1.0.so.0 => /lib/x86_64-linux-gnu/libgsttag-1.0.so.0 (0x00007f1bc299b000)
    libgstvideo-1.0.so.0 => /lib/x86_64-linux-gnu/libgstvideo-1.0.so.0 (0x00007f1bc28e2000)
    libgstgl-1.0.so.0 => /lib/x86_64-linux-gnu/libgstgl-1.0.so.0 (0x00007f1bc2866000)
    libgstfft-1.0.so.0 => /lib/x86_64-linux-gnu/libgstfft-1.0.so.0 (0x00007f1bc2859000)
    libjpeg.so.62 => /lib/x86_64-linux-gnu/libjpeg.so.62 (0x00007f1bc27d5000)
    libopenjp2.so.7 => /lib/x86_64-linux-gnu/libopenjp2.so.7 (0x00007f1bc2776000)
    libwebpdemux.so.2 => /lib/x86_64-linux-gnu/libwebpdemux.so.2 (0x00007f1bc2770000)
    libwebp.so.6 => /lib/x86_64-linux-gnu/libwebp.so.6 (0x00007f1bc2707000)
    libsoup-2.4.so.1 => /lib/x86_64-linux-gnu/libsoup-2.4.so.1 (0x00007f1bc2668000)
    libatk-1.0.so.0 => /lib/x86_64-linux-gnu/libatk-1.0.so.0 (0x00007f1bc263e000)
    libenchant-2.so.2 => /lib/x86_64-linux-gnu/libenchant-2.so.2 (0x00007f1bc2630000)
    libgmodule-2.0.so.0 => /lib/x86_64-linux-gnu/libgmodule-2.0.so.0 (0x00007f1bc2628000)
    libsecret-1.so.0 => /lib/x86_64-linux-gnu/libsecret-1.so.0 (0x00007f1bc25c8000)
    libtasn1.so.6 => /lib/x86_64-linux-gnu/libtasn1.so.6 (0x00007f1bc25b2000)
    libhyphen.so.0 => /lib/x86_64-linux-gnu/libhyphen.so.0 (0x00007f1bc25ab000)
    libXcomposite.so.1 => /lib/x86_64-linux-gnu/libXcomposite.so.1 (0x00007f1bc25a6000)
    libXdamage.so.1 => /lib/x86_64-linux-gnu/libXdamage.so.1 (0x00007f1bc25a1000)
    libwayland-server.so.0 => /lib/x86_64-linux-gnu/libwayland-server.so.0 (0x00007f1bc2588000)
    libwayland-egl.so.1 => /lib/x86_64-linux-gnu/libwayland-egl.so.1 (0x00007f1bc2583000)
    libwayland-client.so.0 => /lib/x86_64-linux-gnu/libwayland-client.so.0 (0x00007f1bc2572000)
    libmanette-0.2.so.0 => /lib/x86_64-linux-gnu/libmanette-0.2.so.0 (0x00007f1bc2542000)
    libseccomp.so.2 => /lib/x86_64-linux-gnu/libseccomp.so.2 (0x00007f1bc251f000)
    libicui18n.so.67 => /lib/x86_64-linux-gnu/libicui18n.so.67 (0x00007f1bc2219000)
    libicuuc.so.67 => /lib/x86_64-linux-gnu/libicuuc.so.67 (0x00007f1bc202e000)
    libsystemd.so.0 => /lib/x86_64-linux-gnu/libsystemd.so.0 (0x00007f1bc1f79000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f1bca4ad000)
    libpangocairo-1.0.so.0 => /lib/x86_64-linux-gnu/libpangocairo-1.0.so.0 (0x00007f1bc1f68000)
    libXi.so.6 => /lib/x86_64-linux-gnu/libXi.so.6 (0x00007f1bc1f56000)
    libXfixes.so.3 => /lib/x86_64-linux-gnu/libXfixes.so.3 (0x00007f1bc1f4e000)
    libcairo-gobject.so.2 => /lib/x86_64-linux-gnu/libcairo-gobject.so.2 (0x00007f1bc1f40000)
    libatk-bridge-2.0.so.0 => /lib/x86_64-linux-gnu/libatk-bridge-2.0.so.0 (0x00007f1bc1f09000)
    libepoxy.so.0 => /lib/x86_64-linux-gnu/libepoxy.so.0 (0x00007f1bc1dda000)
    libfribidi.so.0 => /lib/x86_64-linux-gnu/libfribidi.so.0 (0x00007f1bc1dbe000)
    libpangoft2-1.0.so.0 => /lib/x86_64-linux-gnu/libpangoft2-1.0.so.0 (0x00007f1bc1da5000)
    libffi.so.7 => /lib/x86_64-linux-gnu/libffi.so.7 (0x00007f1bc1d99000)
    libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f1bc1d24000)
    libnghttp2.so.14 => /lib/x86_64-linux-gnu/libnghttp2.so.14 (0x00007f1bc1cf7000)
    libidn2.so.0 => /lib/x86_64-linux-gnu/libidn2.so.0 (0x00007f1bc1cd6000)
    librtmp.so.1 => /lib/x86_64-linux-gnu/librtmp.so.1 (0x00007f1bc1cb7000)
    libssh2.so.1 => /lib/x86_64-linux-gnu/libssh2.so.1 (0x00007f1bc1c82000)
    libpsl.so.5 => /lib/x86_64-linux-gnu/libpsl.so.5 (0x00007f1bc1c6e000)
    libssl.so.1.1 => /lib/x86_64-linux-gnu/libssl.so.1.1 (0x00007f1bc1bd9000)
    libcrypto.so.1.1 => /lib/x86_64-linux-gnu/libcrypto.so.1.1 (0x00007f1bc18e5000)
    libgssapi_krb5.so.2 => /lib/x86_64-linux-gnu/libgssapi_krb5.so.2 (0x00007f1bc1892000)
    libldap_r-2.4.so.2 => /lib/x86_64-linux-gnu/libldap_r-2.4.so.2 (0x00007f1bc183c000)
    liblber-2.4.so.2 => /lib/x86_64-linux-gnu/liblber-2.4.so.2 (0x00007f1bc182b000)
    libXau.so.6 => /lib/x86_64-linux-gnu/libXau.so.6 (0x00007f1bc1824000)
    libXdmcp.so.6 => /lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007f1bc161e000)
    libbrotlicommon.so.1 => /lib/x86_64-linux-gnu/libbrotlicommon.so.1 (0x00007f1bc15fb000)
    libxkbcommon.so.0 => /lib/x86_64-linux-gnu/libxkbcommon.so.0 (0x00007f1bc15b8000)
    libGLdispatch.so.0 => /lib/x86_64-linux-gnu/libGLdispatch.so.0 (0x00007f1bc1500000)
    libGLX.so.0 => /lib/x86_64-linux-gnu/libGLX.so.0 (0x00007f1bc14ca000)
    libmount.so.1 => /lib/x86_64-linux-gnu/libmount.so.1 (0x00007f1bc146d000)
    libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007f1bc1441000)
    libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00007f1bc1427000)
    libXinerama.so.1 => /lib/x86_64-linux-gnu/libXinerama.so.1 (0x00007f1bc1422000)
    libXrandr.so.2 => /lib/x86_64-linux-gnu/libXrandr.so.2 (0x00007f1bc1215000)
    libXcursor.so.1 => /lib/x86_64-linux-gnu/libXcursor.so.1 (0x00007f1bc1208000)
    libwayland-cursor.so.0 => /lib/x86_64-linux-gnu/libwayland-cursor.so.0 (0x00007f1bc11ff000)
    libthai.so.0 => /lib/x86_64-linux-gnu/libthai.so.0 (0x00007f1bc11f4000)
    libgraphite2.so.3 => /lib/x86_64-linux-gnu/libgraphite2.so.3 (0x00007f1bc11c8000)
    libpixman-1.so.0 => /lib/x86_64-linux-gnu/libpixman-1.so.0 (0x00007f1bc111b000)
    libxcb-shm.so.0 => /lib/x86_64-linux-gnu/libxcb-shm.so.0 (0x00007f1bc1116000)
    libxcb-render.so.0 => /lib/x86_64-linux-gnu/libxcb-render.so.0 (0x00007f1bc1107000)
    libXrender.so.1 => /lib/x86_64-linux-gnu/libXrender.so.1 (0x00007f1bc0efd000)
    liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007f1bc0ed5000)
    libwoff2common.so.1.0.2 => /lib/x86_64-linux-gnu/libwoff2common.so.1.0.2 (0x00007f1bc0ece000)
    libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007f1bc0e9f000)
    libuuid.so.1 => /lib/x86_64-linux-gnu/libuuid.so.1 (0x00007f1bc0e96000)
    libgpg-error.so.0 => /lib/x86_64-linux-gnu/libgpg-error.so.0 (0x00007f1bc0e70000)
    libunwind.so.8 => /lib/x86_64-linux-gnu/libunwind.so.8 (0x00007f1bc0e55000)
    libdw.so.1 => /lib/x86_64-linux-gnu/libdw.so.1 (0x00007f1bc0daa000)
    liborc-0.4.so.0 => /lib/x86_64-linux-gnu/liborc-0.4.so.0 (0x00007f1bc0d26000)
    libgstallocators-1.0.so.0 => /lib/x86_64-linux-gnu/libgstallocators-1.0.so.0 (0x00007f1bc0d1f000)
    libX11-xcb.so.1 => /lib/x86_64-linux-gnu/libX11-xcb.so.1 (0x00007f1bc0d1a000)
    libgudev-1.0.so.0 => /lib/x86_64-linux-gnu/libgudev-1.0.so.0 (0x00007f1bc0d0d000)
    libdrm.so.2 => /lib/x86_64-linux-gnu/libdrm.so.2 (0x00007f1bc0cf7000)
    libgbm.so.1 => /lib/x86_64-linux-gnu/libgbm.so.1 (0x00007f1bc0ce7000)
    libevdev.so.2 => /lib/x86_64-linux-gnu/libevdev.so.2 (0x00007f1bc0cc9000)
    libicudata.so.67 => /lib/x86_64-linux-gnu/libicudata.so.67 (0x00007f1bbf1b0000)
    libzstd.so.1 => /lib/x86_64-linux-gnu/libzstd.so.1 (0x00007f1bbf0d3000)
    liblz4.so.1 => /lib/x86_64-linux-gnu/liblz4.so.1 (0x00007f1bbf0b0000)
    libdbus-1.so.3 => /lib/x86_64-linux-gnu/libdbus-1.so.3 (0x00007f1bbf05b000)
    libatspi.so.0 => /lib/x86_64-linux-gnu/libatspi.so.0 (0x00007f1bbf024000)
    libunistring.so.2 => /lib/x86_64-linux-gnu/libunistring.so.2 (0x00007f1bbeea2000)
    libgnutls.so.30 => /lib/x86_64-linux-gnu/libgnutls.so.30 (0x00007f1bbeca0000)
    libhogweed.so.6 => /lib/x86_64-linux-gnu/libhogweed.so.6 (0x00007f1bbec57000)
    libnettle.so.8 => /lib/x86_64-linux-gnu/libnettle.so.8 (0x00007f1bbec0f000)
    libgmp.so.10 => /lib/x86_64-linux-gnu/libgmp.so.10 (0x00007f1bbeb8e000)
    libkrb5.so.3 => /lib/x86_64-linux-gnu/libkrb5.so.3 (0x00007f1bbeab4000)
    libk5crypto.so.3 => /lib/x86_64-linux-gnu/libk5crypto.so.3 (0x00007f1bbea84000)
    libcom_err.so.2 => /lib/x86_64-linux-gnu/libcom_err.so.2 (0x00007f1bbea7c000)
    libkrb5support.so.0 => /lib/x86_64-linux-gnu/libkrb5support.so.0 (0x00007f1bbea6d000)
    libsasl2.so.2 => /lib/x86_64-linux-gnu/libsasl2.so.2 (0x00007f1bbea50000)
    libbsd.so.0 => /lib/x86_64-linux-gnu/libbsd.so.0 (0x00007f1bbea39000)
    libblkid.so.1 => /lib/x86_64-linux-gnu/libblkid.so.1 (0x00007f1bbe9e8000)
    libpcre2-8.so.0 => /lib/x86_64-linux-gnu/libpcre2-8.so.0 (0x00007f1bbe94e000)
    libdatrie.so.1 => /lib/x86_64-linux-gnu/libdatrie.so.1 (0x00007f1bbe944000)
    libelf.so.1 => /lib/x86_64-linux-gnu/libelf.so.1 (0x00007f1bbe929000)
    libbz2.so.1.0 => /lib/x86_64-linux-gnu/libbz2.so.1.0 (0x00007f1bbe916000)
    libudev.so.1 => /lib/x86_64-linux-gnu/libudev.so.1 (0x00007f1bbe8ee000)
    libp11-kit.so.0 => /lib/x86_64-linux-gnu/libp11-kit.so.0 (0x00007f1bbe7b8000)
    libkeyutils.so.1 => /lib/x86_64-linux-gnu/libkeyutils.so.1 (0x00007f1bbe7b1000)
    libmd.so.0 => /lib/x86_64-linux-gnu/libmd.so.0 (0x00007f1bbe7a4000)
hfiguiere commented 2 years ago

This plugin is NOT build properly. Depending on webkit (and gtk3 by indirection ) is bound to fail.

hfiguiere commented 2 years ago

Have you tried overriding the env var? Something like

$ flatpak run --env=VST_PATH="/app/extensions/Plugins/lxvst:~/.config/obs-studio/extensions/Plugins/lxvst" com.obsproject.Studio

This is just wrong.

$ flatpak run --env=VST_PATH="/app/extensions/Plugins/lxvst:~/.lxvst" com.obsproject.Studio

And then drop the plugin in ~/.lxvst since it seem that OBS override everything if VST_PATH set. That's kind of unfortunate, but not as much as the fact it only support a standard that none can legally start to support anymore.

hfiguiere commented 2 years ago

(it that work I'll look at submitting a PR for it)

develroo commented 2 years ago

Well if you read above, that is precisely what I did with flatseal. To no avail.

flatseal

Furthermore, I am not even convinced the variable is even being passed properly. Because entering the container and typing export does not even show it as present.


sh-5.1$ export
export DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/1000/bus"
export DBUS_SYSTEM_BUS_ADDRESS="unix:path=/run/dbus/system_bus_socket"
export DISPLAY=":99.0"
export OLDPWD="/app/extensions"
export PULSE_CLIENTCONFIG="/run/user/1000/pulse/config"
export PULSE_SERVER="unix:/run/user/1000/pulse/native"
export PWD="/app/extensions/Plugins"
export SHLVL="1"
export XDG_RUNTIME_DIR="/run/user/1000"
David-Else commented 2 years ago

I was about to install OBS flatpak and need VST plugin support. I am hoping to use LinVST at a wrapper and use WIndows VSTs with wine. That works fine in Reaper at least.

Has anyone managed to:

  1. Run Linux VSTs in OBS?
  2. Run Windows emulated VSTs using Wine in OBS?

I don't want to waste days on this :) Thanks!

develroo commented 2 years ago

Well I have managed to load plugins via placing them in ~/.var/app/com.obsproject.Studio/plugins but LXVST extensions only seem to work if I install them as a flatpak.

So flatpak install org.freedesktop.LinuxAudio.Plugins.DragonflyReverb

Putting them in folder mentioned above seems not to work. You can list all the VST plugins available for your platform (x86 is not arm64) using flatpak search vst

EDIT: One Caveat. While you may be able to see and add VST as a filter.. you will most likely NOT be able to configure it if you are using Wayland. I am told it is because these are hardcoded legacy binaries, and it might not be possible to make them work on anything but X11. However it does seem when you do configure the plugin via Xorg in OBS on Xorg. The settings to stay when you then open OBS in Wayland.

TLDR; configure VST plugins in Xorg, Use them in both Xorg and Wayland.

David-Else commented 2 years ago

@develroo Cheers! I will investigate ~/.var/app/com.obsproject.Studio/plugins. I am only using X11 for now.

hfiguiere commented 2 years ago

VST are meant to be shared across application so the location you give is quite the opposite. There are conventions about having VST in a directory in the user's home directory, an addition to the path set for the flatpak installed one.

David-Else commented 2 years ago

@hfiguiere I would ideally point flatpak OBS to my plugins folder, how can I do that?

hfiguiere commented 2 years ago

it not flatpak. it's OBS.

David-Else commented 2 years ago

it not flatpak. it's OBS.

I am talking about the flatpak version of OBS, the subject of this thread. Can I simply point it to "$HOME/vstplugins"? Cheers.