MIDI Program change on u-he

Official support for: u-he.com
RELATED
PRODUCTS

Post

Hello everyone.

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. :) I tested this only on Hive but am fairly confident it is the same for all u-he synths given the common code framework.

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:
Image
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
In this example Program change #0 will correspond to the preset "HS Aerodrome", #1 will be "HS Analog Noise Hits", and #2 will be "HS ArpHarp".

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.h2p
In this example I have two sub-directories: 001 HS and 002 TAS. I also have the preset in the root of the MIDI Programs directory.

If 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.

Post

---
Last edited by Chapelle on Fri Oct 06, 2023 10:21 pm, edited 1 time in total.

Post

Sticky!

Post

Thanks Chapelle and ED. :)

Chapelle, I forgot about that feature and wasn't 100% sure it worked on Mac. It's another good way to get there quickly if it does work.

Post

Haven't tried this yet, but I'm curious (just read it). Is this causing any computer hiccups when changing patches?
You can hear my original music at this link: https://www.soundclick.com/artist/defau ... dID=224436

Post

aaron aardvark wrote:Haven't tried this yet, but I'm curious (just read it). Is this causing any computer hiccups when changing patches?
I haven't seen any problems switching presets with MIDI Program Change.

Post

bmrzycki wrote:
aaron aardvark wrote:Haven't tried this yet, but I'm curious (just read it). Is this causing any computer hiccups when changing patches?
I haven't seen any problems switching presets with MIDI Program Change.
IIRC the u-he rule is no hard disk access for MIDI Program Change (e: as mentioned in the OP), which is an elegant way to take out performance hurdles. Some hurdles maybe shuffle over to the preparation so well described here, though. :tu:

Speculatively I wonder if Favorites and MIDI Program Change aren't close enough to be the same thing or similarly handled UI-wise, if it's ever really a priority to evolve either of these.

Post

Sorry I left a new post now regarding this topic too didn't find this before.
Any change of allowing changes made in the "Midi.Bank.Cache.txt" file to get updated by Live without having to restart it again or reloading the plug?

Thanks

Post

No, you need to reload the plugin after changing anything in MIDI Programs folder, since any patches in there are only loaded into RAM when instantiating the plugin.

Post

EvilDragon wrote: Mon Feb 11, 2019 6:48 pm No, you need to reload the plugin after changing anything in MIDI Programs folder, since any patches in there are only loaded into RAM when instantiating the plugin.
Mostly correct. Some hosts will keep plugins cached in memory if they were loaded in a project before, so just deleting and re-instantiating a plugin or closing and re-opening a project might not always be enough. The safe method is always to completely quit out of the host software so that it removes all "plugin caches" from memory, and then launch it again. At least that's what I remember being told. :)
Cheers
Rob
u-he | Support | FAQ | Patch Library

Post

Right. For Reaper at least, both methods are possible, since there's an option to completely unload plugins from memory in Preferences->Plugins->VST.

Post

Has anyone had success changing presets via MIDI since U-he upgraded their preset browser? I've had this working in the past, but it doesn't seem to work anymore--Hive, Diva, and Zebra

Post

MamaShine wrote: Tue Jun 09, 2020 4:43 am Has anyone had success changing presets via MIDI since U-he upgraded their preset browser? I've had this working in the past, but it doesn't seem to work anymore--Hive, Diva, and Zebra
The way MIDI program changes work hasn't changed at all with the new browser. If you are having trouble setting it up, best to contact our support so we can help you get it going.
That QA guy from planet u-he.

Post

Unfortunately no mention about it, but the VST3 versions of u-he plug-ins currently do NOT support program change, that might be the case you stuck with the program changes.

Use the VST2 version and works as expected.

For the u-he team:
1. Not sure how the VST3 SDK supports the Program Change these days, but e.g. Steinberg VST3 instruments (e.g. HALion 6) all support program change.
2. Also, please add this fact to the manual that the program change only works on VST2 versions.

Post

Program Changes in VST3 should work just fine with anything we released since our VST3 rewrite.

We're happy to check this out if you tell us which combination of host/plug-in version don't seem to work.

Post Reply

Return to “u-he”