Thread Safety in RackAFX v6.8 and Notes: | 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
Thread Safety in RackAFX v6.8 and Notes:
August 16, 2016 - 11:11 pm
Member Since: January 29, 2017
Forum Posts: 689
sp_UserOfflineSmall Offline

During the summer of 2016, I made an underlying change to the RackAFX API that ensures thread safety, preventing the GUI and processing threads from incorrect accesses to your underlying RackAFX variables. Before getting into details, there are several takeaways from this change you should be aware of:

1) starting with RackAFX v6.8, the API, RackAFX application and all derivative projects (RAFX-DLL-as-VST-DLL, Make VST, Make AU, Make AAX) are ensured to be thread safe with GUI and processing thread accesses to plugin parameters. A detailed document link explaining the basis of how this is implemented is included below.

2) ** The Focal Press FX and Synth Book code DOES NOT CHANGE ** so you don't need to alter any of that code for this new update and you can follow along in the books without a problem

3) the changes that were made are all implemented on the base-class level in the CPlugIn code - you do not need to even look at that code if you do not want to; you also should not alter it, though you may override the functions if you wish.

4) if you did *not* use the old sendUpdateGUI( ) function, your pre-existing RAFX-DLL-as-VST-DLL, Make VST and Make AAX projects are already thread safe by design. I did find an issue with Make AU, which has been overhauled in v6.8 along with all the other derivative projects.

The sendUpdateGUI( ) function has been removed and replaced with a newer, easier to implement, thread safe strategy. You can find details about using the new GUI updating paradigm here:

If you did use sendUpdateGUI( ) then there is a possibility of having an inconsistent data issue in the GUI where the updated control positions may take up to 100 mSec to update or that a GUI update did not "stick" -- I have never been able to replicate this, but it is theoretically possible...

5) since I had to change the underlying base class object (don't worry, updating older projects is easy!) I added two new features that have been requested often - automatic parameter smoothing (for smooth zipper-noise-free controls) and host information (tempo, time signature, buffer sample locations, timing, etc...) which you can now access from your audio processing function.

Automatic Parameter Smoothing:

DAW Host Information Access:

As of this writing, v6.8 is available on the beta testing page. You can find details about the GUI and audio processing thread synchronization in RackAFX with comparisons with AU, VST3 and AAX here:

When updating old projects, you only need to open your old RackAFX project and let RackAFX do the update for you. After the update is complete, you can recompile your DLL and use it directly in RackAFX (or 32-bit VST2/3 hosts), and you can also use Make VST, Make AU and Make AAX to create the new updated derivative projects. In addition, you can now compile your RackAFX plugin in 64-bit mode to use it as a VST2 or VST3 plugin in 64-bit clients.

All the best,

August 16, 2016

Forum Timezone: America/New_York

Most Users Ever Online: 152

Currently Online:
4 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