Feature Request: Native MSB/LSB Bank Select Support in HALion – We need modern MIDI workflows!

In an era where software development is driven by AI, the lack of native MSB and LSB bank selection in HALion is an unacceptable bottleneck for live performers and power users.

Not every Steinberg customer uses HALion strictly in a studio desk environment, clicking away with a mouse. Touchscreens, advanced MIDI controllers, and hybrid live/studio rigs have evolved significantly. Yet, HALion forces users into an outdated workflow: either manually clicking through menus to find favorite sounds or managing a bloated, exhausting number of multi-setups just to handle simple patch changes.

For a flagship sampler, seamless MIDI Bank Select integration should be a fundamental feature, not a missing capability. We need a modern, streamlined way to organize and recall our favorite patches via standard MIDI hardware. Please, Steinberg, bring HALion into the modern performance era.

For live work I would use something like this- https://gigperformer.com/

@jovemprogramador, just to make sure, by the “modern MIDI”, do you mean MIDI 2.0-capable controller and host support? HAL has had support for bank/patch select for ages. This is not related not to a particular MIDI spec (MIDI 1.0 has a Patch Change message, but uses the Control Change message to select a bank via CC Nos. 0 and 32; MIDI 2.0 packs the whole bank/patch selection into a single UMP wire packet). VST3 doesn’t work by sending MIDI to a virtual instrument; instead, it defines API calls which host makes to query or change instrument state.

Are you asking about HAL 7 or older? And, since you’re asking about some host and an unknown hardware controller, I can only give a generic answer, but if your host is fully VST-compliant and controller can send bank/patch selection (via MIDI 1 or 2, doesn’t matter), you already have it.

Here’s a short video on programming your multi for HAL by the late great Darren Jones, and an excellent complete ~12 hour course on HAL 7 by Anthony Chisnall.


Having said that, I feel that by following a few simple common-sense rules you’ll improve the chances of getting an exact answer to your question significantly:

I read a non-sequitur here, sorry. Can you rephrase your statement somehow? The claim itself is questionable — software development is driven by people, the way it’s always been, with no sign this comes to a change; HAL 7, specifically, pre-dates AI tools use in software development.

It’s as clear as mud why clicking with the mouse vs poking with a finger pulls your workflow at a higher level per se. For a live perf, you do some work in advance, I guess, and pre-program everything so that you or your engineer selects your patches for you with a single button click. How you do that — by clicking, typing, touching or turning dials is not so much important; it’s the readiness to select patches with a single button press that is.

What exactly is HAL missing here? Start with an empty multi template, fill it with your presets, done. What am I missing? Please work out your real-life example how HAL as it is stands in your way, better don’t talk in abstract — it’s hard to grok what your problem is.

Wait a sec. Are we talking about Steinberg Halion here, are you on the right forum? I’m serious. HAL is a virtual instrument, you cannot connect “standard” (is that even a thing?) “MIDI hardware” to it. I’m really confused by your statement. Standalone HAL is a program on the disk of a computer that, in turn, has a physical MIDI interface to MIDI hardware. There is a lot in between. You don’t connect MIDI hardware controller to a program directly. I can’t decode you.

Could you also come up with a concrete example that gives you troubles? Please mention computer type (Mac/Windows), VST host type, if it’s not the default host that comes with HAL (HAL Standalone is the same HAL VSTi3 pre-wrapped in a VST3 host), MIDI interface (make/model), all your “standard” MIDI hardware pertinent to your issue, by make and model too, and, of course, the exact problem you’re having with your setup.


Finally, please read what you write with the eyes of someone unfamiliar with your issues, and think, “do I provide enough info to answer my question?” Another thought to have is: “am I drowning this info in noise?” The proclamatives like “current era”, “flagship”, “seamless”, “fundamental”, “modern” mean nothing, they don’t presume any specific capabilities that you’re missing: a capability is objectively either there or not, but neither of these adjectives exactly names a set of capabilities. This is the noise that better be reduced, so that people can understand your question better.

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.

These are worth a look as well:
VST Live: Advanced Live Performance System | Steinberg

I’ve also enjoyed the powerhouse ability to craft amazingly complex instrument setups (combine multiple plugins and more) with Bidule. I even run instances of this ‘inside’ hosts like Live, Gig Performer, Cubase, and more.
Bidule: The new standard in modular audio software | Plogue

It’s not difficult at all to teach it to call up entire HALion Multi Presets via remote control (Or any other plugin that supports VST/AU/CLAP presets, and even some older standards like VST fxp/fxb).

You could also box together a sound that uses several totally different plugins. Mix HALion, Kontakt, Falcon, whatever into one ‘super patch’. Save it all together as bidule presets. Call those ‘super instrument’ presets up remotely, and so on.

