vstgui / clang

DSP, Plugin and Host development discussion.
Post Reply New Topic
RELATED
PRODUCTS

Post

Hi,
as I have already written in this thread I have started in plug-in development as a C++ newbie (but coded in other languages already). I started with the VST3 SDK, took the adelay example and continued from there.
I'm creating a delay where I can set every delay-repetition individual in gain, timing and panning - and hell yeah it works now (after creating a modulo based ringbuffer)! :)

So I thought the next step is creating a gui for it and downloaded vstgui. But as I'm new in C++ and don't understand all the compiler is trying to tell me and somebody mentioned that vstgui is "a pain in the ass" - I've got problems in get it running.

When I try just to built the example (after I set the vstsdk2.4 header search path) the compiler simply says:

Code: Select all

Command /Developer/usr/bin/clang failed with exit code 1
Build task failed without generating error messages.
Build task failed without generating error messages.
next to some deprecated warnings

clang --version says:
Apple clang version 3.0 (tags/Apple/clang-211.12) (based on LLVM 3.0svn)

Any ideas what's wrong with it?


When I add the vstgui_mac.mm in my delay project and added the header searchpath as told in the docs the compilers complains about:

Code: Select all

Ld /Users/<username>/Library/Developer/Xcode/DerivedData/adelay-ctuxgxgcmhnjakdwslyxfrwefdau/Build/Products/Debug/adelay.vst3/Contents/MacOS/adelay normal i386
    cd "/Users/<username>/Documents/vst/VST3 SDK/public.sdk/samples/vst/adelay/mac"
    setenv MACOSX_DEPLOYMENT_TARGET 10.6
    /Developer/usr/bin/clang++ -arch i386 -bundle -isysroot /Developer/SDKs/MacOSX10.6.sdk -L/Users/<username>/Library/Developer/Xcode/DerivedData/adelay-ctuxgxgcmhnjakdwslyxfrwefdau/Build/Products/Debug -F/Users/<username>/Library/Developer/Xcode/DerivedData/adelay-ctuxgxgcmhnjakdwslyxfrwefdau/Build/Products/Debug -filelist /Users/<username>/Library/Developer/Xcode/DerivedData/adelay-ctuxgxgcmhnjakdwslyxfrwefdau/Build/Intermediates/adelay.build/Debug/adelay.build/Objects-normal/i386/adelay.LinkFileList -mmacosx-version-min=10.6 -framework Carbon -framework Cocoa /Users/<username>/Library/Developer/Xcode/DerivedData/adelay-ctuxgxgcmhnjakdwslyxfrwefdau/Build/Products/Debug/libbase.a -o /Users/<username>/Library/Developer/Xcode/DerivedData/adelay-ctuxgxgcmhnjakdwslyxfrwefdau/Build/Products/Debug/adelay.vst3/Contents/MacOS/adelay

Undefined symbols for architecture i386:
  "_vImageUnpremultiplyData_ARGB8888", referenced from:
      VSTGUI::CGBitmapPixelAccess::CGBitmapPixelAccess(VSTGUI::CGBitmap*, bool) in vstgui_mac.o
  "_vImagePremultiplyData_ARGB8888", referenced from:
      VSTGUI::CGBitmapPixelAccess::~CGBitmapPixelAccess() in vstgui_mac.o
  "VSTGUI::gBundleRef", referenced from:
      VSTGUI::getBundleRef() in vstgui_mac.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)


Well... I think you all know this "I have no idea what I'm doing"-dog meme. :-/

And one more thing:
You have told me to better switch to AU or VST2 - well I tried. But there is one very stupid issue:
I took a look at AU and built an example, but either logic nor cubase (at which I'm not sure if it supports AU at all) did find it although I thought I copied the component file in the right directory (/Library/Audio/Plug-Ins/Components) - what must be done there - I always thought the DAWs just scan the directories for plugins?

And I know - these are gooddamn newbie questions and I'm sorry for that (and going to the corner to be ashamed of myself right after creating this post), but you on this board are the only guys I know who have experience with this.
So thank you a lot for helping me.

Post

The first two link errors will be solved if you add the Accelerate framework to the "Link Binary with Libraries" in the "Build Phase" project settings. The third one looks like you forgot to add vstguieditor.cpp to your project.

Post

As for the AU not showing up in Logic or Cubase, all AUs must be validated before a host willl load them. It's part of Apple's way of making sure that a plug-in is generally going to behave well. The process is fairly straightforward. You use "auval" to validate like so (at the command line/terminal):
auval -v [type] [subtype] [manufacturer]

All of the tags have to be (or should be) defined in your plug-in. 'type' is the effect type (such as 'aufx'), subtype is the component effect subtype (such as 'lpas') and manufacturer is a four-letter string representing you or your company (Apple's is 'appl'). Auval will run to try and verify your plug-in.

Post

Hi, thanks for the answers, but they didn't help.

I validated the example (TremoloUnit). First ran auval -a where it was listed and and then -v and the params displayed at -a. auval said then AU VALIDATION SUCCEEDED.
But it's still not listed / found with Logic Express. (It is located at /Library/Audio/Plug-Ins/Compontents which should be fine as other plug ins are there, too)

The Accelerarte.framework was already added and I don't find a file called vstguieditor.cpp on my computer (where should this be?)

Post

Well I got it now. Seems like the linking in xcode doesn't like absolute paths from root (/usr/...) but must be relative from source path (../../vstgui). And I took the vstgui delivered from Steinbergs vst3 api not the one of sourceforge.

But (of course) it's still messing up. I compiled both: tutorial.vst and tutorial 2.vst but just tutorial appears in Cubase (well - at least :-/) with an empty screen. (Just the standard Cubase header where you can bypass and choose a preset).

Please tell me that I'm not the only one who has to deal with these f*ck-ups in beginning. :-(
I mean, I expected all the maths are going to be hard, or threading, and that C++ is not an easy language and coding guis will be quite difficult, too. But not, that tutorials won't work, created vsts / aus won't load with no reason / feedback given and so on...

Post

Don't worry yout're not alone setting up the IDE projects correctly is a pita and lots of people get stuck at that stage

Post Reply

Return to “DSP and Plugin Development”