I downloaded the synthbook projects and compiled NanoSynth (Final) using VS2010 professional without RackAFX running. It builds a NanoSynth.dll in C:\Users\willpirkle\AppData\Roaming\RackAFX\PlugIns. I copy NanoSynth.dll into my VST plugin folder but my VST client softwares won't see NanoSynth.dll. The synthbook says projects are complete, then why is this NanoSynth.dll not seen by my VST clients?
P.S.: my VST clients are Ableton Live 8 and Renoise 3, I understand both are not VST3 host but VST2.4 run excellent.
1) it does not matter whether you compile a plugin with or without RackAFX running unless you are running RackAFX but do NOT have the plugin project opened -- in this case, RackAFX will lock the DLL and the compiler won't be able to write it (NOTE : the same thing will happen if you are compiling a VST plugin while it is loaded into a VST client - any loaded plugin will lock the DLL for writing, so this is not a RackAFX issue). In RackAFX, when you open a project, the DLL is unloaded so the compiler will be able to write the file.
2) I have compiled NanoSynth Final and it opens properly in both Reaper and Cubase 7, 32-bit clients.
3) Most likely, the problem is that your VST clients are 64-bit. RackAFX plugins are 32-bit only (this is documented in numerous places here in the Forum as well as my videos - not sure if the synthbook discusses it in detail). 64-bit clients will not see 32-bit plugins, or list them for you, unless the client includes a 32-to-64-bit-bridge. Note that in the Visual Studio RackAFX projects, you select either Debug or Release Win32 from the configuration list - there is no 64-bit option.
The post here links to the two videos that demonstrate the difference between using RAFX-as-VST plugins (32-bit only) and using Make VST (for both 32 and 64-bit) plugins.
To make a 64-bit VST, you need to export the project with the Make VST function and locate the resulting project in your VST3 SDK's proper folder hierarchy (also noted in the video above, and described in the synthbook, chapter 2, VST3 section). The resulting Visual Studio project has configurations for Win32 and Win64 already built-in. You only need to select the 64-bit configuration from the list and compile. The resulting plugin can be used as either a VST2 or VST3 plugin.
Take the resulting .vst3 file and copy it to your VST2 folder, and rename the extension to .DLL -- now, this 64-bit VST plugin will load as a VST2. To use as a VST3 plugin you only need to rename the extension to .vst3
I do have a version of RAFX planned for release in the Spring 2016 which would include a 64-bit-plugin option, however you would need to compile this as a separate plugin as RAFX can not load a 64-bit component.
This 32/64 bit issue is always going to be a problem until Microsoft implements something similar to XCode in MacOS, where you can compile your plugin as a "Universal 32/64 Bit" component; the resulting MacOS AU and VST plugins will work in both 32 and 64-bit environments without needing a separate re-compile.
The Synth Book covers RAFX, VST3 and AU. If you are using the RackAFX versions, then you are limited to 32-bit clients. If you are using the VST3 or AU versions, then you can compile for both 32 and 64-bit. It seems that you are targeting VST plugins, not RackAFX plugins so another option would be to work through, and use the VST3 projects instead. It is easy to add the VST2 wrapper code to these projects so that your synths can run as VST2s:
The RackAFX-VST interface is accomplished with a library that wraps and translates from VST to RAFX and back. The library was written using code from the VST3 SDK. The VST2 implementation is done with a VST2 wrapper that Steinberg supplies. It is literally one line of code that does not change from one plugin to the next.
I have had reports of some VST2 versions of the plugins not working in (mainly older, and more obsolete) clients, and this appears to be due to the VST2 wrapper. The VST3 versions have never had an issue. The problem is that I can't really do anything about that wrapper code myself - it is built-in Steinberg code.
You can do an acid-test on this for yourself - use [Make VST] and compile the resulting Visual Studio project as a proper VST3 plugin with the VST3 SDK. The code includes the single-line of VST2 wrap code (near the top of VSTProcessor.cpp). You can then test the resulting plugins in your clients -- Reaper 5.x also loads VST3 plugins as well, so you can test your RAFX DLL as either VST2 or VST3 with it, and test the [Make VST] versions as well. That is what I do - Reaper is my VST client of choice. As a secondary, I use Cubase 7 to test as both VST2 and VST3.
I do know that there are many differences in VST2 hosts. I have written a VST2 host myself and subtle variations in code will allow some plugins to load and others to fail.
I did as you suggested, I used [Make VST] and compiled the resulting Visual Studio project as a proper VST3 plugin with the VST3 SDK. Then I renamed the .vst3 to .dll to test it in my VST2.4 clients. The resulting NanoSynth.dll VST worked in both clients but without its custom user interface. Both client provides the default VST user interface (default sliders for every parameters). So, I think you developed a great solution to make VST3 (with great books), but to build VST 2.4 I will have to stick to the old VST 2.4 SDK.
The NanoSynth Final project from the website does not have a Custom GUI, so the clients will use the default.
To setup a Custom GUI, use the RackAFX GUI Designer to build the GUI. Then, use Project -> Edit Project and check the box that says "Use RackAFX Custom GUI"
The Custom GUIs from the GUI Designer show up properly in all ports and on all APIs/platforms including VST2/3 and Mac/Win.
It sounds like you don't have a Custom GUI designed and/or don't have the "Use RackAFX Custom GUI" box checked.
Most Users Ever Online: 152
Currently Browsing this Page:
Guest Posters: 1
Newest Members:Jas, Rowan, sojourn, fabhenr, rg1, Niklas, Wutru, Tim Campbell, Danny Jonel, Valentin
Moderators: W Pirkle: 573
Administrators: Tom: 74, JD Young: 80, Will Pirkle: 0, W Pirkle: 573, VariableCook: 3