Here’s an example of using Bidule to combine 16 instances of Opus to build myself a 16 channel General MIDI Player Player based on the “East West Goliath” library. I could do the same with HALion, but it already has a built in GM mode so not necessary. Just an example of some things one can do in Bidule (barely scratching the surface).

Opus doesn’t accept PC changes at all. It’s incredibly dumb when it comes to anything old school ‘MIDI’ (No PC, NPR, or MTU support). I can use Bidule to link incoming MIDI events to whatever VST parameters a plugin might register with a host. Most plugins follow conventions to call up VST presets as well. Here I save VST presets for Opus from inside bidule, and then have Bidule map incoming PC events to a GM compliant bank of Opus presets.

Yes, you can do this sort of thing to a large degree in Gig Performer or Steinberg’s VST Live without bidule in play, but I find adding Bidule to the mix is super duper handy/powerful. Personally, I like to build complex setups in bidule, and have that as an easily ‘portable’ format that I can then use in any base host I like. (Live, Cubase, Dorico, whatever…)

To illustrate how I perform live: I use a custom GM bank built around the 128 presets that HALion currently allows, with sounds such as an Etude Elements preset, a CP-80, a Rhodes, and others.

However, during a live performance, someone may request a song, and I remember a lead sound that I believe would fit it perfectly. How can I quickly select that lead when I already know its name?

I could even memorize its Bank Select and Program Change numbers if HALion allowed it, and then activate it without using the mouse, using only my MIDI controller, which lets me enter the Bank Select and Program Change values directly from the keyboard.

Likewise, if I wanted to replace the Rhodes with a distorted preset, all I would need to know would be its Bank Select and Program Change numbers, then I could simply enter those values on my MIDI controller.

@Brian_Roland, I liked your suggestion about using multiple Drum Sets to play GM MIDI files.

While you only get one bank of 128 sounds that can be called via Program Change events, HALion CAN do this. No bank change support, but you can call up the first 128 entries in your Program Table. (PC0-127, so subtract one from what you see as the program number in your Table).

Once you’ve placed Programs on the Table as you’d like, save a Multi-Program. You can even make it this the default state of HALion when it starts up if you like.

If 128 presets are enough for your needs, then HALion has you covered.

Use a ‘Program Table’ and drag your favorite Programs onto it. If you have Prg Changes active in the OPTIONS tab,

then the first 128 items in your Program Table are good to go.

Again, if you’ve been using lots of layered sounds that used multiple instrument slots, you can combine that stuff into a program that only needs one slot.

I.E. If you have your MIDI controller mapped out to send left hand over channel 1, right hand over channel 2 and have some of these zones doing layered sounds like this:

You could instead combine all this into a single program (using mega-trigs to sort out key zones, or velocity layers, or pedals/CCs, or key switches, or so much more) and do it all from a single instrument slot, over a single MIDI channel.

Effectively, all I did was start with an empty Program that I named My Combi, drag all the programs/layers I wish to combine into the Program Tree (or you can import them via the Tree menus, or copy/paste them from Slot Rack and/or Program Table), and add MegaTrig MIDI modules to set up my zones and layers.

I optionally deleted some of the unused layers that were in the programs for the sake of Sonic compatibility.

While I didn’t do it here in this example, I could easily link my main Program 8 Quick Control knobs to anything I want from the child layers. One can even treat each of those QC knobs like the ‘super knob’ on a MONTAGE if so desired. The QC controls are already bound to a universal set of CCs, and you can also ‘learn’ bindings in real time with a quick ‘click’ of nearly any parameter/knob/fader/etc. in HALion.

Now this setup can be called by sending a simple PC0 event from my MIDI controller. I don’t even need to bother with channel based split zone presets and stuff on my MIDI controller. All on channel 1, I get the bass in my left hand, and the piano and synth pad layered in my right hand. I have effectively turned what would have required me saving as a ‘multi-program’ into a single slot program that accomplishes the same goal, but now it only takes one slot, one program, and it all works over a single MIDI channel.

HALion doesn’t support ‘bank change’ calls that I know of. If you need more than 128 programs on stage, a work-around might be using more than one instance of HALion. Have each instance be set to use different ranges of MIDI Channels.

I.E. You could dedicate one instance of HALion on Channel 1 to a Multi-Program that lays out 128 piano sounds. Dedicate another instance to 128 organ programs on channel 2. And so on…

If that sounds interesting, and you’re having trouble running multiple instances of HALion, give Bidule a try. Personally, I’m able to run multiple stand alone instances of HALion here, but that approach calls for a more time consuming manual setup. With bidule I can open up a complete stage setup involving lots of plugin instances really quickly.

I believe you can get a free ‘stand alone’ version of Bidule that is fully functional. To get plugin versions requires a fee and registering, but you can take a look at bidule as a host without cost or limits, for as long as you like.

