Giter VIP home page Giter VIP logo

Comments (93)

asimilon avatar asimilon commented on May 31, 2024 7

kurasu@09a22e4
Something that in progress.

from surge.

whydoubt avatar whydoubt commented on May 31, 2024 3

I haven't had time to work on Surge the last few days and may not get much time for several more. I would like to pass on some of what I have found, in hopes that it will inform others' investigations...

  • The VST3 SDK plugin samples (that have GUIs) all extend VST3Editor (SurgeGUIEditor extends VSTGUIEditor)
  • VST3Editor on Linux has an implementation of X11::IRunLoop for event processing. Copying that implementation into SurgeGUIEditor and hooking it up allowed me to see a few items in the GUI.
  • I had to update to the latest VST SDK to get some things working, but something about how the new SDK and Surge interact is causing additional issues with locating the bitmaps.
  • I think extending VST3Editor instead of VSTGUIEditor could help getting VST3 going (I believe it would take care of the runloop and bitmap locating issues), but it does not appear to be a trivial task.

from surge.

rghvdberg avatar rghvdberg commented on May 31, 2024 3

I didn't change any file.
I had an old vstsdk and copied /pluginterfaces/vst2.x and /public.sdk/source/vst2.x to surge/vst3sdk/
In the terminal I did export VST2SDK_DIR=/home/rob/git/surge/vst3sdk/
ran premake5 gmake2
and that was it

  • ldd doesn't show any missing libs
  • standalone app immediately closes
  • vst2 runs in Carla but only shows a black window, I can however hook up the audio out and get sound from it
  • vst2 crashes Ardour
  • vst3 doesn't appear in Reaper (the only vst3 host in Linux I was able to test)

from surge.

unfa avatar unfa commented on May 31, 2024 2

I try to use LV2 plug-ins wherever possible, as LV2 is a truely open standard, while VST is a proprietary technology (and Steinberg has recently decided to murder VST2 in order to replace it with VST3 - which seems to be completely independent format, despite the name).

When I can't get something to work as LV2 (like Oxe FM Synth) but it's still open-source and a Linux-native VST I'll go with it. I never tried running Windows VSTs in Linux.

So I would be glad to try Surge in VST format, but I'd be delighted to see it available in the LV2 format :)

from surge.

rghvdberg avatar rghvdberg commented on May 31, 2024 2

@kzantow reported for spam

from surge.

GeorgeNs avatar GeorgeNs commented on May 31, 2024 2

Oh.for some reasonq Firefox engine results not the updated master branch. It's okay now!

from surge.

esaruoho avatar esaruoho commented on May 31, 2024 1

okay. looks like we could wait till @whydoubt pushes in his PR for this branch of his that's wip:
https://github.com/whydoubt/surge/tree/linux_storage

anyway, nice to see that the linux work is being progressed by both @whydoubt and @jsakkine

from surge.

davephillips avatar davephillips commented on May 31, 2024 1

@esaruoho No problem, I'm building it now. I'll report back asap.

from surge.

jarkkojs avatar jarkkojs commented on May 31, 2024 1

Yeah, I've used mainly kbuild and seldomly autotools :) It would be worth of considering to change to something mature like CMake even if it would be only because of decent dependency management. Now this infrastructure is terrible for things like packaging.

from surge.

unfa avatar unfa commented on May 31, 2024 1

@bluszcz - when I read how you started this issue, I immediately though about a video I've posted recently: https://www.youtube.com/watch?v=KYeTg4_k1Q0

Anyway - I'd love to try Surge once I can run it on Linux, and I could also make a video about it later.

I'm into all things related to open-source and audio, but I especially love synthesizers.

from surge.

whydoubt avatar whydoubt commented on May 31, 2024 1

@unfa I've watched some of your YT videos in the past. I think you mentioned once about avoiding VST plugins. Am I remembering correctly, and is this still the case? While I am currently working towards getting Surge on Linux as VST2 or VST3, longer-term I would like to get it working as a LADSPA or LV2 plugin. I would enjoy hearing your thoughts.

from surge.

esaruoho avatar esaruoho commented on May 31, 2024 1

@jsakkine i would venture to guess that getting a VST2 and VST3 to compile and build successfully and to run on hosts == Ticket can be closed

Oh and updating README.md w instructions on how to do it. Maybe even a screenshot of Surge running on a Linux host. WDYT?

from surge.

esaruoho avatar esaruoho commented on May 31, 2024 1

@rghvdberg if you can push a PR that makes it build cleanly AND display a black window, then someone else could take that further. would be awesome!

from surge.

rghvdberg avatar rghvdberg commented on May 31, 2024 1

oh, one more thing
At first I got this

SurgeStorage: Unable to load Surge configuration file "/home/rob/.local/share/Surge/configuration.xml".

but I copied those files (dirs) to the correct location and now that message is gone

from surge.

kzantow avatar kzantow commented on May 31, 2024 1

Don't listen to @rghvdberg . he's a jerk.

from surge.

GeorgeNs avatar GeorgeNs commented on May 31, 2024

Looking forward to be able to build it on linux!

from surge.

Jorgeelalto avatar Jorgeelalto commented on May 31, 2024

OK, so I just started tinkering with the Linux building thing and I managed to make it compile on the current version, the VST2 build. I don't know how to make it work though, tried running it with Reaper 5.95 on Ubuntu 16.04 but no luck - I suppose the Debug-surge.so file it creates (under the target folder) is not valid or something, or there is external data and files that I am not providing (skin, presets?). I'm attaching here the code of the current state. My repository is here: BuildSurgeOnLinux

# Install libgtkmm-3.0-dev and libcairo2-dev
echo "############################################################"
echo "# THIS SCRIPT NEEDS THE FOLLOWING SPECIAL PACKAGES:        #"
echo "# libgtkmm-3.0-dev libcairo2-dev                           #"
echo "# MAKE SURE YOU HAVE THEM OR COMPILATION WILL THROW ERRORS #"
echo "############################################################"

