Basic Compiling Problems

I am new to JUCE, but not to Linux. I am running Ubuntu 14.04, JUCE 3.1, and am having problems with making a simple VST (the redwood audio tutorial).

So I found a copy of vstsdk2.4 online, and put that in the folder '~/SDKs'.  In JUCE my path for the VST folder is '~/SDKs/vstsdk2.4'. I get the following error in the terminal:

Compiling juce_VST_Wrapper.cpp
../../../juce/modules/juce_audio_plugin_client/VST/juce_VST_Wrapper.cpp:277:29: warning: multi-character character constant [-Wmultichar]
         setUniqueID ((int) (JucePlugin_VSTUniqueID));
In file included from ../../../juce/modules/juce_audio_plugin_client/VST/juce_VST_Wrapper.cpp:83:0:
/home/eric/SDKs/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp: In member function ‘virtual void AudioEffectX::resume()’:
/home/eric/SDKs/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp:307:69: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
  if (cEffect.flags & effFlagsIsSynth || canDo ("receiveVstMidiEvent") == 1)
In file included from ../../../juce/modules/juce_audio_plugin_client/VST/juce_VST_Wrapper.cpp:84:0:
/home/eric/SDKs/vstsdk2.4/public.sdk/source/vst2.x/audioeffect.cpp: In member function ‘virtual void AudioEffect::int2string(VstInt32, char*, VstInt32)’:
/home/eric/SDKs/vstsdk2.4/public.sdk/source/vst2.x/audioeffect.cpp:512:24: warning: narrowing conversion of ‘(((int)((char)digit)) + 48)’ from ‘int’ to ‘char’ inside { } [-Wnarrowing]
    char temp[2] = {'0' + (char)digit, '\0'};
Compiling juce_VST3_Wrapper.cpp
Linking StereoWidthCtrl


For some reason, even though VST3 is not selected, a file with the '.so' extension is created, which is something that I cannot use in Audacity. I have no idea why this is happening, and have tried variations of using vstsdk2.4 with VST3 SDK and nothing has worked. I have spent two days trying everything I can, and no progress to show. Help would be greatly appreciated.  


To test the plugin generated, try running it in the plugin host example (just to prove it's behaving)

Have you tried any other VST plugins running on your Linux Audacity?


Also, it would be good if you could use the newest version of JUCE. JUCE version 3.2.0 has gotten a lot of linux love lately.

Linux plugins are shared objects, so they get a *.so extension.

There's nothing wrong with it, you built a Linux-VST plugin just fine.

The problem is that VST3 is not supported by Audacity. Where else can I use the .so file within linux?

I think I was originally using this, and ran into similar problems. Then I built it from the git source and still had this issue, as well as the issue I found others having of JUCE not finding audioeffectx.h

Thanks for the reply. 

I was able to get the Plugin Host running, but the .so file will not open inside of it; says its not a valid filtergraph file, which is the same problem with a plugin I downloaded called parametric.ny. 

The parametric.ny plugin works in audacity, but I'm not sure how to get other types working. For example, can a .dll file be used in Audacity? If not, what kind of extension should a VST file have in order for it to be working in Audacity, other than the .ny?

Tracktion may be the only VST3 host I know of on linux. There may be others, but certainly not very many!

Awesome, Tracktion does indeed allow me to use a .so plugin, thank you very much for that.


Portability is not a huge concern for me at the moment, but I would like to eventually be able to make a plugin that workds everywhere. What should I do about the fact that an ordinary VST is not being generated? Should I just be using the VST3 SDK folder, and not the vstsdk2.4? 


And in order to make it work on Mac/Windows, do I need to do more than just checking the boxes? For example, if I generate the Mac part, a file is created with an Xcode project, so do I need to build it the Audio Unit through Xcode?

Does VST3 SDK actually builds on Linux?

I've tried it before and I don't think it does.
There are several non-implemented ifdef sections in there.


It appears to build on Linux, but I'm new to JUCE so I'm not exactly sure what's going on. The '.so' file that is generated is certainly not from the vstsdk2.4 folder I have, so I would assume it is the VST3 SDK. Also, the file generated does not work as a VST in Audacity, but it does work in Tracktion, which supports VST3, while Audacity does not.