For a simple stage setup such a host would make it simple to host lots of different instruments and route things at will via remote control, create special key combos, etc. Using such a host would give you a good deal of flexibility in hosting lots of plugins, snooping what they all do, and rerouting the MIDI and audio into powerful and flexible configurations.

While exploring various host options, do have a look at VST Live and Gig Performer too. They can do a lot of the same things as bidule stand alone, but with a more intuitive linear style layout up front. You can get demos to check out.

Live hosts like VST Live and Gig Performer are designed to make it easy to manage complete sets by ‘song’. I.E. Your band calls for “Angel is the Centerfold”, so you dial up that song (can do it by remote if desired), and BOOM, you get your complete setup for that song all ready to go. With VST Live, if you have the right hardware, you could even manages stuff like throwing up a Karaoke stream for the fans, lead sheets for the band, click tracks for the drummer, and run the light show for them.

Bidule is more of a sound design and power user tweaker’s tool that can be taught to manage song lists and such, but building something like a set list in bidule won’t be as easy/intuitive to learn how. Personally, I like to host bidule in VST Live on stage so I get the best of both worlds, and any complicated multi-plugin ‘sound combis’ I build in bidule are easy to bring back and forth from other hosts like Cubase.

Thank you for your suggestions, but what I’m really looking for is the ability to select any sound from the HALion library without using the mouse—using only my MIDI controller during live performances.

In a live gig, people often request songs, and I’d like to be able to instantly select whatever sound I need and start playing. Right now, I have to use the mouse, browse through categories, and search for the preset. That simply isn’t practical while the performance is already in progress and the music is playing.

I’m not talking about preparing setups in advance or loading multiple instances. I just want to be able to browse and select any sound directly from the library using my MIDI controller, just as I could on a Yamaha Montage, a Roland Fantom, or any other professional keyboard.

Using the mouse or relying on predefined setups works well in the studio or for bands that always play the same setlist. That’s not my situation.

I’ve even considered going back to Hypersonic, which I consider to be HALion’s predecessor, because it handled this in a very simple and practical way. However, that would mean going back to outdated software and giving up the HALion library that I’ve spent years building.

A simple solution would be for Steinberg to allow multiple user banks in the program table, or to let users specify the Bank Select MSB and LSB values when saving presets. HALion could then locate the corresponding preset in the MediaBay whenever those Bank Select and Program Change messages are received.

Does anyone know of a MIDI SysEx message or a HALion/Cubase communication protocol that allows an external application or controller to select a preset from the MediaBay, other than by using Program Change, since HALion does not support bank selection?

With your montage, you must navigate through screens, menus, etc just the same. While a Montage is designed in such a manner that everything in the thing is mapped out into banks of 128, I can’t imagine trying to memorize a direct preset to the thousands of presets in the thing. You’re bound to be setting up banks of ‘favorites’ or something similar to work from in such scenarios.

If you’re talking about being able to navigate the entire HALion GUI, and every single possible vstpreset via MIDI remote, then consider 3rd party software that can translate MIDI events into key-strokes, and/or perhaps a ‘touch screen’. It’d be something of a pain to set up…I’m thinking it’d be easier to just do it directly on the PC in rehearsal situations, and build yourself banks of your most commonly used sounds for performances.

There are 3rd party apps out there (Coyote MIDI, Bome translator, Bidule, Etc) that allow you to build networks that can translate MIDI events into actual key-strokes, mouse positions/clicks, etc.

To some degree I’ve done this with Bidule before (simple navigation of a plugin’s GUI using programmable MIDI buttons).

Some MIDI controllers that plug in via USB actually do provide true computer keyboard strokes for the cursor keys and a few other things. I have an Akai MPK261 that includes a handful of buttons that send such keystrokes (HID events) over USB when connected. You might check to see if any of your controllers have some buttons that can send such HID events. You could set up the basics like left, right, up, down, page-up, page-down, enter/return, etc.

Also in HALion check in Options/Edit Section/Key Commands, and you can see a list of all of the default key commands for HALion, or change them to your liking.

Not with Sysex. In theory I can do it with Bidule indeed, because it can load VST3 presets, which HALion uses. One problem with this approach is that most of the HALion libraries are stored in vstsound archives that bidule isn’t equipped to browse, so I’d need to ‘export’ every single vst3 preset from those archives into a directory that Bidule can see and use. Straight away the banks would be arranged in ‘file order’. Anytime I added new presets to the directory it could change things, so file name management would require a lot of extra attention (I.E. adding a number to the start of the vst3 preset file names).

For building set and song lists, it could be practical and fairly simple to do. To catalogue and bank ALL of the THOUSANDS of presets (which is always growing and shrinking in my case) and set up a naming convention that keeps things in the same order forever would be a pretty dauting task to say the least.

