Demo VST PlugIn not showing on DAW effects list Windows


#1

Hello all,

my apologies if this subject is becoming annoying, I found a few similar posts on the forum but none of them solved my problem.

Like the subject says, my freshly compiled Demo VST PlugIn is not showing on the effects list in either Adobe Audition or Audacity. I work under WinXP and compiled with VC6.

I am only interested in VST at the moment, no AU or RTAS for now. These are the steps I took so far:

  1. Installed the vstsdk2.4 from Steinberg.

  2. Downloaded Juce 1.5 from SF and compiled in both Debug and Release modes using #define JUCE_PLUGINHOST_VST 1 in the juce_Config header. No problems compiling either modes once I added the appropriate paths for Steinberg’s VST SDK.

  3. The Visual Studio project+solution in juce\extras\audio plugins\demo\build\win32 are not backwards compatible with VC6 so I created an empty Win32 DLL project from scratch.

  4. Wrote slightly modified versions of the DemoJuiceFilter and DemoEditorComponent classes (a simple Plugin to adjust gain). I included the regular juce.h instead of the amalgamated version. I also set #define JucePlugin_Build_VST 1 in the JucePluginCharacteristics.h

  5. Compiled in both Release and Debug modes and - again - once I included the right paths for Juce, had no compilation problems.

  6. I copied the resulting TestPlugin.dll to my standard VST Plugin directory (which is also in the VST_PATH Windows environment variable).

  7. In Audition I went to Effects->Add/Remove Directory and added that dir. Then I ran the Effects->VST Plug-In Manager and found my TestPlugin on the list. I selected it to be enabled.

8 ) By clicking ok Audition refreshed it’s effects list, but my Plugin is nowhere to be found. I tried changing the Plugin’s name, it’s “unique PluginCode”, nothing. Same problem in Audacity even while using the VST-Bridge Plugin.

Any Ideas of what I should try next? Any help is greatly appreciated.


#2

The first thing I’d do is to try running your host in the debugger - you might see it crashing or something. If it loads at all, you can then step through the code and see how far it gets - usually that’ll give a clue about what’s going on.


#3

Using a compiler which is less than 10 years old is a good start too :slight_smile:
http://www.microsoft.com/exPress/


#4

if you created a DLL win VC6, it disables RTTI i had problem with that, it causes all sort of trouble.

really get some newer VS if your on windows, or you will have problems, a lot.


#5

Thank you all for your replies.

Good news! Upgrading to Visual Studio 2005 did the trick!

Like you warned me, VC6 was giving me all kinds of trouble. Wasn’t even able to run the PlugIn in Debug mode. Unfortunately, VC6 is what is used at my workplace (don’t ask me why) so I had to install my own personal copy of Visual Studio 2005 this morning.

One question, though. When compiling the JuceDemoPlugin solution found in juce\extras\audio plugins\demo\build\win32, the output file was set to (ProjectName).dpm, an extension which I'm unfamiliar with. I simply changed this to (ProjectName).dll. Googling the dpm extension didn’t shed any light. What kind of file is this?

Finally I copied the resulting JuceDemoPlugin.dll file to my VST PlugIn directory, and tested it successfully in Ableton Live 7 and Adobe Audition 3.0. I am really impressed by the slick GUI, even for a very small and basic PlugIn!

Best regards,


#6

yeah the DPM extension is weird i guess it means Dynamic Plugin Module or something. On windows it won’t work, you need to rename it to DLL, the DPM stuff only works for JUCE based host/plugin pair.


#7

DPM = Digidesign Plugin Module. (i.e. an RTAS)


#8

Ooh I see!

And being able to simple rename it as dll for use as VST is part of the “polymorphic” characteristic of the PlugIns, I suppose?


#9

Hi again!

Sorry if this is now the wrong thread, but I decided to post here for the sake of continuity.

So now that the JuiceDemoPlugin is working, I wanted to start my own project from scratch, and make it as lean and simple as possible.

Is it possible to create a Plugin using only 2 classes (one for the Plugin itself and one for the GUI), whithout any of the wrappers or the amalgamated juce?

I am getting unresolved symbol errors while linking (compile output below) even though I have juce/bin in my additional library directories.

Anyone know what I am doing wrong?


1>------ Build started: Project: TestPlugin, Configuration: Release Win32 ------
1>Compiling…
1>EntroGainEditor.cpp
1>JUCE! Library to link to: jucelib_static_Win32.lib
1>EntroGain.cpp
1>JUCE! Library to link to: jucelib_static_Win32.lib
1>Generating Code…
1>Linking…
1>EntroGain.obj : error LNK2019: unresolved external symbol "public: __thiscall juce::String::String(wchar_t const * const)"
1>EntroGainEditor.obj : error LNK2001: unresolved external symbol "public: __thiscall juce::String::String(wchar_t const * const)"
1>EntroGain.obj : error LNK2019: unresolved external symbol "public: void __thiscall juce::XmlElement::setAttribute(wchar_t const * const,double)"
1>EntroGain.obj : error LNK2019: unresolved external symbol “public: void __thiscall juce::XmlElement::setAttribute(wchar_t const * const,int)”

1>.\Release/TestPlugin.dll : fatal error LNK1120: 9 unresolved externals


#10

you need to link to juce, the linker errors come from juce core, either add juce.lib (whatever version your using) or add juce_amalgamated.cpp through a wrapper directly to the project (look at any demo code in the juce tree to see how this is done)


#11

This must be a really silly error, but I just can’t get it to work. In the project properties->Linker options, I have …\juce\bin in the additional library directories. Then in linker inputs i also have jucelib_static_Win32_debug.lib.

I tried different ways of writing the paths, absolute path etc, but got always the same errors. The path stated above is the correct one relative to my project.

you need to link to juce, the linker errors come from juce core,
either add juce.lib (whatever version your using)
That is what I am doing (though somehow incorrectly).

or add juce_amalgamated.cpp through a wrapper directly to the
project (look at any demo code in the juce tree to see how this is done)
I already successfully compiled the amalgamated demo. Now I want to try to compile a lean object which only includes juce.h.

Any more ideas will be appreciated!


#12

Another clue might be that the function names in the error messages are garbled:

error LNK2019: unresolved external symbol ““public: __thiscall juce::String::String(wchar_t const * const)” (??0String@juce@@QAE@QB_W@Z)” in function ““public: virtual class juce::String const __thiscall CEntroGain::getParameterName(int)” (?getParameterName@CEntroGain@@UAE?BVString@juce@@H@Z)”. EntroGain.obj

(I removed this garble from my earlier post for the sake of readability, but after googling a bit I think it might play a role)


#13

Just looks like a bog-standard “not linking to the juce lib” error to me.

What makes you think that it would be any leaner?


#14

juce amalgamated is a lean version of juce, just contained in a single cpp file. instead of linking to the lib file you have the source. it’s easier that’s all.

but if you really want to link to the .lib then you should do so, the errors you are pasting clearly state that the link is not happening.


#15

Hi again!

I finally (!) figured out that I had to include the juce project to my Visual Studio Solution. Simply adding the juce lib to the linker properties wasn’t doing it for me.

Thank you all for your replies… and now to do some tweaking… :slight_smile: