fbpx

Program Change Management

May 29, 2022 | Gig Performer Blog, GP4

In this article we’ll show you how to manage various features in Gig Performer related to program changes.

About Program Change messages

.
A program change, also referred to as a patch change (or a “PC”, when talking about MIDI messages; don’t confuse this with a “Windows computer”) is a MIDI message traditionally used to cause hardware synths to change to a different preset (or “patch”). If General MIDI is being used, the program change number indicates a particular sound. Since this standard isn’t obligatory, manufacturers may list patches in any order they wish.

The normal way to use Gig Performer is to create rackspaces each of which contains a collection of plugins connected together as desired. A rackspace might contain everything needed for a single song or you might use several rackspaces during a single song, switching from one to another on the fly. When you develop your gig this way, you get many benefits, for example the ability to switch instantaneously from one set of sounds to another without any glitches or the ability to persist sounds in the old rackspace until you release keys or your sustain pedal (our Patch Persist feature).

In Gig Performer, you typically send a PC message from your MIDI controller or touch surface to switch to the desired rackspace variation or the desired song part (when you are in the Setlist view).

Important note: users who are new to Gig Performer, or perhaps just trying it out, but who are familiar with the use of PC messages, may want to change their plugin presets using PC events rather than using the normal rackspace approach. We strongly encourage you to not do that. Many plugins don’t even support this. Please read these blog articles Rackspaces vs Program Changes and Use host automation rather than MIDI to control plugin parameters to learn more.

Refer to this user manual page to learn more about the basic terminology in Gig Performer.

Options related to Program Change events

.
Gig Performer provides you with many options to fully manage program change events.

Count from zero or from one

MIDI Program Change messages always go from 0 to 127. Since some hardware and software devices count the first program change as PC0 (the range is 0-127) and the others as PC1 (the range is 1-128), Gig Performer allows you to set the starting point for display purposes. This behavior can be changed in the Global MIDI Options:

Zero-based or one-based program change numbering in Gig Performer

When the Use zero-based PC numbers toggle button is turned off (A), then program change numbers will start from 1. Turn on this toggle button to start counting from 0 (B). The results will be immediate (you don’t need to close the Options dialog).

Permanent Program Change numbers

Gig Performer assigns implicit program change numbers automatically to new rackspaces. These program change numbers are not permanent. Example:

Sort rackspaces by name in Gig Performer

When you click on Edit -> Sort Rackspaces by Name you’ll notice that rackspaces now have different program changes assigned to them.

You can control this behavior by assigning an explicit program change value to a variation, making it permanent. Double click on a variation to open the Variation Properties dialog and enter the desired value. Example:

Sort rackspaces by name with permanent Program Change numbers

When you click on Edit -> Sort Rackspaces by Name you’ll notice that rackspaces retained the program change numbers.

Note: if an explicit program change number has been assigned to a variation, that number will appear to the left of the variation name. If there is only one variation with a permanent PC number in the rackspace, the program change number will also appear to the left of the rackspace name; if there is more than one variation with a permanent program change, an asterisk will appear there, as well (see the screenshot above).

Note: variations cannot share the same program change number. If you manually assign a program change message to a variation, any implicit program change number will be removed and you’ll see the “hyphen-minus” sign as in the screenshot below:

The hyphen minus sign is shown when an explicit program change, overwrites the implicit one

What may be confusing for new users is what rackspace variation is selected when you send a program change message from your MIDI controller when there is no explicit program change number assigned to this variation. The answer will be the variation that was last selected for that rackspace. Example:

How are variations selected when no permanent program change is assigned

Suppose you send PC 1, PC 2 and PC 3 from your MIDI controller. You can see that the last selected variation is in focus. Always remember that program change numbers are assigned to variations and not to rackspaces.

If you want to always have selected the first variation in a rackspace when you send a program change message from your MIDI controller, turn on the Auto-assign a permanent PC number to new rackspaces (first variation) toggle button in the General Options. If this option is turned on, when you create a new rackspace or duplicate an existing rackspace, Gig Performer will automatically assign the first variation a permanent program change number.

Unused Program Change messages

Although this is not recommended, Gig Performer allows you to pass unused program change messages (i.e. program change messages that are not assigned to rackspaces) to plugins. Turn on the Pass unused PC messages toggle button in the Global MIDI options to activate this feature. For example, look at this setup:

KeysOfThe70 plugin responds to program change messages

Program changes 1-3 are used to change rackspaces. If you send program changes greater than 3, the bundled KeysOfThe70s plugin (which can respond to program changes) will change its programs (as indicated with the red rectangle).

Although this feature exists, we recommend that you turn it off, as it may introduce undesired behavior in your rackspace and also for other reasons mentioned in the first section of this article.

Convert MIDI song select messages to program changes

Gig Performer allows you to convert incoming MIDI Song Select messages to Program Changes. The conversion is done in such a way that you can use them in all Gig Performer options as if they really were program change messages. If your MIDI controller can’t send these messages and you want to experiment with them (or with any MIDI message), we recommend that you use a free tool such as Pocket MIDI (there are versions for both Windows and macOS):

Send various MIDI messages using PocketMIDI to Gig Performer

Simply enter the desired value (as indicated with the red rectangle) and click on the Transmit button.

Other options

There are other options related to program change events that you can find in our user manual in the Global MIDI Options and Setlist Options; for example, you can immediately switch to the Setlist view as soon as Gig Performer receives a program change message, or you can control which devices or MIDI channel are allowed to accept program change messages.

How to reset Program Change assignments in rackspaces

.
There are quite a few options in the Edit menu that allow you to perform different operations related to program changes. We have already mentioned sorting rackspaces by name, but you can also choose to sort rackspaces by their program change numbers (simply select Edit -> Sort Rackspaces by PC numbers).

