How to Properly Use External VST Plugins in Tracktion Engine

I’m a beginner with Tracktion Engine.
Right now, I want to use the Tracktion Engine (including the underlying JUCE framework) via its API (without a GUI) to simulate some sounds using external VST plugins. I just want to quickly run through the workflow using the API. My project structure is: on Windows, I build a standalone C++ executable which links to the necessary Tracktion Engine modules, and I call the TE-related APIs directly from the main function in this .exe.
I haven’t found good examples online, and different large models give inconsistent answers.

I want to know if a feasible sequence of steps includes the following:

  1. Initialize the engine

  2. Scan and load VST plugins from the hard drive

  3. Following the Tracktion Engine philosophy, use the API to create an Edit object, create tracks/clips, etc.

    • 3.1 If using a sampler-type VST plugin, does this mean loading an audio file via the API and adjusting parameters based on the plugin’s capabilities?
    • 3.2 If using a synthesizer-type VST plugin, how should this be done?

Essentially, I want to understand how Tracktion Engine loads and uses the capabilities provided by VST plugins to produce sound. I’d really appreciate any suggestions.
If any part of my understanding is incorrect or significantly off-track, please feel free to point it out directly — I’d be very grateful.
If you could also share some suggestions for API usage, that would be even better.

Since you mentioned you want to do things without a GUI, it will unfortunately go difficult at those points. Many 3rd party plugins have state/features that can only be feasibly manipulated through their GUIs. The plugin APIs themselves don’t typically have for example the ability change the audio files a sampler instrument is going to use and this can’t be solved at the Juce or Tracktion Engine level. I’ve bumped into this issue myself while working on a scriptable audio engine type thing. To accommodate this, I’ve had to allow showing and using the plugin GUIs.

It’s possible to create a Tracktion edit in Waveform and load it with the TE:: engine for playback and have the synths/plugins load their own state, automation, etc. when the engine plays the edit.

The answer to the questions is a firm yes, you can do what you need with TE::, but it is not a simple fire and forget kind of project - you will build an app, ultimately.

Don’t forget to read the code of the examples.

And how is that state going to be generated in the first place for plugins that have state/functionality that can only be manipulated via their custom GUIs? (Let’s assume here the opaque binary plugin state can’t be reverse engineered.)

Here’s a very simple example of such a plugin :

airwin_subpluginselect

The subplugin/algorithm selection is not a plugin parameter, but rather extra state in the plugin that is opaque/unaccessible to the host application.