Page 1 of 2

compile and install JuceOPLVSTi plugin

Posted: Tue Mar 15, 2016 1:36 am
by davephillips
Greetings,

By request, here are the instructions for building and installing Bruce Sutherland's JuceOPLVSTi plugin (http://bsutherland.github.io/JuceOPLVSTi/) on Linux. You will need a C/C++ development environment and an up-to-date installation of the Juce framework (https://www.juce.com/). This is not a tutorial on compiling C/C++ source code or using Juce and the Introjucer. If you need such tutorials, please consult Google to find and read the needed documentation. You will also need the VST SDK from Steinberg GmbH. I use version 2.4 of the SDK, other versions may require path changes not covered here.

I keep source code in $HOME/src, so I start by getting the code from git and downloading it there, after which I enter the new directory.

Code: Select all

cd $HOME/src
git clone https://github.com/bsutherland/JuceOPLVSTi.git
cd JuceOPLVSTi
The next step runs the Juce Introjucer on the code's jucer file. I keep the Juce stuff in $HOME/src too, thus the file path used here. Use the correct path to your Introjucer.

Code: Select all

../JUCE-master/extras/Introjucer/Builds/Linux/build/Introjucer JuceOPLVSTi.jucer
The Introjucer will display a files tree with the JuceOPLVSTi label. Right-click that label and select Create Linux Makefile Target from the context menu. The Linux target will be added at the end of the files tree.

In the files tree click on the juce_audio_basics module. If necessary set its path and/or update all other Juce modules.

Click on the Linux Makefile label and set location of VST folder, e.g. /home/dave/SDKs/vstsdk2.4. Save, then quit the Introjucer, your work is done there.

At this point you can run the Makefile created by the Introjucer, but the run will fail with many errors, mostly regarding Bit32u. Make the following edit at line 82 in Source/config.h and line 12 in Source/DROMultiplexer.cpp. Change this :

Code: Select all

#if __APPLE__
to this :

Code: Select all

#if __APPLE__ || 1
Finally, open Source/hiopl.cpp and change this :

Code: Select all

#include "Hiopl.h"
to this :

Code: Select all

#include "hiopl.h"
You should now be able to run the Makefile successfully. If so, the binary will be located at Builds/LinuxMakefile/build/JuceOPLVSTi.so. Installation is easy as copying the plugin to your preferred VST plugin directory.

I've notified Bruce that his work will compile on Linux. Hopefully falkTX will include it in his DISTRHO ports, or another of his projects. Meanwhile, perhaps these instructions will aid the impatient.

Built and tested on Fedora 21 x86_64, GCC 4.9.2, Planet CCRMA rt kernel 4.0.5. Tests performed in Bitwig 1.3.6 and Ardour4 (git sources). I haven't tested every feature yet, but the synth sounds good and behaves well (no crashes or hangs on exit).

Many thanks to Bruce Sutherland for creating JuceOPLVSTi. Great thanks also to falkTX for his crucial assistance when I hit the wall, which usually happens quickly when I venture into C++ and/or Juce programming. Of course, any errors and inaccuracies in these instructions are my responsibility, so please advise me if you have suggestions for their improvement.

Best,

dp

Re: compile and install JuceOPLVSTi plugin

Posted: Sat May 14, 2016 12:57 pm
by bsa
Dave,

I've merged your changes into the repository. Thanks for taking the time to post the detailed instructions.

Hopefully it should build without modification under Linux now. I've just made a new release. If anybody builds a Linux version, I'd be very grateful if they could contribute a binary.

Thanks again.

Bruce

Re: compile and install JuceOPLVSTi plugin

Posted: Sat May 28, 2016 4:08 am
by estonoesunusuario
Hey, thanks for the guidance. I've just did a build for Linux on the latest JuceOPLVSTi release 0.13.1
Compiled with JUCE 4.2.1, and VST 3.6.5 SDK
Works great!! You can download it https://www.dropbox.com/s/ufr21o12xbuta ... Ti.so?dl=0.
SBI drag 'n drop seems like isn't working

Re: compile and install JuceOPLVSTi plugin

Posted: Tue Jun 07, 2016 4:20 pm
by davephillips
estonoesunusuario wrote:...SBI drag 'n drop seems like isn't working
Correct, and I haven't been able to find out how to make it work. Bruce doesn't seem inclined to add a File Load function, but the D&D should work anyway. I can't figure the source of the problem. Xfce ? JUCE ? The host (Ardour, Bitwig, etc) ? I could really use some help with the issue, let me know if anyone makes any headway with it.

Best,

dp

Re: compile and install JuceOPLVSTi plugin

Posted: Sat Jul 09, 2016 12:53 pm
by bsa
I've added a button to load SBI files in the latest release.

https://bsutherland.github.io/JuceOPLVSTi/

If anybody compiles under Linux, please let me know if any source changes were required. If they are, a pull request would be greatly appreciated. 8)

Re: compile and install JuceOPLVSTi plugin

Posted: Sat Jul 09, 2016 5:05 pm
by davephillips
bsa wrote:I've added a button to load SBI files in the latest release.

https://bsutherland.github.io/JuceOPLVSTi/

If anybody compiles under Linux, please let me know if any source changes were required. If they are, a pull request would be greatly appreciated. 8)
Thanks a lot, Bruce, it all builds OTB now and the new instrument loader works fine

Tested successfully with Bitwig 1.3.11 on Fedora 21 x86_64.

Best,

dp

Re: compile and install JuceOPLVSTi plugin

Posted: Mon Jul 11, 2016 1:00 pm
by bsa
Dave,

