liuanlin-mx / MXTune

pitch correction plugin for VST
GNU General Public License v3.0
157 stars 8 forks source link

Can't get it to build on Arch #11

Open derkrasseleo opened 1 year ago

derkrasseleo commented 1 year ago

I cloned the repository and tried the commands for linux but I can't get it to build. When running cmake .. -DCMAKE_CXX_COMPILER=g++ -DCMAKE_C_COMPILER=gcc -G "Unix Makefiles" I just get this error:

CMake Error at CMakeLists.txt:176 (add_library):
  Cannot find source file:

    /home/leo/Dokumente/git/MXTune/JUCE/JuceLibraryCode/include_juce_audio_plugin_client_Unity.cpp

  Tried extensions .c .C .c++ .cc .cpp .cxx .cu .mpp .m .M .mm .ixx .cppm .h
  .hh .h++ .hm .hpp .hxx .in .txx .f .F .for .f77 .f90 .f95 .f03 .hip .ispc

CMake Error at CMakeLists.txt:176 (add_library):
  No SOURCES given to target: mx_tune
liuanlin-mx commented 1 year ago

You need to install juce and vst3 sdk

Download the VST SDK (http://www.steinberg.net/en/company/developers.html) copy vstsdk2.4/pluginterfaces to VST_SDK/VST3_SDK/ copy VST_SDK/VST3_SDK to MXTune/

Download Juce (https://github.com/juce-framework/JUCE 5.4.7)

run Projucer File->Open MXTune/JUCE/mx_tune.jucer File->Global Paths modify "Path to JUCE" and "JUCE Modules" File->Save All

├── JUCE │   ├── Builds │   ├── JuceLibraryCode │   └── Source ├── VST3_SDK │   ├── base │   ├── bin │   ├── cmake │   ├── pluginterfaces │   ├── public.sdk │   ├── tools │   ├── vst3_doc │   └── vstgui4

derkrasseleo commented 1 year ago

I still get this error

In File, included from /home/leo/Dokumente/git/MXTune/JUCE/JuceLibraryCode/modules/juce_audio_plugin_client/juce_audio_plugin_client_VST2.cpp:27,
                 von /home/leo/Dokumente/git/MXTune/JUCE/JuceLibraryCode/include_juce_audio_plugin_client_VST2.cpp:9:
/home/leo/Dokumente/git/MXTune/JUCE/JuceLibraryCode/modules/juce_audio_plugin_client/VST/juce_VST_Wrapper.cpp:104:10: fatal error: pluginterfaces/vst2.x/aeffect.h:  File or Folder not found
  104 | #include "pluginterfaces/vst2.x/aeffect.h"
liuanlin-mx commented 1 year ago

need vstsdk2.4

derkrasseleo commented 1 year ago

Thank you, the JUCE error is gone now, but that means you can't really build a fully open source version of this plugin, right? And where can you normally get the vst_sdk?

derkrasseleo commented 1 year ago

Would it be possible to only make an LV2 on linux? If you tell what I have to change in Projucer/Makefile, I can test it for you

liuanlin-mx commented 1 year ago

Yes But you can turn off vst2.x and only compile vst3.x

vst_sdk2.4, vst3_sdk are provided by Steinberg, but vst_sdk2.4 download access has been closed

liuanlin-mx commented 1 year ago

JUCE doesn't support LV2

derkrasseleo commented 1 year ago

But you can turn off vst2.x and only compile vst3.x

Is turning it off in Projcuer (Plugin formats) enough?

JUCE doesn't support LV2

I think support was added in v7.0, but as you use 5.x, it's probably not possible to compile LV2s.

And also, if you have the time, could you take a look at these compile errors?

In File, included from /home/leo/Dokumente/git/MXTune/JUCE/JuceLibraryCode/modules/juce_gui_basics/juce_gui_basics.cpp:314:
/home/leo/Dokumente/git/MXTune/JUCE/JuceLibraryCode/modules/juce_gui_basics/native/juce_linux_X11_Windowing.cpp: In element function »void juce::LinuxComponentPeer::updateBorderSize()«:
/home/leo/Dokumente/git/MXTune/JUCE/JuceLibraryCode/modules/juce_gui_basics/native/juce_linux_X11_Windowing.cpp:2839:50: Fehler: Aggregat »std::array<long unsigned int, 4> sizes« has incomplete type and cannot be defined
 2839 |                     std::array<unsigned long, 4> sizes;
      |                                                  ^~~~~
/home/leo/Dokumente/git/MXTune/JUCE/JuceLibraryCode/modules/juce_gui_basics/native/juce_linux_X11_Windowing.cpp: In element funcion »void juce::Displays::findDisplays(float)«:
/home/leo/Dokumente/git/MXTune/JUCE/JuceLibraryCode/modules/juce_gui_basics/native/juce_linux_X11_Windowing.cpp:3655:45: Fehler: Aggregat »std::array<long int, 4> position« has incomplete type and cannot be defined
 3655 |                         std::array<long, 4> position;
      |                                             ^~~~~~~~
liuanlin-mx commented 1 year ago

I updated the juce version

I did not encounter this error

derkrasseleo commented 1 year ago

Seems to Linux specific, did you build for Linux or Windows? It's wierd, no matter what plugin type I select (VST, VST3, LV2) I get different compile errors every time :(

derkrasseleo commented 1 year ago

I am now trying to build only VST3 with juce 5.4.7, do you have any idea why ld can't find my libraries? I've checked /usr/lib/ and the're all there..

/usr/bin/ld: cannot find -lrubberband: File or folder not found
/usr/bin/ld: cannot find -lSoundTouch: File or folder not found
/usr/bin/ld: cannot find -laubio: File or folder not found
/usr/bin/ld: cannot find -lfftw3f: File or folder not found
/usr/bin/ld: cannot find -lsamplerate: File or folder not found
collect2: Error: ld returned 1 as End-Status
make[2]: *** [CMakeFiles/mx_tune.dir/build.make:625: /home/leo/Dokumente/git/MXTune/cmake-build-cmake/output/libmx_tune.so] Error 1
make[1]: *** [CMakeFiles/Makefile2:83: CMakeFiles/mx_tune.dir/all] Fehler 2
make: *** [Makefile:91: all] Error 2
liuanlin-mx commented 1 year ago

SoundTouch:

./bootstrap 
./configure --enable-static --disable-shared
make CXXFLAGS="-DSOUNDTOUCH_PREVENT_CLICK_AT_RATE_CROSSOVER=1 -fvisibility=hidden -fdata-sections -ffunction-sections -fPIC" LDFLAGS="-fPIC"
sudo make install

Other ubuntu : sudo apt install libfftw3-dev libaubio-dev librubberband-dev libsamplerate0-dev

liuanlin-mx commented 1 year ago

mxtune use static library

build SoundTouch

./bootstrap 
./configure --enable-static --disable-shared
make CXXFLAGS="-DSOUNDTOUCH_PREVENT_CLICK_AT_RATE_CROSSOVER=1 -fvisibility=hidden -fdata-sections -ffunction-sections -fPIC" LDFLAGS="-fPIC"
sudo make install

build aubio

Download waf (https://waf.io/)

./waf configure --enable-fftw3f --disable-tests --notests --disable-examples --disable-wavread --disable-wavwrite CFLAGS='-fvisibility=hidden -fdata-sections -ffunction-sections'
./waf build --disable-tests --notests --disable-examples
sudo ./waf install --disable-tests --notests --disable-examples
``

### build libsamplerate

./configure CFLAGS=-fPIC LDFLAGS=-fPIC make -j4 sudo make install


### build rubberband

make -f otherbuilds/Makefile.linux sudo cp -rf rubberband /usr/local/include/ sudo cp -rf lib/* /usr/local/lib/

liuanlin-mx commented 1 year ago

https://codeberg.org/soundtouch/soundtouch https://github.com/aubio/aubio https://github.com/libsndfile/libsamplerate https://breakfastquay.com/rubberband/

Methods for linking dynamic libraries: Remove -Wl,-Bstatic from the cmakelist.txt file

derkrasseleo commented 1 year ago

Do I need to build the dependencies on my own if I already have them in /usr/lib/ ?

derkrasseleo commented 1 year ago

It also says in the README, that you have to modify the VST SDK, but I can't find the lines you mentioned, could you take a look if they're still there and if not, update the README? Generally, the README and build instructions are very bad and unclear

liuanlin-mx commented 1 year ago

Do I need to build the dependencies on my own if I already have them in /usr/lib/ ?

Not needed if it's a static library but ,soundtouch is required

liuanlin-mx commented 1 year ago

It also says in the README, that you have to modify the VST SDK, but I can't find the lines you mentioned, could you take a look if they're still there and if not, update the README? Generally, the README and build instructions are very bad and unclear

These need to be modified on windows only

JamesCrompton commented 1 year ago

I did: pacman -S --asdeps --needed make cmake autoconf libtool fftw libsamplerate juce vst3sdk soundtouch aubio python-aubio Removed -Wl,-Bstatic from CMakeLists.txt copied vstsdk2.4/pluginterfaces/ to MXTune/VST_SDK/VST3_SDK

mkdir build-cmake
cd build-cmake
cmake .. -DCMAKE_CXX_COMPILER=g++ -DCMAKE_C_COMPILER=gcc -G "Unix Makefiles"
make -j4

and got:

make[1]: *** [CMakeFiles/Makefile2:83: CMakeFiles/mx_tune.dir/all] Error 2
make: *** [Makefile:91: all] Error 2
derkrasseleo commented 1 year ago

What errors are you actually getting? If you look at the output of the make command, you should see the traceback..

JamesCrompton commented 1 year ago

That was the whole error message. Before it there were a lot of warnings, but no errors.

liuanlin-mx commented 1 year ago

That was the whole error message. Before it there were a lot of warnings, but no errors.

Update the cmakelists.txt file

JamesCrompton commented 1 year ago
CMake Error at CMakeLists.txt:216 (add_library):
  Cannot find source file:

    /home/james/MXTune/JUCE/JuceLibraryCode/include_juce_audio_plugin_client_Unity.cpp

I think I'll just wait for the next release.

derkrasseleo commented 5 months ago

Unfortunately, I still can't get this to build, running the build_linux.sh throws this error.

 File "/home/leo/Documents/git/MXTune/third_party/build/aubio-0.4.9/waflib/Context.py", line 5, in <module>
    import os,re,imp,sys
ModuleNotFoundError: No module named 'imp'

Could be a problem of python 3.12 deprecating the imp package. Here's the issue: https://github.com/aubio/aubio/issues/394

derkrasseleo commented 5 months ago

Also, to get an aur package on arch, it would require to get a build without the vst2 sdk which is not possible right?

derkrasseleo commented 5 months ago

I tried modifying the build script to build with the git version of aubio and my local waf install:

wget -c https://github.com/aubio/aubio/archive/refs/heads/master.tar.gz
tar xvf master.tar.gz -C build
pushd build/aubio-master/
waf configure --enable-fftw3f --disable-tests --notests --disable-examples --disable-wavread --disable-wavwrite CFLAGS="-fvisibility=hidden -fdata-sections -ffunction-sections"
waf build --disable-tests --notests --disable-examples
sudo waf install --disable-tests --notests --disable-examples
popd

Now I get this error: No function 'CFLAGS=-fvisibility=hidden -fdata-sections -ffunction-sections' defined in /home/leo/Documents/git/MXTune/third_party/build/aubio-master/wscript