I've been doing some experimenting with MIDI program change messages and Hive and I wanted to share the results with everyone. I've seen in the past this is an area of confusion and I hope this post will clarify a few things.
My apologies for it being a long post: I tried to cover all potential gotchas and problems.
Directory structure
All u-he devices have a "base directory" where a specific plugin's presets are stored. The location of this directory depends on several factors: the name of the u-he synth/device, if you changed the default installation path, and if you're running Windows or OS X. To further confuse things on OS X there is a Local and User directory structure. For now all you need to know is the "base directory" is something you need to locate which we'll get to soon.
Within the "base directory" is a specially named sub-directory called MIDI Programs and is the only directory that your u-he synth/device will load MIDI Program change presets from! Do not try to alter the name of this directory: it must be the exact name and is case sensitive. It's best to let the plugin create the directory and then just work within it.
By default u-he ships their plugins with the MIDI Programs generated the first time you load said plugin. This means that a factory installation of any u-he device has zero presets configured for Program Change. I can't stress this enough: you have to copy presets into this directory for the synth to respond to Program Change messages! If you don't the plugin will quietly discard all change messages leaving you to wonder what's wrong.
So where is my MIDI Programs directory?
So how do you find your MIDI Programs folder? I recommend using your OS search capability to locate it. It removes a lot of guesswork and will save you time.
You need to load the u-he device at least once so the plugin creates the "MIDI Programs" directory when it starts up. Then completely exit your plugin host/DAW. Doing so creates the file Midi.Bank.Cache.txt, a file the device uses to speed up subsequent loads of the plugin. The Midi.Bank.Cache.txt file is your best bet to identify the location of your MIDI Programs folder.
Both OS X and Windows have the ability to search for a file. OS X calls it Spotlight and Windows calls it File Explorer Search. Regardless of your OS you can search for the file Midi.Bank.Cache.txt and it will present a list to you once all files are located. For example, here's a search of my Windows D:\EMusic directory where I install all my u-he plugins:

Now all you need to do is look at the name of the path to find the device you're using (Bazille, Hive, Zebra, etc) and you now have the path to MIDI Programs.
A few notes before setting up Program Change
All u-he devices have two modes you can setup the MIDI Programs folder with. The first is when you have 128 or fewer presets. I call this mode Simple MIDI Programs Mode. The second is you have 129 or more presets or if you want more organizational control over the sounds. I call this mode Banked MIDI Programs Mode.
if you make any changes whatsoever to the MIDI Programs directory (add a patch, delete a patch, rename a patch, etc) you have to completely exit the plugin and re-load it. Because most plugin hosts (your DAW) save the first load of the plugin you will likely need to completely exit your plugin host and re-load it for changes to take effect.
MIDI Program changes request patches with numbers. The u-he plugin creates a map between these numbers and the preset names. It does so by listing the patch names in ASCII Order. This ordering is often the exact same ordering you'll see within your File Explorer/Finder window. If you want to enforce a specific order on your presets you can use the prefix "000" to "127" on the presets. The leading zeroes are important by the way, ASCII Ordering places the file that starts with "1" next to "10" and "100" which is probably not what you want. This ASCII Ordering applies to both patch names and sub-directory names (more on sub-directories later).
MIDI Program change numbers start at 0, not 1. To make your life easier I recommend renaming the presets starting at "000" so you can quickly look at the LED display on your keyboard and the file listing to know you're loading the right preset. Doubly so if you decide to print out a table for live use.
All u-he plugins will quietly discard any program and bank change messages that do not have a corresponding preset or bank. This can be a bit surprising if you only put, say 5, presets in MIDI Programs and then use the [+] key on your keyboard to go to the next sound. As soon as you hit the fifth preset the [+] key will do nothing until it wraps around from 127 back to 0.
Adding more presets to MIDI Programs will slow down the loading time of the plugin and require more physical memory while running. The plugin has to keep every preset in memory to quickly switch to it. It's best to only add presets in here that you know you want to switch between.
The maximum number of presets supported on u-he plugins with MIDI Program change is 16,384. This should be more than enough for anyone. Even so, I list it here for completeness sake.
All u-he devices respond to two MIDI messages used change presets. The first is Program Change MIDI CC#0 (or in hex 0xCn yy 00 where n is the MIDI channel and yy is the program change number). The second is MIDI Bank MSB (or in hex 0xBn 00 yy where n is the MIDI channel and yy is the Bank MSB number). The Bank LSB messge is ignored.
Configuring Simple MIDI Programs Mode
If you have fewer than 128 presets this configuration is for you. Please note if try to use more than 128 presets the u-he device will quietly ignore some of the presets.
The good news is this mode is really easy to setup: just copy your presets into MIDI Programs, rename them if you want (see above), and completely reload the plugin (also see above).
Here's an example where I want to load three presets I renamed:
Code: Select all
...\Hive\MIDI Programs:
000 HS Aerodrome.h2p
001 HS Analog Noise Hits.h2p
002 HS ArpHarp.h2p
That's all there is to it and it's why I call it simple.
Configuring Banked MIDI Programs Mode
You'll want to use this mode if you have 129 or more presets. You may also want to use this mode if you want to create preset categories. Examples of this would be banks for separate preset designers or organizing the sounds by their usage (Bass, Pad, Lead, etc).
In this mode you are able to make up to 127 sub-directories within MIDI Programs. Each of these sub-directories operate exactly the same as the configuration for Simple MIDI Programs Mode previously described. I recommend numbering these sub-directories with "001" to "127". I start with "001" because the MIDI Programs root folder is still Bank MSB #0.
Let's look at another example:
Code: Select all
...\Hive\MIDI Programs:
001 HS\000 HS Aerodrome.h2p
001 HS\001 HS Analog Noise Hits.h2p
001 HS\002 HS ArpHarp.h2p
002 TAS\000 TAS A Bit of Rain.h2p
002 TAS\001 TAS Dolphin.h2p
000 ARK 7th hallway.h2pIf I want to access "HS Analog Noise Hits" I would sent the following MIDI messages: MSB Bank #1, Program Change #1.
If I wanted to switch to "ARK 7th hallway" I would use the following MIDI messages: MSB Bank #0, Program Change #0.
Finally if I wanted to access "TAS Dolphin" and then "TAS A Bit of Rain" I would use the following MIDI messages: MSB Bank #2, Program Change #1, then later I would send Program Change #0.
It's important to remember when you switch banks to transmit the MSB Bank message first and then the Program Change. If you just send a MSB Bank change message the preset you are currently on will not automatically change to the same numbered preset in the new bank.