# Try to remove previous compilations
echo "REMOVING PREVIOUS BUILD FILES"
rm -rf surge VST_SDK
# First, clone Surge repo and update submodules
echo "CLONING SURGE REPO"
git clone https://github.com/kurasu/surge.git
echo "MOVING INTO SURGE FOLDER"
cd surge
echo "UPDATING GIT SUBMODULES"
git submodule update --init --recursive
# Then download VST_SDK file
echo "MOVING TO PARENT DIRECTORY"
cd ..
echo "RETRIEVING VST3SDK PACKAGE FROM STEINBERG"
wget https://www.steinberg.net/vst3sdk
# Extract it and remove the zip
echo "EXTRACTING VST3SDK ZIP PACKAGE"
unzip vst3sdk*
echo "REMOVING VST3SDK ZIP"
# Copy the vst2 stuff to the vst3 folder in Surge
echo "COPYING VST2 FILES TO surge/vst3sdk/"
cp -r VST_SDK/VST2_SDK/* surge/vst3sdk/
# Download premake5 and extract it here
# REPLACE WITH THE LATEST VERSION OF PREMAKE DOWNLOAD IF YOU WANT
echo "RETRIEVING PREMAKE5 PACKAGE"
wget https://github.com/premake/premake-core/releases/download/v5.0.0-alpha12/premake-5.0.0-alpha12-linux.tar.gz
echo "EXTRACTING PREMAKE5 PACKAGE"
tar -xvf premake-5*
# Remove premake5 tar.gz
echo "REMOVING PREMAKE5 TAR.GZ PACKAGE"
# Move premake5 bin to surge folder
echo "MOVING PREMAKE5 BINARY TO SURGE FOLDER"
mv premake5 surge/
# Build makefiles with premake
echo "ENTERING SURGE FOLDER"
cd surge
echo "RUNNING premake5 gmake2"
./premake5 gmake2
# make the vst2
echo "RUNNING surge-vst2.make"
make -f surge-vst2.make
# make the vst3
#make -f surge-vst3.make

Any contribution is appreciated and more than welcome, of course :)

from surge.

GeorgeNs avatar GeorgeNs commented on May 31, 2024

Yes I have tried too with Ubuntu 18,it compiles well it builds the .so file but I can't open it in any open source DAW!
More precisely it is not detectable. Carla or JUCE audio plugin host can't detect the plugin as well.
I have tried the following:
premake5 --cc=gcc --os=linux gmake (if i am not wrong gmake is better than gmake2)
then
make config=release_x64

the vst2 is going to be built successfully but not the same for the vst3(anyway linux has long way to go with vst3 plugins,i can only use the steinberg's editorhost to open a vst3 example) .
Anyway,even so, the vst2 .so file (which is around 19Mb) won't open
I didn't have time to search the reason but I guess is something related to vst sdk version or vstgui???
I am not an experienced programmer though (((

from surge.

davephillips avatar davephillips commented on May 31, 2024

I'm having the same problems. I can build the plugin fine as a VST2 but it won't instantiate in Bitwig or Ardour. I'm building it here on Fedora 23, with GCC 5.3.1. The only error thrown by Bitwig is the rather unhelpful "Could not read metadata" message.

from surge.

kmatheussen avatar kmatheussen commented on May 31, 2024

To compile on linux, see this pull request: https://github.com/kurasu/surge/pull/20

Also, the reason the current state doesn't load is probably because of missing symbols.
Run "ldd -r ldd -r target/vst2/Debug/Surge-Debug.so" to check that. This should probably be added to the build system.

If you compiled it successfully, it should look like this:

[kjetil@localhost surge]$ ldd -r target/vst2/Debug/Surge-Debug.so 
        linux-vdso.so.1 (0x00007ffd65b41000)
        libfreetype.so.6 => /lib64/libfreetype.so.6 (0x00007fcd0279e000)
        libxcb-cursor.so.0 => /lib64/libxcb-cursor.so.0 (0x00007fcd02597000)
        libxcb.so.1 => /lib64/libxcb.so.1 (0x00007fcd02375000)
        libxkbcommon-x11.so.0 => /lib64/libxkbcommon-x11.so.0 (0x00007fcd0216d000)
        libxkbcommon.so.0 => /lib64/libxkbcommon.so.0 (0x00007fcd01f2c000)
        libcairo.so.2 => /lib64/libcairo.so.2 (0x00007fcd01c03000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fcd019e6000)
        libstdc++.so.6 => /home/kjetil/gcc-7.1.0_install/lib64/libstdc++.so.6 (0x00007fcd01663000)
        libm.so.6 => /lib64/libm.so.6 (0x00007fcd0135b000)
        libgcc_s.so.1 => /home/kjetil/gcc-7.1.0_install/lib64/libgcc_s.so.1 (0x00007fcd01144000)
        libc.so.6 => /lib64/libc.so.6 (0x00007fcd00d82000)
        libz.so.1 => /lib64/libz.so.1 (0x00007fcd00b6c000)
        libbz2.so.1 => /lib64/libbz2.so.1 (0x00007fcd0095c000)
        libpng16.so.16 => /lib64/libpng16.so.16 (0x00007fcd00729000)
        libxcb-render-util.so.0 => /lib64/libxcb-render-util.so.0 (0x00007fcd00525000)
        libxcb-render.so.0 => /lib64/libxcb-render.so.0 (0x00007fcd0031b000)
        libxcb-image.so.0 => /lib64/libxcb-image.so.0 (0x00007fcd00115000)
        libxcb-shm.so.0 => /lib64/libxcb-shm.so.0 (0x00007fccfff11000)
        libXau.so.6 => /lib64/libXau.so.6 (0x00007fccffd0d000)
        libxcb-xkb.so.1 => /usr/lib64/libxcb-xkb.so.1 (0x00007fccffaf0000)
        libpixman-1.so.0 => /lib64/libpixman-1.so.0 (0x00007fccff849000)
        libfontconfig.so.1 => /lib64/libfontconfig.so.1 (0x00007fccff605000)
        libEGL.so.1 => /lib64/libEGL.so.1 (0x00007fccff3f1000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007fccff1ed000)
        libXrender.so.1 => /lib64/libXrender.so.1 (0x00007fccfefe3000)
        libX11.so.6 => /lib64/libX11.so.6 (0x00007fccfeca1000)
        libXext.so.6 => /lib64/libXext.so.6 (0x00007fccfea8f000)
        libGL.so.1 => /lib64/libGL.so.1 (0x00007fccfe7eb000)
        librt.so.1 => /lib64/librt.so.1 (0x00007fccfe5e2000)
        /lib64/ld-linux-x86-64.so.2 (0x000055ff0498e000)
        libxcb-util.so.1 => /lib64/libxcb-util.so.1 (0x00007fccfe3dc000)
        libexpat.so.1 => /lib64/libexpat.so.1 (0x00007fccfe1b1000)
        libGLdispatch.so.0 => /lib64/libGLdispatch.so.0 (0x00007fccfdee3000)
        libGLX.so.0 => /lib64/libGLX.so.0 (0x00007fccfdcb2000)
[kjetil@localhost surge]$ 

from surge.

davephillips avatar davephillips commented on May 31, 2024

Hey Kjetil, Thanks for the assistance ! As I mentioned I can build the VST2 without problems. I ran ldd as per your instructions, got the following result, complete with a report of missing symbols. What stage did I miss ?

[dlphilp@The6300 surge]$ ldd -r target/vst2/Debug/Surge-Debug.so
linux-vdso.so.1 (0x00007ffc1e5f7000)
libgtkmm-3.0.so.1 => /lib64/libgtkmm-3.0.so.1 (0x00007f4da463c000)
libatkmm-1.6.so.1 => /lib64/libatkmm-1.6.so.1 (0x00007f4da43ec000)
libgdkmm-3.0.so.1 => /lib64/libgdkmm-3.0.so.1 (0x00007f4da419c000)
libgiomm-2.4.so.1 => /lib64/libgiomm-2.4.so.1 (0x00007f4da3de4000)
libpangomm-1.4.so.1 => /lib64/libpangomm-1.4.so.1 (0x00007f4da3bb4000)
libglibmm-2.4.so.1 => /lib64/libglibmm-2.4.so.1 (0x00007f4da3934000)
libgtk-3.so.0 => /lib64/libgtk-3.so.0 (0x00007f4da3004000)
libgdk-3.so.0 => /lib64/libgdk-3.so.0 (0x00007f4da2d34000)
libpangocairo-1.0.so.0 => /lib64/libpangocairo-1.0.so.0 (0x00007f4da2b24000)
libpango-1.0.so.0 => /lib64/libpango-1.0.so.0 (0x00007f4da28d4000)
libatk-1.0.so.0 => /lib64/libatk-1.0.so.0 (0x00007f4da26ac000)
libcairo-gobject.so.2 => /lib64/libcairo-gobject.so.2 (0x00007f4da249c000)
libgio-2.0.so.0 => /lib64/libgio-2.0.so.0 (0x00007f4da211c000)
libcairomm-1.0.so.1 => /lib64/libcairomm-1.0.so.1 (0x00007f4da1ef4000)
libcairo.so.2 => /lib64/libcairo.so.2 (0x00007f4da1bc4000)
libsigc-2.0.so.0 => /lib64/libsigc-2.0.so.0 (0x00007f4da19bc000)
libgdk_pixbuf-2.0.so.0 => /lib64/libgdk_pixbuf-2.0.so.0 (0x00007f4da1794000)
libgobject-2.0.so.0 => /lib64/libgobject-2.0.so.0 (0x00007f4da153c000)
libglib-2.0.so.0 => /lib64/libglib-2.0.so.0 (0x00007f4da11fc000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f4da0fdc000)
libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007f4da0c54000)
libm.so.6 => /lib64/libm.so.6 (0x00007f4da094c000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f4da0734000)
libc.so.6 => /lib64/libc.so.6 (0x00007f4da036c000)
libgmodule-2.0.so.0 => /lib64/libgmodule-2.0.so.0 (0x00007f4da0164000)
libX11.so.6 => /lib64/libX11.so.6 (0x00007f4d9fe24000)
libXi.so.6 => /lib64/libXi.so.6 (0x00007f4d9fc0c000)
libXfixes.so.3 => /lib64/libXfixes.so.3 (0x00007f4d9fa04000)
libatk-bridge-2.0.so.0 => /lib64/libatk-bridge-2.0.so.0 (0x00007f4d9f7d4000)
libepoxy.so.0 => /lib64/libepoxy.so.0 (0x00007f4d9f4d4000)
libpangoft2-1.0.so.0 => /lib64/libpangoft2-1.0.so.0 (0x00007f4d9f2bc000)
libfontconfig.so.1 => /lib64/libfontconfig.so.1 (0x00007f4d9f074000)
libXinerama.so.1 => /lib64/libXinerama.so.1 (0x00007f4d9ee6c000)
libXrandr.so.2 => /lib64/libXrandr.so.2 (0x00007f4d9ec5c000)
libXcursor.so.1 => /lib64/libXcursor.so.1 (0x00007f4d9ea4c000)
libXcomposite.so.1 => /lib64/libXcomposite.so.1 (0x00007f4d9e844000)
libXdamage.so.1 => /lib64/libXdamage.so.1 (0x00007f4d9e63c000)
libxkbcommon.so.0 => /lib64/libxkbcommon.so.0 (0x00007f4d9e3fc000)
libwayland-cursor.so.0 => /lib64/libwayland-cursor.so.0 (0x00007f4d9e1f4000)
libwayland-egl.so.1 => /lib64/libwayland-egl.so.1 (0x00007f4d9dfec000)
libwayland-client.so.0 => /lib64/libwayland-client.so.0 (0x00007f4d9dddc000)
libXext.so.6 => /lib64/libXext.so.6 (0x00007f4d9dbc4000)
librt.so.1 => /lib64/librt.so.1 (0x00007f4d9d9bc000)
libthai.so.0 => /lib64/libthai.so.0 (0x00007f4d9d7ac000)
libgthread-2.0.so.0 => /lib64/libgthread-2.0.so.0 (0x00007f4d9d5a4000)
libharfbuzz.so.0 => /lib64/libharfbuzz.so.0 (0x00007f4d9d33c000)
libfreetype.so.6 => /usr/lib64/freetype-freeworld/libfreetype.so.6 (0x00007f4d9d08c000)
libpixman-1.so.0 => /lib64/libpixman-1.so.0 (0x00007f4d9cde4000)
libEGL.so.1 => /usr/lib64/nvidia-340xx/libEGL.so.1 (0x00007f4d9cad4000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f4d9c8cc000)
libpng16.so.16 => /lib64/libpng16.so.16 (0x00007f4d9c694000)
libxcb-shm.so.0 => /lib64/libxcb-shm.so.0 (0x00007f4d9c48c000)
libxcb-render.so.0 => /lib64/libxcb-render.so.0 (0x00007f4d9c27c000)
libxcb.so.1 => /lib64/libxcb.so.1 (0x00007f4d9c054000)
libXrender.so.1 => /lib64/libXrender.so.1 (0x00007f4d9be44000)
libz.so.1 => /lib64/libz.so.1 (0x00007f4d9bc2c000)
libGL.so.1 => /usr/lib64/nvidia-340xx/libGL.so.1 (0x00007f4d9b8dc000)
libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f4d9b6b4000)
libresolv.so.2 => /lib64/libresolv.so.2 (0x00007f4d9b494000)
libffi.so.6 => /lib64/libffi.so.6 (0x00007f4d9b28c000)
/lib64/ld-linux-x86-64.so.2 (0x0000559be5100000)
libatspi.so.0 => /lib64/libatspi.so.0 (0x00007f4d9b054000)
libdbus-1.so.3 => /lib64/libdbus-1.so.3 (0x00007f4d9adfc000)
libexpat.so.1 => /lib64/libexpat.so.1 (0x00007f4d9abcc000)
libdatrie.so.1 => /lib64/libdatrie.so.1 (0x00007f4d9a9c4000)
libgraphite2.so.3 => /lib64/libgraphite2.so.3 (0x00007f4d9a794000)
libbz2.so.1 => /lib64/libbz2.so.1 (0x00007f4d9a584000)
libnvidia-glsi.so.340.98 => /usr/lib64/nvidia-340xx/libnvidia-glsi.so.340.98 (0x00007f4d9a2fc000)
libXau.so.6 => /lib64/libXau.so.6 (0x00007f4d9a0f4000)
libnvidia-tls.so.340.98 => /usr/lib64/nvidia-340xx/tls/libnvidia-tls.so.340.98 (0x00007f4d99eec000)
libnvidia-glcore.so.340.98 => /usr/lib64/nvidia-340xx/libnvidia-glcore.so.340.98 (0x00007f4d972d4000)
libpcre.so.1 => /lib64/libpcre.so.1 (0x00007f4d9705c000)
libsystemd.so.0 => /lib64/libsystemd.so.0 (0x00007f4d96fd4000)
liblzma.so.5 => /lib64/liblzma.so.5 (0x00007f4d96dac000)
libgcrypt.so.20 => /lib64/libgcrypt.so.20 (0x00007f4d96ac4000)
libgpg-error.so.0 => /lib64/libgpg-error.so.0 (0x00007f4d968ac000)
libdw.so.1 => /lib64/libdw.so.1 (0x00007f4d9665c000)
libcap.so.2 => /lib64/libcap.so.2 (0x00007f4d96454000)
libelf.so.1 => /lib64/libelf.so.1 (0x00007f4d9623c000)
libattr.so.1 => /lib64/libattr.so.1 (0x00007f4d96034000)
undefined symbol: _ZN12AudioEffectX10dispatcherEiilPvf (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN11AudioEffect21setParameterAutomatedEif (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN11AudioEffect19canProcessReplacingEb (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN11AudioEffect18canDoubleReplacingEb (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN11AudioEffect17programsAreChunksEb (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN11AudioEffect15setInitialDelayEi (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN11AudioEffect16getMasterVersionEv (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN11AudioEffect18getCurrentUniqueIdEv (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN11AudioEffect10masterIdleEv (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN11AudioEffect9dB2stringEfPci (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN11AudioEffect9Hz2stringEfPci (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN11AudioEffect9ms2stringEfPci (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN11AudioEffect12float2stringEfPci (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN11AudioEffect10int2stringEiPci (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN11AudioEffect17__hasVuDeprecatedEb (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN11AudioEffect19__hasClipDeprecatedEb (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN11AudioEffect19__canMonoDeprecatedEb (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN11AudioEffect32__setRealtimeQualitiesDeprecatedEi (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN11AudioEffect31__setOfflineQualitiesDeprecatedEi (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN11AudioEffect28__isInputConnectedDeprecatedEi (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN11AudioEffect29__isOutputConnectedDeprecatedEi (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN12AudioEffectX9beginEditEi (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN12AudioEffectX7endEditEi (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN12AudioEffectX9ioChangedEv (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN12AudioEffectX16updateSampleRateEv (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN12AudioEffectX15updateBlockSizeEv (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN12AudioEffectX15getInputLatencyEv (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN12AudioEffectX16getOutputLatencyEv (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN12AudioEffectX11getTimeInfoEi (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN12AudioEffectX22getCurrentProcessLevelEv (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN12AudioEffectX18getAutomationStateEv (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN12AudioEffectX19getHostVendorStringEPc (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN12AudioEffectX20getHostProductStringEPc (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN12AudioEffectX20getHostVendorVersionEv (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN12AudioEffectX18hostVendorSpecificEilPvf (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN12AudioEffectX9canHostDoEPc (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN12AudioEffectX15getHostLanguageEv (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN12AudioEffectX7isSynthEb (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN12AudioEffectX6noTailEb (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN12AudioEffectX12getDirectoryEv (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN12AudioEffectX13updateDisplayEv (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN12AudioEffectX10sizeWindowEii (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN12AudioEffectX16openFileSelectorEP13VstFileSelect (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN12AudioEffectX17closeFileSelectorEP13VstFileSelect (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN12AudioEffectX19allocateArrangementEPP21VstSpeakerArrangementi (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN12AudioEffectX21deallocateArrangementEPP21VstSpeakerArrangement (target/vst2/Debug/Surge-Debug.so)
undefined symbol: ZN12AudioEffectX11copySpeakerEP20VstSpeakerPropertiesS1 (target/vst2/Debug/Surge-Debug.so)
undefined symbol: ZN12AudioEffectX16matchArrangementEPP21VstSpeakerArrangementS1 (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN12AudioEffectX11offlineReadEP14VstOfflineTask16VstOfflineOptionb (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN12AudioEffectX12offlineWriteEP14VstOfflineTask16VstOfflineOption (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN12AudioEffectX12offlineStartEP12VstAudioFileii (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN12AudioEffectX21offlineGetCurrentPassEv (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN12AudioEffectX25offlineGetCurrentMetaPassEv (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN12AudioEffectX22__wantEventsDeprecatedEi (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN12AudioEffectX19__tempoAtDeprecatedEi (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN12AudioEffectX39__getNumAutomatableParametersDeprecatedEv (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN12AudioEffectX36__getParameterQuantizationDeprecatedEv (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN12AudioEffectX20__needIdleDeprecatedEv (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN12AudioEffectX27__getPreviousPlugDeprecatedEi (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN12AudioEffectX23__getNextPlugDeprecatedEi (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN12AudioEffectX32__willProcessReplacingDeprecatedEv (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN12AudioEffectX30__wantAsyncOperationDeprecatedEb (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN12AudioEffectX29__hasExternalBufferDeprecatedEb (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN12AudioEffectX31__setOutputSamplerateDeprecatedEf (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN12AudioEffectX38__getInputSpeakerArrangementDeprecatedEv (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN12AudioEffectX39__getOutputSpeakerArrangementDeprecatedEv (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN12AudioEffectX22__openWindowDeprecatedEP21__VstWindowDeprecated (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN12AudioEffectX23__closeWindowDeprecatedEP21__VstWindowDeprecated (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN12AudioEffectX24__getChunkFileDeprecatedEPv (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZTI12AudioEffectX (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN6VSTGUI8soHandleE (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZTV12AudioEffectX (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN11AudioEffect9setEditorEP10AEffEditor (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN12AudioEffectXC2EPFlP7AEffectiilPvfEii (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN11AudioEffectD2Ev (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN11AudioEffect19canProcessReplacingEb (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN12AudioEffectX6resumeEv (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN11AudioEffect17programsAreChunksEb (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN12SurgeStorage11load_wt_wavENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP9Wavetable (target/vst2/Debug/Surge-Debug.so)
undefined symbol: __cpuid (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _Z19spawn_miniedit_textPci (target/vst2/Debug/Surge-Debug.so)
undefined symbol: _ZN12AudioEffectX7isSynthEb (target/vst2/Debug/Surge-Debug.so)

from surge.

kmatheussen avatar kmatheussen commented on May 31, 2024

from surge.

Jorgeelalto avatar Jorgeelalto commented on May 31, 2024

So I tested building this after a few months and for the vst3 build I'm getting different errors, related to the GUI probably like for the macOS build.

This is the process I followed to make this build:

# Clone Premake5
git clone https://github.com/premake/premake-core.git
# Build it
cd premake-core
make -f Bootstrap.mak linux
# Exit
cd ..
git clone https://github.com/kurasu/surge.git
cd surge
# Clone submodules
git submodule update --init --recursive
# Copy premake5 binaries to the surge directory
cp ../premake-core/bin/release/premake5 .
# Build the makefile
./premake5 gmake2
# And the vst3
make

After executing ld on the Surge-Debug.vst3 which results from the process in /target/vst3/Debug I get this output:

Surge-Debug.vst3: undefined reference to `non-virtual thunk to SurgeVst3EditController::queryInterface(char const*, void**)'
Surge-Debug.vst3: undefined reference to `SurgeVst3EditController::setParamNormalized(unsigned int, double)'
Surge-Debug.vst3: undefined reference to `non-virtual thunk to SurgeVst3EditController::createView(char const*)'
Surge-Debug.vst3: undefined reference to `non-virtual thunk to SurgeVst3EditController::queryInterface(char const*, void**)'
Surge-Debug.vst3: undefined reference to `non-virtual thunk to SurgeVst3EditController::queryInterface(char const*, void**)'
Surge-Debug.vst3: undefined reference to `non-virtual thunk to SurgeVst3EditController::setParamNormalized(unsigned int, double)'
Surge-Debug.vst3: undefined reference to `SurgeVst3EditController::getState(Steinberg::IBStream*)'
Surge-Debug.vst3: undefined reference to `__cpuid'
Surge-Debug.vst3: undefined reference to `non-virtual thunk to SurgeVst3EditController::queryInterface(char const*, void**)'
Surge-Debug.vst3: undefined reference to `non-virtual thunk to SurgeVst3EditController::getMidiControllerAssignment(int, short, short, unsigned int&)'
Surge-Debug.vst3: undefined reference to `SurgeStorage::load_wt_wav(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, Wavetable*)'
Surge-Debug.vst3: undefined reference to `non-virtual thunk to SurgeVst3EditController::setState(Steinberg::IBStream*)'
Surge-Debug.vst3: undefined reference to `SurgeVst3EditController::getParamValueByString(unsigned int, char16_t*, double&)'
Surge-Debug.vst3: undefined reference to `non-virtual thunk to SurgeVst3EditController::queryInterface(char const*, void**)'
Surge-Debug.vst3: undefined reference to `SurgeVst3EditController::editorRemoved(Steinberg::Vst::EditorView*)'
Surge-Debug.vst3: undefined reference to `non-virtual thunk to SurgeVst3EditController::setComponentState(Steinberg::IBStream*)'
Surge-Debug.vst3: undefined reference to `non-virtual thunk to SurgeVst3EditController::getState(Steinberg::IBStream*)'
Surge-Debug.vst3: undefined reference to `SurgeVst3EditController::getMidiControllerAssignment(int, short, short, unsigned int&)'
Surge-Debug.vst3: undefined reference to `SurgeVst3EditController::setState(Steinberg::IBStream*)'
Surge-Debug.vst3: undefined reference to `SurgeVst3EditController::createView(char const*)'
Surge-Debug.vst3: undefined reference to `non-virtual thunk to SurgeVst3EditController::getParamValueByString(unsigned int, char16_t*, double&)'
Surge-Debug.vst3: undefined reference to `SurgeVst3EditController::editorAttached(Steinberg::Vst::EditorView*)'
Surge-Debug.vst3: undefined reference to `SurgeVst3EditController::receiveText(char const*)'
Surge-Debug.vst3: undefined reference to `non-virtual thunk to SurgeVst3EditController::queryInterface(char const*, void**)'
Surge-Debug.vst3: undefined reference to `SurgeVst3EditController::getParamStringByValue(unsigned int, double, char16_t*)'
Surge-Debug.vst3: undefined reference to `SurgeVst3EditController::setComponentState(Steinberg::IBStream*)'
Surge-Debug.vst3: undefined reference to `Steinberg::SystemTime::getTicks64()'
Surge-Debug.vst3: undefined reference to `SurgeVst3EditController::queryInterface(char const*, void**)'
Surge-Debug.vst3: undefined reference to `non-virtual thunk to SurgeVst3EditController::getParamStringByValue(unsigned int, double, char16_t*)'
Surge-Debug.vst3: undefined reference to `spawn_miniedit_text(char*, int)'
Surge-Debug.vst3: undefined reference to `moduleHandle'

So I think I will start looking for the moduleHandle, Steinberg::* and spawn_miniedit_text. I don't have much experience with C++ but I will try my best 😃

from surge.

esaruoho avatar esaruoho commented on May 31, 2024

@Jorgeelalto after cloning the repo, did you run this?

git submodule update --init --recursive

? let us know if you get a different set of errors then.

from surge.

Jorgeelalto avatar Jorgeelalto commented on May 31, 2024

Oops, yes, forgot to add that to the process. I ran that before compiling everything yes (I will add it to my comment). Those errors are thrown even with the submodule cloning.

from surge.

esaruoho avatar esaruoho commented on May 31, 2024

@Jorgeelalto what about trying to get VST2 to compile?

from surge.

Jorgeelalto avatar Jorgeelalto commented on May 31, 2024

Maybe there is an option to specify on premake5 so that it creates a makefile for a vst2 version, but just running premake5 gmake or premake5 gmake2 generates a Makefile and a surge-vst3.make. Both build the vst3 version, did not found a way to build the vst2 yet.

Edit: checked previous replies to this issue, did the makefile generation changed? I can see we had vst2 makefiles some time ago. I'm using the latest master version.

Edit 2: Never mind, looks like we have to set the env variable VST2SDK_DIR.

from surge.

Jorgeelalto avatar Jorgeelalto commented on May 31, 2024

So I managed to start building vst2 and I get a lot of errors of the type "CRect does not name a type", "CBitmap has not been declared". To me it looks like some kind of include problem, maybe the source code needs to be fed with some more .h files. I will try including some files manually.

from surge.

esaruoho avatar esaruoho commented on May 31, 2024

@Jorgeelalto since today this repo progressed with about 100 new commits being merged into master - could you check again and see if you're still getting these errors?

from surge.

jarkkojs avatar jarkkojs commented on May 31, 2024

For VST2 build the my commits were missing. I've created a new pull request (substitute for #70).

from surge.

Jorgeelalto avatar Jorgeelalto commented on May 31, 2024

I see, I will wait for that PR to be merged. I have tested with the latest version of the master branch but I get the same problems in both VST3 and VST2.

from surge.

esaruoho avatar esaruoho commented on May 31, 2024

PR is #111

from surge.

esaruoho avatar esaruoho commented on May 31, 2024

@Jorgeelalto the PR is in, let us know how you fare with Linux builds now :)

from surge.

esaruoho avatar esaruoho commented on May 31, 2024

@Jorgeelalto it's probably a great idea to look at https://github.com/whydoubt/surge/tree/linux_storage (heads up @jsakkine) - this might eventually make it into a PR, maybe there's something useful coming in there? :)

from surge.

baconpaul avatar baconpaul commented on May 31, 2024

Just as an update, I took my ubuntu vm, pulled head, and built surge-app (not surge-vst3) and it linked no problem. I just needed to

apt-get install libgtkmm-3.0-dev

first.

from surge.

baconpaul avatar baconpaul commented on May 31, 2024

surge-vst3 links for me also. No idea if it works. But at least on my vm (16.04.10 ubuntu with g++ 5.4.0) seems the recent spate of PRs have things linking. Just an FYI.

from surge.

esaruoho avatar esaruoho commented on May 31, 2024

@baconpaul what's surge-app ? vst2, or standalone? surely we're not in the status where a surge linux standalone exists, or WDYT @jsakkine ?

from surge.

baconpaul avatar baconpaul commented on May 31, 2024

Its @jsaskkine's work which got merged into the main branch. It doesn't work. But it does link!

from surge.

davephillips avatar davephillips commented on May 31, 2024

Greetings !

I can build the VST2 and VST3 plugin for Linux but neither will load in Bitwig, I always get the "Could not read plugin metadata" error. I also a ran a small VST2 debug program (from the VeeSeeVSTRack project) on the Surge binaries, the error reported "Could not find mainProc". Any suggestions ? Btw, I've been following this issue and building the code regularly. Unfortunately life events have prevented further involvement until now, hopefully I can help a bit towards getting a working Linux version of Surge.

Linux Fedora 23
GCC 5.3.1

Best,

dp

from surge.

jarkkojs avatar jarkkojs commented on May 31, 2024

Sorry I'll be for a while bit passive because my paid work on kernel takes all my time :) I'll become active when the holidays start. @whydoubt: sorry to interrupt ongoing work but it'd be nice if you could take the model that I proposed in https://github.com/kurasu/surge/issues/112 for Linux specific changes.

from surge.

esaruoho avatar esaruoho commented on May 31, 2024

@davephillips can you try and check the VSTs with http://github.com/tracktion/pluginval and let us know what the app says?

from surge.

jarkkojs avatar jarkkojs commented on May 31, 2024

@baconpaul: yeah it is essentially an explicit check that you have all the required VST2 files.

from surge.

esaruoho avatar esaruoho commented on May 31, 2024

thanks @davephillips !

from surge.

davephillips avatar davephillips commented on May 31, 2024

@esaruoho Pluginval reports that the files appear to be plugins but that they fail to load. And that's all it reports. :(

from surge.

jarkkojs avatar jarkkojs commented on May 31, 2024

Meta-question: what is the good practice in premake to do depedency checks i.e. get missing gtkmm reported when it is missing when you issue the premake command? I'm thinking something similar as autotools does.

from surge.

jarkkojs avatar jarkkojs commented on May 31, 2024

Related to standalone. Would be nice to be able to list the dependencies and make premake complain if something is missing.

from surge.

baconpaul avatar baconpaul commented on May 31, 2024

Yeah @jsakkine we looked at that a little and it seems premake is just lua code but lua doesn't make it super easy to do some of those things. For mac after @esaruoho tried a few things we just put a check into build-osx.sh which is unsatisfying.

I've never used premake and barely used lua; and googling doesn't help much.

I agree it would be nice if there was a clean check of prerequisites (like Xcode version and OS version and git submodules on mac; appropriate packages on linux; and whatever you do on windows) somewhere which ran when a user checked out and tried to build.

from surge.

jarkkojs avatar jarkkojs commented on May 31, 2024

Yeah. I guess the comparable thing to autotools macros would be to create modules for each dependency, which would be an enormous job to do. That is how you use Qt for example with premake.

from surge.

jarkkojs avatar jarkkojs commented on May 31, 2024

The key benefit of both autotools (can be discarded because is pain to use with Windows) and CMake is the maturity. Everything integrates to them with almost zero effort. Spent few hours today browsing about premake dep management in order to find out that it does not exist.

from surge.

jarkkojs avatar jarkkojs commented on May 31, 2024

Asked this some other issue too but the heck are vst2wrapper.cpp and vst2wrapper.sdk.cpp in vst3sdk?

from surge.

jarkkojs avatar jarkkojs commented on May 31, 2024

And what is the definition of done for this issue?

from surge.

jarkkojs avatar jarkkojs commented on May 31, 2024

Sounds fair enough.

from surge.

jarkkojs avatar jarkkojs commented on May 31, 2024

I would lower that a bit by saying that at least one target (VST2 or VST3) up and running and then open a separate tickets for the rest. Right now this kind of umbrella ticket makes sense because we don't know yet which horse is gonna win the race...

from surge.

jarkkojs avatar jarkkojs commented on May 31, 2024

@esaruoho, probably noticed that I went through all the open issues :D Started working on my CMake ticket and wanted to get an overview WTF (or WTH these days) is going on :)

from surge.

baconpaul avatar baconpaul commented on May 31, 2024

I definitely used issues for Mac that way. One for “get it to build” one for “get it to load in logic” one for “get it to load in logic with the ui” then one for “fix the packaging nd so on” roughly. I’d encourage same here. So close this ticket when any flavor of any Linux host shows the ui and makes a beep then make new tickets for what comes next.

from surge.

davephillips avatar davephillips commented on May 31, 2024

I had some time this morning to work on debugging Linux Surge. This report comes from the VeeSeeVSTRack vst2-debug-host utility:

$ ./vst2_debug_host 
Failed to load library /home/dlphilp/src/surge/target/vst2/Debug/Surge-Debug.so: /home/dlphilp/src/surge/target/vst2/Debug/Surge-Debug.so: undefined symbol: _ZN6VSTGUI5CView12beforeDeleteEv
debug_host: exiting

I also ran it on the VST3 binary:

$ ./vst2_debug_host 
Failed to load library /home/dlphilp/src/surge/target/vst3/Debug/Surge-Debug.so: /home/dlphilp/src/surge/target/vst3/Debug/Surge-Debug.so: undefined symbol: _ZN9Steinberg10SystemTime10getTicks64

So one or more object files aren't being linked ?

from surge.

baconpaul avatar baconpaul commented on May 31, 2024

The VST3 one is actually a bug in the steinberg API. See the discussion in #130

I don't know if @whydoubt has a solution but maybe we could do something like storing a vst3dk.patch in scripts/linux and applying it after we do the git submodule until the underlying lib is fixed? Unless I misunderstood the @whydoubt comment and post to steinberg issue tracker.

from surge.

whydoubt avatar whydoubt commented on May 31, 2024

@baconpaul As much as I dislike the idea of that patch, it's probably our best bet. I'll look into it. It's going to end up with a lot more than just the getTicks64 fix.

from surge.

jarkkojs avatar jarkkojs commented on May 31, 2024

Wouldn't more clean way be to fork Steinbergs repo and use that as the submodule instead of official? Then you don't need to trash our repo with random patch files. Whenwe don't need it anyomore, we can just revert the submodule location back to the official.

from surge.

baconpaul avatar baconpaul commented on May 31, 2024

@jsakkine I kinda like using the official repo for Mac and windows but I would be fine to have a vst3-patch-linux Submodule also and then use that in Linux sure. We probably want to move Submodules to a directory (like “deps”) soon too since we may add a few with the open tickets we have here.

Any license issues with a fork vs patch?

from surge.

whydoubt avatar whydoubt commented on May 31, 2024

@jsakkine FWIW, we'd have to do that recursively. First, forking and changing vst3_base. Second, forking and changing vst3sdk to point to the forked vst3_base. Third, change Surge to point to the forked vst3sdk.

Also, vst3_base isn't the only sub-submodule that will need to be changed.

edited: OK, or create a submodule with just the patches, as @baconpaul mentioned. Each option brings its own headaches.

from surge.

baconpaul avatar baconpaul commented on May 31, 2024

Yeah clearly the best solution is that the library not be broken!

I think “whoever does the work decides which course is easiest” is the answer we will get. I would probably do a patch file in scripts/linux. But I’m not doing it so see the prior answer :)

from surge.

jarkkojs avatar jarkkojs commented on May 31, 2024

I see. So it would be seven submodules in total if I counted right? Still think it would be the best especially if this won't end here. But yeah, not enforcing this direction...

from surge.

jarkkojs avatar jarkkojs commented on May 31, 2024

I mean if we need to fix something lets say two months from now we would have a repository to land the fixes. And you wouldn't need rebase those forks too often, especially not the non-gui part, which is coarsely just a gateway to the Surge code.

from surge.

jarkkojs avatar jarkkojs commented on May 31, 2024

Would be good to have own Github organization for Surge where we could place whatever related repositories we want. I wonder what @kurasu would think of that. If we had that, things would be cleanly organized in this and similar situations. In general, it'd be good to have a place for Surge specific forks of any dependencies.

from surge.

rghvdberg avatar rghvdberg commented on May 31, 2024

ftr; I got it to build cleanly
vst2, vst3 and standalone
debug and release
however I got no UI. Just a black window
I do have sound

from surge.

baconpaul avatar baconpaul commented on May 31, 2024

Thanks! Any changes to make it build? Which host did you use to hear sound and see the black window?

from surge.

baconpaul avatar baconpaul commented on May 31, 2024

Oh and one thought: an all black window correctly sized could have a lot of causes but one such cause would be that the component cant load the bitmaps. Just a thought if you want to debug! Could easily be wrong tho

from surge.

baconpaul avatar baconpaul commented on May 31, 2024

Thank you. Very useful.

from surge.

rghvdberg avatar rghvdberg commented on May 31, 2024

with carla you can run the vst2 from the terminal
All I get (besides the empty windows) is

carla-single vst2 ./Surge-Debug.so 
['/usr/lib/carla/carla-bridge-native', 'vst2', './Surge-Debug.so', '(none)', '0']
libjack.so.0 loaded sucessfully!
Previous plugin state in '/home/rob/git/surge/target/vst2/Debug/Surge.carxs' is non-existent, will start from default state

When closing the gui

I think all of those messages are carla messages.
Bridge: ScopedPluginAction(0) - blocking START
Bridge: ScopedPluginAction(0) - blocking DONE

from surge.

GeorgeNs avatar GeorgeNs commented on May 31, 2024

ftr; I got it to build cleanly
vst2, vst3 and standalone
debug and release
however I got no UI. Just a black window
I do have sound

I don't know if my tests are useful to anyone since they don't link directly to surge ,but building the sdk examples provided by steinberg and then testing them with steinberg's edithost can open the GUI. However, if i update to the latest vstgui and build them again the GUI windows are black.

image

from surge.

kzantow avatar kzantow commented on May 31, 2024

@GeorgeNs erhm, this is linux? AFAIK all the other users have a UI...

from surge.

baconpaul avatar baconpaul commented on May 31, 2024

@kzantow yeah guis showing up black on Linux reported earlier too - which is progress! Seems it may not be surge from the above report

from surge.

GeorgeNs avatar GeorgeNs commented on May 31, 2024

@kzantow yes linux, just ubuntu 18 with many extra tweaks and builds targeting audio processing and music making.

@baconpaul thanks for confirming,it seems it'snot only me having this issue. In my case keeping an older vstgui version solved my problem.
Cheers

from surge.

baconpaul avatar baconpaul commented on May 31, 2024

@GeorgeNs do you happen to know how far back you had to rev vstgui to get it to work? May help some of the above folks

from surge.

GeorgeNs avatar GeorgeNs commented on May 31, 2024

@baconpaul
This version should be the one that builds the steinberg plugins examples on linux succesfully:
https://github.com/steinbergmedia/vstgui/releases/tag/vstgui4_6

I tried it a long time ago,so if anyone can confirm that it is really so it would be nice.
Cheers

from surge.

rghvdberg avatar rghvdberg commented on May 31, 2024

I've built it with the version mentioned by @GeorgeNs .
Same results.

from surge.

rghvdberg avatar rghvdberg commented on May 31, 2024

trying to build examples from vstgui
could be doing this totally wrong but :
cloned the vstgui repo
mkdir build , cd build
cmake ../
make
result , everything segfaults ... (╯°□°)╯︵ ┻━┻

the vstgui4_6 , test fails ..

COnOffButtonCreatorTest
	title [OK] -> 108 µs
	font [OK] -> 93 µs
	fontColor [OK] -> 97 µs
	boxFrameColor [OK] -> 93 µs
	boxFillColor [OK] -> 92 µs
	checkmarkColor [OK] -> 91 µs
	drawCrossbox [OK] -> 101 µs
Segmentation fault
tests/unittest/CMakeFiles/unittests.dir/build.make:1033: recept voor doel 'Debug/unittests' is mislukt

and I dunno how to build the examples in 4_6 , it only builds the libs
probably needs some arguments for make 🤷‍♂️
should I report this back to steinberg ?

from surge.

whydoubt avatar whydoubt commented on May 31, 2024

FWIW, the code for the sample plugins and hosts is in the vst3_public_sdk repo. To build and test, you'll really need the whole vst3sdk (recusively cloned). When you build, links for each of the sample plugins are made in your ~/.vst3 folder. The sample hosts are put in the bin/Debug folder within the build folder.

from surge.

GeorgeNs avatar GeorgeNs commented on May 31, 2024

yes you need vst3sdk recursively cloned. What is inside in vstgui however is another story.
some weeks ago inside that folder was actually the 4_6 version. You will have to delete that folder and reclone only the vstgui to get finally the latest update. I dunno if something changed recently,didn't have time to check...

from surge.

whydoubt avatar whydoubt commented on May 31, 2024

@GeorgeNs You shouldn't need to delete and reclone. Just go into vstgui4, checkout either the master or the develop branch (origin/HEAD points at the develop branch, FWIW). And if it's not a fresh clone, do a pull.

from surge.

GeorgeNs avatar GeorgeNs commented on May 31, 2024

Yes re-update I wanted to say..anyway,the matter is that if I get the latest vstgui and build the examples I will have black window,if I don't use the fresh and keep the 4_6 version the GUI of the examples shows up as expected

from surge.

jarkkojs avatar jarkkojs commented on May 31, 2024

Where is this going? Tried to Load VST2 plug-in on Linux with htop on. It eats all the system memory and crashes. I wonder what causes that memory leak.

from surge.

jarkkojs avatar jarkkojs commented on May 31, 2024

Created #250. Working on a fix for that one.

from surge.

esaruoho avatar esaruoho commented on May 31, 2024

@jsakkine can there be some sort of most minimal check of disabling everything possible and seeing if it still Eats up all the resources?

from surge.

jarkkojs avatar jarkkojs commented on May 31, 2024

@esaruoho, does not make sense to even think about that as long as there are null pointer dereferences and all kinds of crust in the way... I'll fix bugs one by one as I stump into them and then we see what is happening...

from surge.

baconpaul avatar baconpaul commented on May 31, 2024

@jsakkine if it helps here was basically my path to getting mac au working (which seems forever ago but was only about 30 days ago).

  1. Get it to build and link. We are there on linux. Great.
  2. The configuration state is key and the code will NPE without it. But the error messages are bad. So SurgeStorage.cpp where there's the error box around configuration.xml may be your second place. Without that you can't even load the SurgeSynth object let alone the GUI
  3. The patch management is next, but if you solved 2 you probably got that

With that you can get an instance of SurgeSynthesizer.cpp up and running and making sound. (That may be a reasonable thing to put in standalone app!). Then you have to turn to the UI

  1. The window creation path is different in each of VST2 3 and AU. In VST2 it is all in src/vst2 and is pretty clear but make sure it is calling the APIs you want and isn't #ifdef out for linux
  2. The window creation path will load bitmaps using CBitmap( CResourceDescription( id ) ) which on windows uses the .rc file and on mac loads from the bundle; you will need to look in vstgui source to see what it does on mac then make that work

With those two things fixed you stand a chance of actually getting a UI on screen I think.

Hope that helps!

from surge.

jarkkojs avatar jarkkojs commented on May 31, 2024

Thanks @baconpaul. I have pretty good idea how I'm proceeding. Not exactly with such a high level plan but I just go forward one car crash at a time :) I will create a CControl for showing the error message on Linux. That is the only stable platform to do it.

I'll catch the exception in the plug-in level and spawn that control there.

from surge.

jarkkojs avatar jarkkojs commented on May 31, 2024

And I solely focus on VST2 on Linux right now, ignoring everything else.

from surge.

baconpaul avatar baconpaul commented on May 31, 2024

Hey so after the weekend, linux builds and runs. Has bugs still but builds and runs. So I’m going to close this issue! The README has good instructions on how to build it if you’re finding out that it builds and runs for the first time through a github notification!

from surge.

GeorgeNs avatar GeorgeNs commented on May 31, 2024

Hey,that's really hard work,it works!
Just may i add some notes for linux compilation instructions?
in order to build the vst2 something like this is needed:
export VST2SDK_DIR={...where the sdk2 is....}
then removing --:
./build-linux.sh clean
./build-linux.sh build
and finally copying the contents of data into Documents/Surge/
can have also the presets available.
Thanks!

from surge.

esaruoho avatar esaruoho commented on May 31, 2024

Hey,that's really hard work,it works!
Just may i add some notes for linux compilation instructions?
in order to build the vst2 something like this is needed:
export VST2SDK_DIR={...where the sdk2 is....}
then removing --:
./build-linux.sh clean
./build-linux.sh build
and finally copying the contents of data into Documents/Surge/
can have also the presets available.
Thanks!

.. hmm. the export VST2SDK_DIR has been added into the readme.md as of yesterday.. the -- removal has also been done, yesterday. are you sure you're viewing the newest readme.md?

from surge.

GeorgeNs avatar GeorgeNs commented on May 31, 2024

Really???yes pretty sure,I am on master branch

from surge.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.