Further, note the Reset Program Change Assignments submenu and expand it. We’ll explain what these options do.

Reset Program Change Numbers (first variation only)

Selecting this menu item will pop up a dialog stating that all current program change assignments will be removed and that new program change assignments will be created for the first variation in all rackspaces, starting with a number that you type in this dialog, for example 5 (optionally, enter the bank select values):

Reset PC numbers for the first variation in all rackspaces

Reset Program Change Numbers (all variations)

Selecting this menu item will pop up a dialog stating that all current program change assignments will be removed and that new program change assignments will be created for all variations in all rackspaces, starting with a number that you type in this dialog, for example 1 (optionally, enter the bank select values):

Reset Program Change Numbers (new bank per rackspace)

Selecting this menu item will pop up a dialog stating that all current program change assignments will be removed and new bank numbers (visit this blog article to learn more about banks) will be assigned to each rackspace, starting with numbers that you type in this dialog, for example, MSB = 0 and LSB = 2:

Reset PC numbers with a new bank number for each rackspace

In this example, all variations a, b, c in these three rackspaces (A, B, C), will have program change numbers 1, 2, 3 respectively, but with new bank numbers.

NB: in previous versions of Gig Performer you needed to enter a single value in this dialog, for example, if you wanted to start with MSB 1, LSB 0, you needed to type in 128; if you wanted to start with MSB 2, LSB 0, you need to type in 256, etc. In Gig Performer v4.5 MSB and LSB values are separated in this dialog.

Clear All Program Change Assignments

Selecting this menu item will simply remove all current program change assignments:

Clear all current PC assignments in Gig Performer

Program change numbers are automatically assigned as in the first screenshot in this article.

Managing Program Change assignments in songs and setlists

.
As soon as you switch to the Setlist view, you’ll notice a certain conceptual analogy in program changes assignments between rackspaces/variations and songs/song parts (click here to learn about the song parts and variations relationship). Similarly to rackspaces and variations, program change messages are assigned to song parts and not songs themselves.

If you don’t specify the desired program changes for song parts, Gig Performer will automatically assign program change numbers:

Setlists and program changes

You can rearrange songs in setlists any order you like and they don’t need to have the same program change number across setlists.

Note: when program changes are automatically assigned and you send a program change message from your MIDI controller, then the first song part is always selected (and not the last selected song part in a song). You can assign the desired program changes for song parts in the Song Part Properties.

Gig Performer 4.5 brings a couple of improvements in managing program change numbers in the Setlist view.

First, when you change a program change assignment for a song part, a dialog pops up and asks you whether you want to apply that program change for all setlists that contain that song (NB: the default “All Songs” setlist is also counted):

Apply program change number to song in all setlists

Further, PC assignments in the “All Songs” setlist will now automatically be copied when a song gets added to a new setlist:

Program Change number assignments are copied from All Songs to a new setlist

Make sure to check out useful operations such as sorting songs by name or by their PC numbers, that are available in the Edit menu.

You can also reset program change assignments in a similar manner that is previously described for rackspaces; click Edit -> Reset Program Change Assignments and then select the desired menu item:
– Reset Program Change Numbers (first song part only),
– Reset Program Change Numbers (first song part only),
– Clear All Program Change Assignments,
– Sync PC assignments With “All Songs” Setlist.

Gig Performer 4.5 now allows you to clear all program change assignments in all setlists, as well:

Remove PC assignments in all setlists

The menu item Sync PC assignments With “All Songs” Setlist is new in Gig Performer 4.5 and it allows you to copy program change assignments from the “All Songs” setlist to all other setlists:

Synchronize PC messages with All Setlists

Use this feature if you want to have the same program change assignments for songs in every setlist.

Top 5 Frequently Asked Questions

.
Q: Can I use the same set of PC messages to select parts in any song?
A: Yes, you can. Refer to this blog article to learn more. You can learn CC or Note events, as well.

Q: Can I change rackspaces or songs using widgets?
A: Yes – insert the desired widgets in the Global rackspace and assign the desired System Actions parameter (click here to see the list of parameters). Read this blog article to see an example.

Q: Can I send out PC messages from Gig Performer to hardware devices and other applications?
A: Yes, please see this blog article for the very detailed guidelines.

Q: I’m sending PC messages from my controller but nothing happens. What to do?
A: First check what MIDI messages are coming from your MIDI controller to Gig Performer (if any) using the Global MIDI Monitor. If you don’t see any messages check your cables or MIDI-to-USB adapter if you use one. If the Global MIDI Monitor shows CC or other messages, you can either use those CC messages to change rackspaces (see above) or reprogram your MIDI controller to send program change messages (check the documentation of your MIDI device manufacturer). If your MIDI controller sends SysEx messages, they can be converted to CC messages using a Gig script (see an example here).

Q: Pressing my USB footswitch simulates a letter on my computer’s keyboard. Can I change rackspace with it?
A: Yes! Read this blog article to see how Gig Performer provides you with the most powerful and flexible MIDI processing. In the article is presented a simple script with which you can use a key on your computer’s keyboard to switch rackspaces (and lots more, for example you can convert PC messages to CC messages in a gig script).

If you have any questions or thoughts, please visit this Community thread.

.
Share this article to support Gig Performer and spread the word! 🙂

Own the Stage® with Gig Performer®

Nemanja Pudar

.
Related topics:
How to change sounds and control plugins from your MIDI controller
The most flexible MIDI processing
How to send program change messages out to hardware devices and other applications
How to automate switching rackspace variations and song parts using the MIDI File Player
Questions about Rackspaces and Variations