Sonic 2 only accepts program changes in one of two ways.
In General MIDI mode it will call up instruments that are GM1 compliant. They’re actually not bad…just realize they need a touch of processing (reverb, chorus, etc. & guitars and basses can be run through the many virtual amp effects provided by the Halion engine).
You can call up an entire multi-setup with a single program change. You’d have to define all of the instrument slots together as a multi…it changes them ALL at once, so you can’t swap individual slots channel by channel.
Big brother, Halion 5 will respond to program changes (the first 128 instruments in a Multi table) if you allow this in the ‘options’ tab.
Be careful though, the current version of Halion 5 has a bug that can crash the whole host when rapidly swapping out anything but the GM instruments via this method.
My workaround for the program-change crash bug has been to simply channel hop, or set up key or continuous controller switches instead of relying on program changes. This has worked out really well for me in my Sibelius or Finale soundsets. In fact, it’s a little more flexible in terms of tweaking things out for detail while I’m building a score. I just need to remember to give myself more instances of Halion to work with for the project (since it needs more channels) Each articulation/variation I need is all preloaded and available for me to fine tune at will.
Say I want to swap between a huge acro string section, some pizzicato, and a tremolo.
I can set each instrument on a separate channel and have my sequencer or keyboard controller change channels rather than sending program changes. This method would work with Sonic as well, particularly if you use multiple instances of Sonic for each instrument or family/section of instruments (I.E. Putting everything you need for a first violin section in a lone Sonic instance).
Method two: In Halion 5 I could edit the instrument so a key switch or CC message changes between the different string bow/pluck styles. To do this just pile the instruments as separate layers into the same instrument and set up a method to switch between them on the fly.