On the surface you have two simple options.
- Save presets as full Multi-Program presets instead of Instrument or Layer presets.
- Take advantage of the 10 Quick Control parameters that are ALWAYS registered with the host for each HALion instrument slot.
This is just my general ‘understanding’. I might have some things wrong, but I’ll say my thing and provide my own personal workarounds (no scripting required).
The three primary doorways that content creators will give users to ‘tweak’ the sounds via remote will be:
1. Quick Controls (The 10 QCs at the top most parent level of a Program Slot are always registered in the host as QC 1 - 10, and for some hosts a parameter for the Mod Wheel might show up too),
2. Macro Screen Editors (User assigns where they like for automation with a right click),
3. A hard coded CC mod matrix of some sort. I’ve noticed some of the ‘much’ older content over the years would often have a MIDI Mod Matrix with some preset CC assignments. Sometimes they give the user the ability to change the MIDI Mod Matrix, and sometimes they had it locked, just hard set it, tell you in the manual what they are, and the user cannot ‘change’ them. Since such content typically predates the ability for 3rd party content developers to build custom Macro Editors, unless Steinberg made it and put in a way to change the MIDI mod matrix via Macro Editor, there was no way to ‘learn’ new automation methods, or change existing ones from the UI if a layer was locked/protected.
4. Possibly through parameters that are registered using a LUA Script (Macro Editors essentially work through LUA Scripts, not sure at present if there is a way to have a user LUA Script ‘register’ automation parameters with a host, but I’m pretty sure it can be done IF working with unlocked layers).
One thing that I think should work regardless, be it from full HALion, or little brother Sonic, and even if locked layers involved, is to use Multi Program style presets.
Background: HALion can save and load 3 native VSTpreset types. They all have the same *.VSTpreset file name extension. Multi Program (entire HALion Instance state), Program (The full state of a given Program/Instrument ‘slot’), and Layer (Helpful for setting aside ‘portions’ of a program tree, and it can also be treated/used as a full program preset if loaded into an empty slot, into the program table, or at the top parent level of a program).
Apparently the assignable VST ‘Automation’ parameters are kept at the global level. It’s at a higher level in the HALion hierarchy rather than being part of the ‘program’ or ‘instrument slot’ level of the plugin.
Deeper in these VSTpresets are tags and such that establish the preferred plugin for them by plugin ID, and can also tag presets as coming from the different versions of HALion and Sonic over the years. You can force full HALion to save Sonic compatible layers as well. Typically you’ll build more complex layered Sonic ‘programs’ in Sonic itself, after building the primary layers (up to four) in HALion; though, it’s possible to export a Sonic compatible preset with up to 4 layers in one go, if you follow some rules in establishing the 4 secondary parent layers.
HALion can ‘import’ a lot more things than it can save or export! Older HALion formats like FXP and FXB, industry standard sf2 (sound fonts), Roland S, some old Akai S, Kurzweil K, Giga, some older NI Konakt formats etc. In those cases HALion ports the stuff into its own VSTpreset formats, and can only be saved/exported as one of the forementioned VST3preset types.
Given this knowledge, you get one quick and easy possible solution for the issue of keeping track of user defined VST automation registrations….
Experiment with saving some full multi program presets. I think that form of preset saves the ‘entire state’ of the plugin, including automation settings, audio outputs/routing, main bus aux effects, a complete ‘program table’, etc. With such an approach you might find yourself working with more ‘instances’ of HALion than before, but it should be at least one way to ‘get the job done’. Even if working with a lot of ‘locked down’ factory or 3rd party content that you cannot somehow trick out with user LUA scripts.
I’ll run a test by right clicking some FM Lab Macro Editor controls and registering them as VST Automation Parameters. I’ve chosen FM Lab for this example because I know these presets use ‘locked layers’. Notice the little lock in the program tree here:
So, I’ll register some controls as Automation Parameters in the Macro Editor:
I registered 4 FM Lab controls from the Macro Editor to test…
For the moment my VST host is Bidule, and I can see that they are now registered in the host…
I’ll save this as a ‘Multi’ preset in HALion…
I’ll start a brand new instance of HALion and load the ‘multi’ preset….where I can confirm that the automation registrations were retained as expected, and it also shows up in my VST3 host.

