HALion is excellent for the stage and remote control.
HALion can be set to respond to Program Change (PC) events and RPN 0, 1, and 2 events. These options can be enabled in the “Options/MIDI CONTROLLER” tab.
Note, if you enable RPN, it will ‘override’ corresponding settings in the instrument UIs. I.E. If you use an RPN to change pitch bend range for MIDI channel 1, that will override any GUI Macro pitch bend controls you can see/use in all instrument slots set to respond to MIDI channel 1 events.
HALion also ships with a Factory General MIDI multi instrument template that you can start with (replace instruments in the program table as desired, and modify things as you see fit). It already has a GM compliant instrument bank mapped out, and a standard GM compliant drum kit on channel 10. With this Multi preset, HALion instantly becomes a General MIDI 1 Compliant MIDI file player.
While HALion ignores the GM2 SYSEX messages to reset/initialize, and set up effects, the factory GM multi preset does default to a GM2 like state (What you’d get in GM2 if you simply sent the SYSEX to do a GM system reset) with a hall reverb, and a standard chorus effect that can be shared across instrument channels aux-send style (CC91 for reverb amount, CC93 for chorus amount). If you prefer different Effect configurations and settings, you can set them manually, and it is easily possible to bind effect controls to standard MIDI events (CC, note on/off, NRPN, etc). HALion goes beyond GM2 standards in that you also get 2 more parallel aux bus sends (Amount set via CC 92 for Aux2, CC 94 for Aux4, and each bus can stack something like 8 effects in serial).
Default GM2 Style Effects
Aux Bus Effects applied on Channel 1 in main mixer
Since the original GM standard only supported 16 channels over one port, the factory GM Multi preset only assigns the first 16 channels (Port 1) to the aux bus effects chain, but if you wish to use the other 3 MIDI ports (Like having 4 independent GM players, each over a different MIDI port), it’s not difficult to expand them to all 64 possible channels. Here’s a preset where I’ve done just that (Expanded the AUX Effect busses across all 64 channels [16 channels per MIDI Port], and applied a Studio type Reverb instead of the GM2 init-standard of a Concert Hall type reverb).
My GM Studio 1.vstpreset (768.5 KB)
HALion does not respond to XG or GS SYSEX nor NRPN events (Though it is possible to teach instruments you tweak or make yourself to respond to NRPN, regular CC events, and more).
To take advantage of MIDI PC Events.
You map your instruments in a Program Table of which can be saved with a complete Multi preset. That gets you up to 128 programs you can call via MIDI PC events. Simply drag any ‘Program’ or ‘Layer’ presets you like onto the table. Since Yamaha/Steinberg begin numbering their instruments from 1 - 128, you might need to ‘subtract one’ for the programs to correlate to your MIDI Controller (If it shows as 0 - 127 instead).
I.E. With this program table active, and “PrgChanges” ticked active in the “Options Tab”, I can send PC0, over Port 1, Channel 1, and HALion will dial up 1 [GM 001] Acoustic Grand Piano in any/all instrument slots configured to listen to Port 1, Channel 1. If send PC5, HALion will dial 6 [GM 006] Electric Piano 2. And so on…
If I wanted to replace that PC0 Piano with something different, all I need do is drag my preferred piano sound preset (From HALion’s media browser, Cubase/Nuendo Media Bay, or via the OS File System) to that spot in the program table to replace the existing one. (Making sure to save my altered table into a new Multi preset for future use).
(Feature Request)
While you can have more than 128 instruments mapped in a program table, as far as I know HALion does not respond to bank changes. It’s a bit of a bummer and prevents us from extending out XG/GS/GM2 banks and such, but for stage performances I find a single bank of 128 is usually ‘way more than enough’ for my needs.
So, only programs 1 - 128 can be called up via PC events. Perhaps there is a way to convince HALion to divide the Program Table into multiple banks of 128 presets each via LUA Script but I personally have not experimented with this possibility yet. LUA is very powerful, so it stands to reason that one could probably build a script that would listen for CC0, and/or CC32 events and offset calls to the program table accordingly.
One of my personal workarounds (it was easy, quick, and braindead to do) when I want to use HALion to play lots of GM2 files is to use a separate instance of HALion for ‘drum kits’, and I map out all of the possible GM2 drum kits in that separate instance like so:
My GM DrumSet.vstpreset (387.9 KB)
I simply point channel 10 from GM2 MIDI files to use this second instance of HALion. Note, I’ve also remapped the kits involving brushes to the GM2 standard (as opposed to the XG standard, which is slightly different with some brush and clap mappings).
Another Example:
I use Band In A Box a good bit. It’s designed to connect with GM/GS/XG instruments right out of the box. I can set it up to work with 2 instances of HALion. The first using the standard GM Multi, and the second using the preset above that maps out all the different drum kits that the GM2 protocol specifies. I let BIAB know to use the first instance for all instruments but drum kits, and to use the drum kit instance for kits.
I’ve also done something similar with Sibelius in the past (Using GM ‘soundworld’ instrument profiles in Sibelius pointing to unique instances of HALion, each with modified program tables).
While HALion has all sorts of features to build and play ‘layered’ instruments, don’t forget that in HALion it’s also pretty simple to copy/paste as many layers, keyboard splits, etc…as you like (up to the capabilities of your hardware) into a single instrument slot/vst preset. Yes, you can add these presets to your ‘program table’ and call them via MIDI PC events.
I.E. A keyboard split preset with bass and a kick drum layered together for the left hand/zone, a synth pad set up in a center octave of the keyboard, and some brass punches way up in a right hand zone…
Instead of loading up 3 or 4 instrument ‘slots’ and mapping the keyboard out that way, I could combine everything I need into a single instrument slot, and even have it all working over a single MIDI channel. Once I’ve bult such a program and saved it as a new preset, I can drag it to my program table, and call it up via PC event at will.
Pretty much any and every control in HALion can be bound to whatever MIDI events you like. I.E. Right click a knob in HALion, chose ‘learn cc’, then move the fader/pot on your MIDI controller. One can use this approach to do perform tasks that in ‘old school’ instrument required complicated SYSEX commands. If a parameter exists in HALion and is exposed to you (not in a locked layer or something), you can usually automate it via VST and/or MIDI events. Even if it is in a locked layer, sometimes you can study the program and find a way to successfully bind it to a quick control first, and then automate or remote control the quick control.