Great, thanks a lot for your build instructions, and for confirming!

Bruce

Re: compile and install JuceOPLVSTi plugin

Posted: Tue Jul 12, 2016 1:16 pm
by rghvdberg
Installed the latest JUCE
Introjucer is gone and we should use Projucer instead
Where did the Introjucer go??

If you've just updated to JUCE v4.2 from an earlier version, you'll probably
be a little puzzled to find that this folder is empty, apart from some abandoned
build folders that GIT has failed to delete, and you may be wondering what happened...

Historically, we had the Introjucer, which was open-source, and the Projucer,
which was closed-source. These shared a vast amount of their code, and we
wanted to find a way to blend them into a single project. We also found it
very tiresome and confusing for beginners to keep having to explain the
difference between the Introjucer and the Projucer.

So what we've done is to delete the Introjucer altogether! All of its open-source
functionality is now provided by our newly open-sourced version of the Projucer.
To keep the live-coding stuff secret, we squashed all of that functionality into a
closed-source DLL. You can build the Projucer yourself now from the open-source
folder in here, and it will run just fine (doing all the things that the old
Introjucer used to do) but if it can also find the DLL, it'll be able to use
all the fancy live-coding stuff too.
When I try to run Projucer I get

Code: Select all

~/build/JuceOPLVSTi $ ../JUCE/Projucer JuceOPLVSTi.jucer 
XIO:  fatal IO error 11 (Resource temporarily unavailable) on X server ":0"
      after 9 requests (9 known processed) with 0 events remaining.
so, i'm stuck :-/

Re: compile and install JuceOPLVSTi plugin

Posted: Tue Jul 12, 2016 1:24 pm
by rghvdberg
could it be a missing library ? (wild guess)

/build/JUCE $ ldd Projucer
linux-vdso.so.1 => (0x00007ffe22dd3000) :shock:
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f545eb39000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f545e91b000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f545e615000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f545e3ff000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f545e03a000)
/lib64/ld-linux-x86-64.so.2 (0x00007f545ed3d000

Re: compile and install JuceOPLVSTi plugin

Posted: Tue Jul 12, 2016 11:22 pm
by davephillips
rghvdberg wrote:could it be a missing library ? (wild guess)

/build/JUCE $ ldd Projucer
linux-vdso.so.1 => (0x00007ffe22dd3000) :shock:
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f545eb39000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f545e91b000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f545e615000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f545e3ff000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f545e03a000)
/lib64/ld-linux-x86-64.so.2 (0x00007f545ed3d000
Nothing out of line there, I've the same report for Projucer, but with a lot more dependencies. Is that the full output from ldd ?

Best,

dp

Re: compile and install JuceOPLVSTi plugin

Posted: Wed Jul 13, 2016 7:44 am
by rghvdberg
Yup
I'm on Mint 17.3
Gonna test it in a virtual machine Ubuntu 16.04, see if it makes a difference.

Re: compile and install JuceOPLVSTi plugin

Posted: Wed Jul 13, 2016 8:15 am
by rghvdberg
found an answer at https://forum.juce.com/t/linux-projucer ... up/18320/6
[ 99.693102] traps: Projucer[1190] trap invalid opcode ip:6a7f73 sp:7ffca57ddec0 error:0 in Projucer[400000+ae1000]

Seems like we've compiled the Projucer with some i7 specific instructions. I'll sort this out.

Re: compile and install JuceOPLVSTi plugin

Posted: Wed Jul 13, 2016 9:06 am
by rghvdberg
Did a successful compile of JUCE from git using this tutorial:
https://forum.juce.com/t/easy-juce-inst ... 6-04/18159
note: had to install libcurl4-gnutls-dev (https://forum.juce.com/t/list-of-juce-d ... inux/15121)

Thanks to your how-to, here's my build of JuceOPLVSTi.
Didn't have to edit any source files.
Load .SBI Instrument button is there :-) (not tried it yet)

https://drive.google.com/open?id=0B4Nur ... VNKSXE0VEk

Here's it running via carla-single native vst ~/.vst/JuceOPLVSTi.so
JuceOPLVSTi (GUI)_044.png
JuceOPLVSTi (GUI)_044.png (34.6 KiB) Viewed 4421 times
Works in ardour 4.7 too, so it's looking good :-)

Re: compile and install JuceOPLVSTi plugin

Posted: Wed Jul 13, 2016 11:37 am
by davephillips
rghvdberg wrote:...Here's it running via carla-single native vst ~/.vst/JuceOPLVSTi.so
JuceOPLVSTi (GUI)_044.png
Works in ardour 4.7 too, so it's looking good :-)
Outstanding. :) It's currently crashing Ardour5, I have yet to report that behaviour, but A5 is definitely in beta-stage at this point.

Btw, now that you know how to compile JUCE projects you might be interested in these items as well :

Ringmod - ring modulator

https://github.com/spoitras/Ringmod

Spaco - spatialization plugins

https://github.com/jdsierral/Spaco

Richter Tremolo - advanced tremolo plugin

https://github.com/jd-13/Richter-Tremolo

Carve Distortion

https://github.com/jd-13/Carve-Distortion


They all require that you produce the Linux Makefile yourself via Projucer/Introjucer. Now that you know how that's done you can take a swing at these projects for practice and maybe a few more interesting items for your collection of Linux VST plugins. :)

Best,

dp

Re: compile and install JuceOPLVSTi plugin

Posted: Wed Jul 13, 2016 7:27 pm
by rghvdberg
Gonna try the Synister first :-)
https://github.com/the-synister/the-source