HoRNet AutoGain explores host interaction challenges, where VST automation callbacks behave differently across DAWs. Read how a simple GUI adjustment solved the issue.
Over the years, I’ve focused on developing traditional audio manipulation plugins, but with AutoGain, I ventured into a different realm—creating plugins that actively interact with the host DAW. Unlike most conventional plugins that focus solely on processing audio, AutoGain needed to communicate dynamic changes back to the host, which opened up a unique set of challenges.
One key hurdle I encountered was the lack of uniformity in how different DAWs implement the VST protocol. The VST specification, while detailed, isn’t overly prescriptive about how developers must implement certain features. This leaves room for interpretation, and as a result, various developers and DAW manufacturers take different approaches to handling VSTs.
For AutoGain to write automation data in real time, I needed to trigger a callback function that informs the host of changes to the plugin’s computed gain. In theory, VST provides a dedicated call for this, but in practice, not all DAWs handle it in the same way. During the development of the Audio Unit and VST 2.4 versions, most hosts I tested—such as Ableton Live, Reaper, and Logic Pro—behaved consistently. These DAWs allowed me to inform the host of parameter changes during audio processing, and everything worked as expected.
However, when I began developing the VST3 version, particularly for Cubase, I encountered certain hosts that behaved differently. Some hosts would not accept the automation command from the audio processing thread but required it to come from the graphic (GUI) thread. In some cases, this even caused the DAW to crash completely.
To overcome this, I adapted the plugin by moving the automation callback into the draw function of the gain indicator within the plugin’s GUI. Every time the gain indicator was redrawn, it would update the gain value. This approach may not be textbook, and some might argue it’s unconventional, but the important thing is—it works! The plugin successfully communicates the gain changes to the host, and it functions smoothly in a variety of environments.
Please enjoy AutoGain, and if you encounter any issues or bugs, feel free to reach out. I’m always happy to hear your feedback and continue improving the plugin!