Note, it might come in handy to know that Sonic offers a mode where multi-presets can be called up via remote if you need that for live performances. You’d build the multi’s in Sonic and save them first, then set up a special Map that you can find in the Options of Tab of Sonic that assigns a full Multi to a MIDI Program Change event. Sonic also gets a General MIDI mode that can do program changes by individual instrument slot. In the GM Mode, Program Changes are established in the Media Brower, and prioritized by ‘star ratings’ (Out of the box with the Sonic GM mode, you get default instrument mappings from a portion of the Sonic Selection library that’s been pre-balanced and all to play General MIDI files, and Sonic even sets up a GM2 style set of shared AUX bus effects (Reverb at CC91 and Chorus at CC93). Since HALion doesn’t take GS or XG sysex, or the extra fancy XG RPNs, you have to do your reverb and chorus settings manually, or do the right click learn thing to establish your own FX automation methods.
Quick Controls
Another approach is to use the Quick Controls. This would be more friendly if you like to work with larger Multi-Channel/Multi-Timbral HALion instances. I love this approach for a live setup, sending PC changes via remote to swap instruments as needed for each individual HALion slot ‘Each assigned to a unique MIDI channel’. With full HALion I can build very rich instruments in a single slot…all layered up, keyboard split, and even have dozens of arp/pattern/midi engines going on that do different things with the layers all at the same time! Where Sonic is far more limited in ‘layering ability’, full HALion is only limited by the power of my hardware. I think of those 10 QC parameters like having 10 Montage Super Wheels at my disposal
For a live situation, 10 controls per channel/slot is usually PLENTY! I also know that I get the option to use predictable CC assignments as well…so on my MIDI Controller(s) I have presets all mapped out that’ll work HALion and Sonic Quick Controls every time, with anything I choose to load into HALion. With a quick glance at the HALion UI, I know exactly what they are.
Each active program slot in a HALion instance gets 8 of these assignable ‘quick control’ knobs, plus two more on the joy-stick (QC 9 and 10) that are always, and automatically registered with the host. The mod wheel also registers with some hosts as a VST parameter, while others might instead bind it exclusively to MIDI CC1 instead. Children layers also get QC banks, but the children QCs are not automatically registered with the host.
The Quick Controls at the main parent level of a program are ALWAYS registered as parameters with a host that properly conforms to VST3. They also get default CC modulation assignments for those who wish or need to automate via MIDI events. Even in Sonic, you could ‘replace’ something on one of the quick controls that you don’t need to automate with something that you do, then save your new user instrument preset.
I.E. Say you’re working with a locked FM Lab layer. Maybe there is something deep in all those macro editor pages you’d like to expose as a parameter to mod via DAW Track, and you’d like to preserve it as an ‘instrument preset’ in a way that you know the parameter will always be registered in any host as soon as it’s called up, without any need for manual assignments or registrations.
In that case, check the top set of Quick Controls for the program. Are you using all 10 of your quick controls already in a remote sense? If not, clear one out that’s loaded with mess that you don’t need to ‘automate’ and assign the target macro control to that QC knob, or the joy stick (sphere H and V goes to QC 9 and 10).
For what It’s worth, I’ve noticed that a lot of the presets in HALion don’t even use the joy stick (Sphere H and V) out of the box. Check to see if those are open and put them to use 
Example: Here’s a preset from FM Lab. I notice right away that that the Joy Stick (sphere) isn’t even being used, nor is the mod wheel.
So, I can go to any parameter back in the Macro Editors I like and assign them to one of those empty QCs that will always be registered in the host, then save a new user copy of the instrument preset. Now when using my new version of the preset, that parameter should be linked with the QC, which is always registered in a host.
Back in the SOUND tab, I can manipulate how the control should work (scale, polarity, and more).
Note, I can put more than one control on a QC if I like! I.E. One QC knob can do several different things at the same time. Hence my previous parallel to the Montage ‘super wheel’.
With a LUA User Script?
I’ll have to dig deeper to see about registering parameters to the host directly via LUA. With unlocked layers, I ‘think’ it’s quite doable. For unlocked parameters, LUA is quite powerful. I’ve only begun to ‘sporadically’ explore LUA possibilities.
When I say ‘locked down’ I mean this…
HALion provides content creators an option to password protect each layer or synth module. Such content usually has some primary parameters exposed to ‘the user’ through Quick Controls, and/or the ‘macro editor’. To get at anything else in a locked layer requires a password in LUA scripts to expose and use HALion parameters. You’d have to know exactly what those parameters are in advance and provide passwords in the code to manipulate them with a Script.
With locked layers things can be a bit more limited. Without a special password, I don’t think LUA can expose them? Without the original unlocked preset, I don’t think there is a way to snoop/parse the involved parameters or other variables involved. I could be wrong and there ‘might’ be a way to make some ‘links’ in a LUA script, but my approach so far has been to simply move around some QC assignments. 10 are usually plenty.
So, I think the ability to drop in a user LUA script to register Automation parameters from a program slot depends on the original preset. If it is content that’s locked down by the author there will be more limits as to what parameters are exposed, and which ones are not. When a content creator ‘locks’ a preset, he has to embed a special password in LUA scripts to get them to work. Even if you somehow know the password to get at HALion parameters via LUA, you’d need to ‘know’ how the parameters are named/IDed/registered to get at them. Authors always use the original unlocked version when building where they can easily see and access every single parameter in HALion. Once a preset is locked (happens by exporting a special new preset that they’ll package for distribution in lieu of the unlocked original preset), there’s no way to snoop about and discover parameter names/ids and such. You’re stuck with whatever parameters and doorways to get at them that the original author provided.
If it’s fully unlocked content then I believe you have way more options. I’ll try to look it up and run some tests, and eventually report back here if I figure out how it’s done.
If a layer is ‘locked’ then I don’t think a user LUA script can do the job (I could be wrong, and there might be ‘some exceptions’…a LUA/HALion expert will have to chime in if it’s possible).
Summary:
Experiment and practice with:
Multi-Program Presets: These should preserve the entire plugin state, where instrument program and layer presets only save information for ‘the slot’.
Quick Controls: Mastering the nature and craft of the Quick Controls: It can be a bit confusing at first, since each ‘layer’ gets a set of quick controls, and Quick Controls can also be bound to other Quick Controls within the program slot!
The QC set that always gets registered by a host by default is at the very top level of a ‘program’. As you ‘layer up’ a ‘program’ with different instrument program or layer presets, you’ll usually want to give some thought as to how they all connect and react to that top level of QC parameters (Parent most layer of a Program) that gets registered with a host via default for automation. Quick control sets in child layers don’t get registered to the host by default, but it is possible to manually register them (Not sure if and how via LUA) on an as need basis (takes us back to needing full Multi-Program presets to remember such registrations).
When working with HALion programs and layers (particularly if they are locked), get in a habit of checking out the QC assignments for each and every layer of a program. The Macro editor and the layer QC are going to be the doorway to get at any parameters the original author intends ‘users’ to have access. Sometimes those QCs in children layers are the ONLY registration exposed to the user for tweaking various bits of the sound. Sometimes you find some gems deeper down that don’t show up in the macro editor, nor on the main program QC registration. Sometimes such QCs from child layers aren’t available for remote modulation unless you snap them to one of the main quick controls first (IS remembered in saved instrument presets), or right-click and register the parameter (won’t be saved as an instrument preset, but it can be saved with an entire Multi-Program preset).
If you’re doing modulations from tracks where 10 controls aren’t enough for what you want to achieve, some layers are locked, and that can be saved fully in an ‘instrument preset’, there might be ways to bypass those ‘locked’ macro screens and make your own presets with scripts and such that can register the parameters with a host. I.E. You can bypass the FM Lab Macro presets, and work with raw FM synth modules that are not locked down in any way. Let us know what you want to build
I.E. You can build content using FM Synth modules that’d work for Sonic users who don’t have FM Lab! Same concept goes for the Model C tone wheels, and the other synth modules. You’d have to build your own Macro Editors and such if you have target users that don’t own FM Lab, Model C, Flux, Auron, Trip, Trium, Voltage, and such installed….but the raw Synth and Model C modules themselves are at your disposal to build with, even targeted at users who only have the ‘free’ Sonic Player. Sample based stuff is different. I.E. If you wanted to build and share presets using that stuff, then target users must have the libraries of origin installed and properly registered.
Sometimes you can still use locked up layers (or entire presets) inside fresh new layers that you’ve made yourself and get some high level tweakability that wasn’t there before. I.E. Make your own new unlocked parent node, and move the locked content into it. It won’t always give you much, but some is better than nothing. It all just depends. I.E. one can ‘nest’ one of the locked Sonic Selection drum kits (or several copies of it) in a new user ‘child’ layer and remap things about and mod/distort/whatever in new and creative ways.
Also, as you get to know the content that shipped with HALion, you’ll discover that sometimes the ‘locked stuff’ from Sonic and SE Factory presets do have the unlocked ‘base content’ (sample layers and such) somewhere in the HAL Factory library. It’s not always obvious, but if you dig around you can often find an unlocked version (or something very close) in the “HAL Factory” library. I haven’t looked super close, but I wouldn’t be surprised for example, if there’s unlocked piano presets in HAL Factory that use the same S90ES piano samples as the locked Sonic/SE Yamaha S90ES Piano preset (I get the idea that H5 had stock pianos based on the Yamaha S90ES stage piano, which had a variety of presets for more ‘compressed’ sounds, and others for a more ‘natural/room’ staging (probably all based on the same samples with different tweaks?). Point being, if you find something cool in the Sonic content (more locked down presets) that you’d like to edit much deeper, there’s a good chance you can find presets that use unlocked versions of the same base layers in the HAL Factory library 
It’s also good to know that Eagle, Raven, Skylab, Studio Strings, Hot Brass, Anima, and maybe some others (essentially everything that was ‘new’ in HALion 6) have fully unlocked layers and macros that users can explore and borrow from when making our own content. The stuff featured in HALion 6 was all about ‘content creation’, so most if not all of it is fully unlocked…the scripts, the macro pages, the whole nine yards; hence, that content is GREAT to look at to see some basics on how to make your own stuff from the ground up.