I believe with bidule, it’d be much easier to simply have a new instance of HALion for each ‘bank of 128’ instruments I want to build. I could then easily have bidule intercept ‘bank change’ commands and redirect things the appropriate instance of HALion. I’d only need a few of my favorite ‘multi-setups’ managed directly as vst3 presets that can be loaded/swapped by bidule this way. Still, you’d need to manually design and build out your instrument banks (Program Tables) the way you want them to be.

Inside Cubase or Nuendo from version 12 forward, there are some advanced scripting options that make it possible to navigate through any and all vst3 presets that can be scanned into the Steinberg Media Bay (That would indeed include HALion and Groove Agent presets with all their tags, sorting options, etc). Still, this would be more like ‘remote browsing’ than having the ability to call up a specific preset with one button commands.

I agree that this would amazing. I’ve asked for the feature more than once over the years.

Thank you very much for your time and for sharing your ideas. They have opened my mind to several new possibilities for solving what has become a real problem for me: using HALion as a musical instrument, not just as a studio production tool that relies on a mouse and keyboard.

With touchscreens and software such as Bome’s MIDI Translator, I can now see many new possibilities.

That said, I still wish Steinberg would make HALion easier to use with MIDI controllers. Other companies, such as Arturia and Native Instruments, have made significant improvements to the user interface of their products for keyboard players and live performance. Steinberg, on the other hand, still seems to focus primarily on users who work with a mouse.

For example, it would already be a huge improvement if the MediaBay could simply retain keyboard focus after switching to another application and then returning to Cubase. Another useful feature would be the ability to increase or decrease only the font size—and therefore the spacing between list items—without zooming the entire interface, since a full UI zoom is not ideal when editing.

If I could navigate the MediaBay easily and reliably, with larger categories, favorites, and preset names that are easier to read and select during a live performance, I might not even need Bank Select and Program Change support from my MIDI controller, at least for now.

At the moment, however, I can’t even browse and select sounds reliably through another application with a more live-performance-friendly interface.

Thanks again for all your suggestions—they’ve given me a lot to think about.

I fully agree with your feature request. I’ve wanted some way to use more of the Program Table for years!

A way to toggle HALion into using the Sonic Program and Star Rating system would be nice too (add a column for banks and implement that too, set the GM bank by default as it ships on banks 0,0 and 121,0, and set the drum kits on bank 120,0). Full GM2 and XG support would be a gravy dream, but much lower on my wish list than other improvements.

Being able to remotely call more than the first 128 presets on a Program Table still ranks pretty high on my wish list though :slight_smile:

I’d also like to see more key commands on the table. I.E. An easy way to cycle from pane to pane. Easier ways to get at the various filtering tags and such without a mouse. Perhaps even a built in method to access key commands directly via assignable MIDI events (like Dorico does in the key command builder).

I only keep commenting for ideas on work arounds to get a better experience ‘now’.

I believe these options are limited to 128 presets via PC call as well (I’ll have to try a bank change someday…I don’t have a user bank over 128 presets yet!). Analog Lab does provide a more robust ‘remote browsing’ set up, but that’s a long way from having a ‘hard set’ and never changing ‘bank system’ that uses bank change and program calls. It can take several button presses and knob cranks to get in the right category and dialing through to find a suitable patch. At that, it’s still limited to only two layers and two zones.

In Analog Lab, I know I can manually set up a bank of 128 programs like HALion. In Analog Lab, the first 128 presets in the “User Bank” can be called via PC (that is if your host bothers to connect the PC VST3 parameter properly. I have some hosts where PC only works with AL if I use the VST2 version, or walk through a dozen hoops to manually link MIDI PC events to the PC VST3 Parameter).

Since I have a Keylab MIDI controller I can browse through the presets easily. I don’t think it accepts bank changes. I believe it’s possible to get third party MIDI controllers using the remote browsing capabilities, but from what I’ve seen that also requires a pretty deep custom setup of the MIDI controller from my end.

Kontakt is the least remote friendly of the lot to me. I’m not aware of it having static banks that align with those old MIDI protocols either. Like with Arturia, I do think NI has some enhanced capabilities in Kontakt if you use their hardware.

When using HALion on stage, I do rely on presets that I’ve tweaked out for the stage, my controller setup, and stashed away in the Program Table.

I do something similar with dedicated keyboards. They have tens of thousands of presets. It’s rare I need access to more than 128 on demand. The 128 I’ve set up are well tested and predictable. I know what I’m gonna get when I dial one up. If I do need more than 128 (like the GM2 file playing drum kit example), I just use another instance of HALion to get another bank.

Rehearsal and jam sessions are different. I’m more apt to experiment and build entirely new sounds. For that, a nice big screen and a mouse are essential. It’s nice not to need to bring all that on gigs of course. Song lists and favorites are a huge help.