First - thanks for such an awesome book and application. I've wanted to get into designing VSTs for a while, and the materials provided have made it a (relatively to any other solution out there) painless experience.
Now the pain:
How in the world do we compile a 64-bit .dll? I have followed the videos, and used the "make vst" option. I get all sorts of errors, from those where it is the wrong target machine to those where files cannot be found.
I have not dealt with VST3 types of plugins. I am just trying to make it similar to the .dll that is normally generated when building the project.
I don't post on boards much, but after 3 days of trying to figure this out I figured I had to ask.
Any help is greatly appreciated.
If you are compiling your RackAFX DLL and want use it as a VST2 or VST3 DLL (aka RAFX-DLL-as-VST2/3-DLL) here is the deal:
1) RackAFX v22.214.171.124 and earlier: only 32-bit compiling is available (this is documented in multiple locations in the Forum)
2) RackAFX v6.7.x and later (currently in beta testing): you can compile as 32 or 64 bit by simply choosing the appropriate mode from the Project Configuration dropdown list in Visual Studio and compile. The 64 bit version will show up in your (project name)/x64/Debug or (project name)/x64/Release folder, depending on which version you are compiling for. The resulting 64-bit DLL can run as either a 64-bit VST2 or 64-bit VST3 (by simply renaming the suffix from .dll to .vst3). We've been doing beta testing since February, and Reaper 64-bit has no problems seeing the plugin as 64-bit VST2 or VST3 version. We are still looking at other VST clients, though Reaper has been our VST2/3 client of choice for about a year now.
If you are using Make VST, Make AU, or Make AAX, you only need to choose the appropriate configuration (32 or 64 bit) in the compiler (XCode or Visual Studio) for the RAFX ported project and compile.
If you are following the Make VST videos, then I am guessing you have not installed the VST3 SDK and/or you have a folder hierarchy issue; the 32 and 64-bit Make VST projects in RAFX v126.96.36.199 work perfectly. The VST3 SDK (not RackAFX) requires your ported VST3 project to be in a specific location relative to the root folder. This is documented in multiple threads on this Forum, including this one:
In addition, if you are new to VST3, then you should compile the sample projects first (ADelay and note_expression_synth) to make sure your output folders and compiler are setup correctly.
The reason that pre-v188.8.131.52 versions of RAFX did not have a 64-bit option for the RAFX-as-VST2/3-DLL is that it requires me to rebuild and ship 20 separate library files that your RAFX DLL links to, which allows it to become a VST2 or VST3 plugin "on demand." This is in addition to the normal 20 libraries that are used in the 32-bit versions (which currently ship with v184.108.40.206).
The reason for so many *(&^(*&^-ing libraries is that VST3 and VSTGUI4 both use the std:: library. Unfortunately, the std:: binary is different for every version of Visual Studio, as well as each mode within (Debug vs. Release). It has nothing to do with RackAFX itself.
I am currently working on a big overhaul of RackAFX (has nothing to do with 64-bit compilation) for the next beta, v6.8.x which should be available before Aug 15, 2016. You can use the contact form and request a beta tester's password after that.
I followed the folder hierarchy, and it seems like all of the files are found correctly. I still get tons of errors including syntax errors (not in my own file) but things like this:
c:\vst3 sdk\public.sdk\my projects\fx projects\windows\soundsp\source\kickbuttonwp.h(18): error C2061: syntax error: identifier 'CControlListener'
c:\vst3 sdk\public.sdk\my projects\fx projects\windows\soundsp\source\knobwp.cpp(63): error C2039: 'v': is not a member of 'VSTGUI::CPoint'
c:\vst3 sdk\public.sdk\my projects\fx projects\windows\soundsp\source\vstprocessor.h(139): error C3668: 'Steinberg::Vst::Sock2VST3::Processor::createSubController': method with override specifier 'override' did not override any base class methods
There are hundreds more like those, so it may be something small. I set up the hierarchy as such:
Do these types of errors indicate a folder hierarchy issue or a version issue?
I used the vst3 3.6 SDK - so that may be an issue (?)
There are multiple 3.6 SDKs - 3.6.0, 3.6.5 and 3.6.6
It sounds like you are on SDK3.6.6, the latest one.
Amazingly, the authors of VSTGUI4.3 (which is part of the 3.6.6 SDK) changed the name of a critical base class from CControlListener to IControlListener, and they also changed the function prototypes of necessary functions, including createSubController( ) and createCustomView( ) which broke the old VST3 SDK code (as well as my projects, and RackAFX, which uses VSTGUI4 for the new main UI on the beta version). Why they decided to do this is something you would need to ask them... but it sucks for anyone using the SDK. My current beta version supports 3.6.6 (only) while RackAFX 220.127.116.11 supports 3.6.0 and 3.6.5.
In RackAFX 18.104.22.168, in View->Preferences you can choose the SDK you are using, SDK3.6.0 and 3.6.5, as those were the only SDKs released at the time. VSTGUI4.3 was released just prior to the VST3 3.6.6 SDK (a few months ago) and was not available when RackAFX v22.214.171.124 was released.
One of my biggest headaches is supporting the VST3 SDK; on several occasions, their authors have changed stuff that has broken code (as here with VSTGUI4.3), or broken the compiler setups, so that their own sample code from previous versions will not compile properly on their new SDKs. In several cases, their newest sample projects would not load into existing VST3 clients (e.g. the 3.6.6 note_expression_synth won't load into my version of Reaper). It is something that is completely out of my control; I've had no issues like this with either AU or AAX.
If you want to stay on RackAFX 126.96.36.199 (which is recommended if you are not into beta testing new versions) then the best thing to do would be to find a copy of the 3.6.0 or 3.6.5 VST3 SDK, then use View->Preferences to set the one you are using. It is against the VST3 Developer's license for me to post the old SDKs on my own website, otherwise I'd just let you download an old version, but I don't need trouble from Steinberg. With a little poking around, you should be able to find a site (or person) where you can download 3.6.0 or 3.6.5.
If you want to stay with the 3.6.6 SDK, then you need to use the beta version of RackAFX; you can use the Contact form and I will send you the password for the new Beta, which will work seamlessly with the 3.6.6 SDK and VSTGUI4.3 (which I like because it includes a new control called CSegmentButton which makes radio button designs simple). In fact, if you are using the Beta version of RackAFX v6.7.x or later, you must upgrade to the 3.6.6 SDK.
Thanks very much for the detailed explanation. What you posted makes perfect sense - as something seemed broken after I got the folder hierarchy set correctly.I'm going to go ahead and give the beta a shot with the 3.6.6 SDK and VSTGUI4.3 (and just as well, time permitting - I'll see how it works with RackAFX 188.8.131.52 in conjunction with the older vst3 SDK). I also look forward to checking out the latest version of RackAFX when it becomes available.
I went ahead and tried it with 184.108.40.206.
At first I had to make sure that the new VSTGUI was set up properly. After that, I was able to compile it as a 32 bit. I switched to x64 in Visual Studio - and voila! The 64-bit .dll was right there in the x64 folder. Quick and painless.
I tried the 64-bit RackAFX-generated .dll in Izotope RX v5 (where the 32 bit .dll would not work), and it loaded in with no problem.
I then used the "make VST" option, and compiled both 64 and 32 bit .vst3 versions (and also copied renamed .dlls) - placing all into their respective folders.
One problem I encountered is that not all of the images from the original resource folder carried over into the new resource folder. I'm not sure if that is something on my part or in the software. Some of my graphics (.png) appeared, but a couple of vertically stacked knobs (made with knobman) did not show up.
So when using the .dll/.vst3 files generated via "make VST" some of my graphics are not showing up - even if I copy them into the folder and re-compile.
I also tried the generated plugins (all of the different 32/64 bit versions in two freeware hosts: Audacity and OcenAudio - but none of the plugins loaded properly in either host).
The 32-bit .dll works fine in both Wavelab 6 and Sony Vegas Pro 11 (older hosts) and all of them (32 and 64 bit) load fine in Fl Studio 10.0.
Also, after building (in either the modern GUI or the older one) the interface constantly reads "Building | /" and never says "Complete" as the older version of RackAFX did.
I hope some of that feedback helps.
"One problem I encountered is that not all of the images from the original resource folder carried over into the new resource folder. I'm not sure if that is something on my part or in the software. Some of my graphics (.png) appeared, but a couple of vertically stacked knobs (made with knobman) did not show up.
So when using the .dll/.vst3 files generated via "make VST" some of my graphics are not showing up - even if I copy them into the folder and re-compile."
You need to manually add the new graphics to your .rc file in Visual Studio as shown in the Video on the main page of the website, then they should appear in your ported project. When doing the port, RackAFX examines your .rc file to find these PNG additions (they must all be grouped together in the same data chunk in the .rc file. It then creates a new .rc file for your ported project that adds them, so just copying the files into the resources folder won't work as Visual Studio needs to have the proper entries in the .rc file.
"I also tried the generated plugins (all of the different 32/64 bit versions in two freeware hosts: Audacity and OcenAudio - but none of the plugins loaded properly in either host)."
Yes, this is a constant source of problems as hosting VST plugins (especially VST2 plugins) is kind of loosely spec'ed. It is frustrating for both me as well as Steinberg. However, I will do some testing with these clients before releasing the huge new overhauled update for v6.8 and hopefully can suss out what the issue is. One of the biggest problems involves the fact that VST clients (like RackAFX) attempt to load all the plugins they find at startup time, making catching the error difficult in the debugger, which can only attach to the process once it is running.
I did add to the RC file as you explained in the video.
What's weird is that the "Export VST" still doesn't retain the files, but "Export AU" does. I also experimented with different locations of the exported folders but with no luck.
Both the new .rc files in "Make VST" and the .uidesc reflects the image files, but the image files do not carry over.
EDIT: The .rc file in the exported VST does NOT reflect the images, but the .uidesc file does.
Please use the Contact form and send me a dropbox link to your complete RackAFX project folder for the project in question, zipped of course, which includes your new graphics files, etc... Do not email the folder itself, but rather use Dropbox or similar (google drive, etc...) so that I can try to replicate this.
Also, please use email for communication about beta version testing - thanks.
Thank you very much.
Before sending anything - time permitting - I want to try doing a mockup project using the same graphics, like volumeDB or something along those lines. This way, I can see if it is something with the graphics themselves or something with the actual project settings to save you the trouble and for me to get that much more familiar with the graphics properties/folder hierarchy. If you're not experiencing any of those types of problems with the VST export, then it is most likely something on my end.
As for posting on the beta version - sorry about that. I'm sure it can get difficult juggling around forum posts, etc. so I'll make sure to email anything I find regarding the beta.
Thanks for the quick responses.
Most Users Ever Online: 152
Currently Browsing this Page:
Guest Posters: 1
Newest Members:Paul, Reakenzo, jflo, dan_1, phlub, josh, bmarx, Tom Helvey, Ludovic, Mihir Shah
Moderators: W Pirkle: 555
Administrators: Tom: 74, JD Young: 80, Will Pirkle: 0, W Pirkle: 555, VariableCook: 3