ASPiK Latest Release v1.7.0 | Recent Uploads & Activity | Forum


Please consider registering

sp_LogInOut Log In sp_Registration Register

Register | Lost password?
Advanced Search

— Forum Scope —

— Match —

— Forum Options —

Minimum search word length is 3 characters - maximum search word length is 84 characters

sp_Feed Topic RSS sp_TopicIcon
ASPiK Latest Release v1.7.0
August 5, 2021 - 4:55 pm
Member Since: January 29, 2017
Forum Posts: 689
sp_UserOfflineSmall Offline

I have just uploaded the ASPiK 1.7.0 that fixes the issue with the VSTGUI4 library's init/exit additions. 

The current version of RackAFX 7.3.3 includes these changes, so newly exported ASPiK projects will have these fixes.


EZ ZIP Download:

The following files were modified; if you would like to update an existing project to 1.7.0 manually, then copy these FOUR files from the SDK /PluginTemplate folder to your project's corresponding folders:





These were the only files modified, and only for the VSTGUI init/exit stuff. All other code is untouched.





August 5, 2021 - 8:30 pm
Member Since: January 1, 2020
Forum Posts: 103
sp_UserOfflineSmall Offline

Huge thanks Will.

However it's not quite working for me yet.

I tried the EZZip version first but encountered all those previous issues. Maybe they're the old files though, as they were different from those currently on Github. I tried that version next using the included VSTGUI and current VST SDK 3.7.2_build28_2021_03_30

I'm receiving a compile error unfortunately.

From a fresh ASPiKKreated project, VisualStudio is saying that moduleHandle is an undeclared identifier on line 59 factory.cpp


A small and probably unrelated issue, which I only mention as I hadn't noticed it before. In cmake just before it complains harmlessly about the missing EXPAT library it looks for and then does not find "C++ include stdatomic.h". Maybe it was always like that though.

Hope there's just a missing declaration or something, I see that the code's totally different on Mac so it must be tricky. Massive appreciation for all your efforts so far.


(edit Just tried with PluginTemplate and also PluginTemplate with the latest VSTGUI from their Github. Same missing moduleHandle declaration )

( edit2. Tried adding #include "C:\ASPiK-1.70\ALL_SDK\VST_SDK\VST3_SDK\public.sdk\source\main\moduleinit.cpp" to factory.cpp

that found the missing pointer to moduleHandle but the new compile error on line 57 says - bool InitModule(*void) already has a body. )

August 6, 2021 - 8:55 am
Member Since: January 29, 2017
Forum Posts: 689
sp_UserOfflineSmall Offline

Well damn. That's what I get for using both Win and Win10 to merge fixes. 

You just need to add one line of code to factory.cpp, an extern fwd declaration for a global variable:

#include "vst3plugin.h"

#include "vstgui/lib/vstguiinit.h"

#include "public.sdk/source/main/pluginfactory.h"

extern void* moduleHandle; // <-- add this line of code

Do not initialize the variable, leave it just like above. 

VSTGUI4 relies on global variables for both Mac and Windows. This is one of those "real world" cases that the C++ academics don't see unless they participate in industry, and global variables solve an important issue for this library. 

The original PluginGUI.cpp file had these extern variables declared in it, and I tried to clean up the top part of the file, by removing all global variable forward declarations. This is where the bug crept in - two different fixes on two VMMs...

I will do a quick maintenance push on 1.7.0 for this one file... meantime, you can fix it with the code above.


August 6, 2021 - 10:47 am
Member Since: January 29, 2017
Forum Posts: 689
sp_UserOfflineSmall Offline

I've already rev'd RackAFX and ASPiK to use the new factory.cpp file. Everything is now live, and all FX book project files have been updated.

Thanks for testing this so quickly. 


August 6, 2021 - 12:23 pm
Member Since: January 1, 2020
Forum Posts: 103
sp_UserOfflineSmall Offline

Thanks the fix compiles now and also loads into Reaper, VSTHost, Plugin DR, Ableton without any error. Also tested loading, saving, exiting, reopening multiple instances of the plug. ++

Unfortunately I still get that previous Assertion Failed error whilst saving over the GUI from the editor. Reapers crashed debug report again shows line 243 at prettywriter.h to be at fault.

Are you able to overwrite the plugingui.uidesc file, without crashing it?

August 6, 2021 - 1:55 pm
Member Since: January 29, 2017
Forum Posts: 689
sp_UserOfflineSmall Offline

This I did not try. And, I can see how that would be an issue.

The way the GUI designer works involves destroying the original GUI, and recreating a new version, framed in the GUI designer.

I will check on this and get back. Looks like the GUI init stuff has more repercussions. 


August 6, 2021 - 2:34 pm
Member Since: January 29, 2017
Forum Posts: 689
sp_UserOfflineSmall Offline

OK - well not too difficult to fix this one. Not the same error, this has to do with the new JSON .uidesc file format, which just popped up in this VSTGUI4 library (the VSTGUI lib defaults to XML via a #define statement). 

To fix this, you need to change the flags in the file saving function. You can find this in the plugingui.cpp file at line 1006 (in the latest .cpp file). It is at line 1027 in the older versions. 

Replace the flags as shown here, with the new wire-or-ed constants as follows; there is a deprecated constant you can change at the same time, so alter the two lines:

int32_t flags = UIDescription::kWriteAsXML;

and then in the if() statement:

flags |= UIDescription::kWriteImagesIntoUIDescFile; 

void PluginGUI::save(bool saveAs)


    if (!showGUIEditor) return;


    int32_t flags = UIDescription::kWriteAsXML; // <--- initialize for XML here


    UIEditController* editController = dynamic_cast<UIEditController*>                                                               (getViewController(frame->getView(0)));

if (editController)


    UIAttributes* attributes = editController->getSettings();

    bool val;


    if (attributes->getBooleanAttribute(UIEditController::kEncodeBitmapsSettingsKey, val)            && val == true)


        flags |= UIDescription::kWriteImagesIntoUIDescFile; // <--- change 


// --- ETC rest of file is not touched 

This sets you up to write the XML file into the UIDESC file. 

Looks like another quick update.... Good thing I've got part of it automated, though notarizing the ASPiKreator for Mac requires waiting on Apple...


Forum Timezone: America/New_York

Most Users Ever Online: 152

Currently Online:
11 Guest(s)

Currently Browsing this Page:
1 Guest(s)

Top Posters:

Chaes: 56

Skyler: 48

StevieD: 46

Derek: 46

Frodson: 45

Peter: 43

TheSmile: 43

Nickolai: 43

clau_ste: 39

jeanlecode: 37

Member Stats:

Guest Posters: 1

Members: 768

Moderators: 1

Admins: 6

Forum Stats:

Groups: 13

Forums: 42

Topics: 842

Posts: 3347

Moderators: W Pirkle: 689