compile and install JuceOPLVSTi plugin

Post fully complete "how to" guides and tutorials here. This is a great place to get feedback on stuff you might put in the wiki.

Moderators: khz, MattKingUSA

davephillips
Establlshed Member
Posts: 256
Joined: Sat Aug 15, 2015 1:05 pm

compile and install JuceOPLVSTi plugin

Postby davephillips » Tue Mar 15, 2016 1:36 am

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

bsa
Posts: 3
Joined: Sat May 14, 2016 12:53 pm

Re: compile and install JuceOPLVSTi plugin

Postby bsa » Sat May 14, 2016 12:57 pm

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

estonoesunusuario
Posts: 1
Joined: Sat May 28, 2016 3:57 am

Re: compile and install JuceOPLVSTi plugin

Postby estonoesunusuario » Sat May 28, 2016 4:08 am

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/ufr21o12xbutaoj/JuceOPLVSTi.so?dl=0.
SBI drag 'n drop seems like isn't working

davephillips
Establlshed Member
Posts: 256
Joined: Sat Aug 15, 2015 1:05 pm

Re: compile and install JuceOPLVSTi plugin

Postby davephillips » Tue Jun 07, 2016 4:20 pm

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

bsa
Posts: 3
Joined: Sat May 14, 2016 12:53 pm

Re: compile and install JuceOPLVSTi plugin

Postby bsa » Sat Jul 09, 2016 12:53 pm

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)

davephillips
Establlshed Member
Posts: 256
Joined: Sat Aug 15, 2015 1:05 pm

Re: compile and install JuceOPLVSTi plugin

Postby davephillips » Sat Jul 09, 2016 5:05 pm

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

bsa
Posts: 3
Joined: Sat May 14, 2016 12:53 pm

Re: compile and install JuceOPLVSTi plugin

Postby bsa » Mon Jul 11, 2016 1:00 pm

Dave,

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

Bruce

rghvdberg
Establlshed Member
Posts: 443
Joined: Mon May 12, 2014 7:11 am

Re: compile and install JuceOPLVSTi plugin

Postby rghvdberg » Tue Jul 12, 2016 1:16 pm

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 :-/

rghvdberg
Establlshed Member
Posts: 443
Joined: Mon May 12, 2014 7:11 am

Re: compile and install JuceOPLVSTi plugin

Postby rghvdberg » Tue Jul 12, 2016 1:24 pm

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

davephillips
Establlshed Member
Posts: 256
Joined: Sat Aug 15, 2015 1:05 pm

Re: compile and install JuceOPLVSTi plugin

Postby davephillips » Tue Jul 12, 2016 11:22 pm

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

rghvdberg
Establlshed Member
Posts: 443
Joined: Mon May 12, 2014 7:11 am

Re: compile and install JuceOPLVSTi plugin

Postby rghvdberg » Wed Jul 13, 2016 7:44 am

Yup
I'm on Mint 17.3
Gonna test it in a virtual machine Ubuntu 16.04, see if it makes a difference.

rghvdberg
Establlshed Member
Posts: 443
Joined: Mon May 12, 2014 7:11 am

Re: compile and install JuceOPLVSTi plugin

Postby rghvdberg » Wed Jul 13, 2016 8:15 am

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.

rghvdberg
Establlshed Member
Posts: 443
Joined: Mon May 12, 2014 7:11 am

Re: compile and install JuceOPLVSTi plugin

Postby rghvdberg » Wed Jul 13, 2016 9:06 am

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


Works in ardour 4.7 too, so it's looking good :-)
You do not have the required permissions to view the files attached to this post.

davephillips
Establlshed Member
Posts: 256
Joined: Sat Aug 15, 2015 1:05 pm

Re: compile and install JuceOPLVSTi plugin

Postby davephillips » Wed Jul 13, 2016 11:37 am

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

rghvdberg
Establlshed Member
Posts: 443
Joined: Mon May 12, 2014 7:11 am

Re: compile and install JuceOPLVSTi plugin

Postby rghvdberg » Wed Jul 13, 2016 7:27 pm

Gonna try the Synister first :-)
https://github.com/the-synister/the-source


Return to “HOW TOs, Tips & Tricks”

Who is online

Users browsing this forum: No registered users and 0 guests