Composing : Program Changes by Joel Irwin

Joel Irwin

Program Changes

One of the features of the MIDI language is the concept of 'Program Changes'.  Technically a MIDI Program message is a message directed to a particular midi 'channel' and used to change to one of the device's 'patches'.  A patch is often used to define/identify an instrument.  So this post is about if, when, an how you use Program Changes in your scores.

Conceptually speaking, you could merely assign an instrument to a channel and then have a track (in a DAW) or staff (in a notional app) assigned to that channel.  Then using this model, we change instruments by activating (playing notes) on different channels.  In fact, we often use this approach to play multiple instruments at the same time.

Program changes provide an alternative way to change instruments.  Instead of placing multiple instruments on one channel each, we can place instruments on a single channel and then change between them with program change commands.

Often we 'hear' that the use of program changes is mainly designed for switching instruments from a midi keyboard during a live performance.  But what about using program changes in midi scores?

There are many who would prefer to keep each instrument on a separate channel.  This approach clearly allows the designer to identify what is playing on every track/staff, but as the number of instruments grow, it could become increasingly difficult to know what is on each staff and inputting/changing the contents of the tracks/staff can become increasingly time consuming (as you must first find the track).

On the other hand, grouping instruments together on the same channel, reduces the number of channels, but as we look at a particular bar on the track/staff, it may not be obvious which instrument is currently active (as the program change command stays in effect until changed and it may be some distance back on the track).  Also grouping unlike instruments together such as a string, brass, and woodwind may not make much 'sense'.

So when would be a good time to consider program changes versus everything on separate tracks?  Here are a couple of possibilities:

1. Many sets of instrument samples often provide different ways to play the same instrument which we often refer to as 'articulations'.  So for example, you might have a violin sample that plays legato, one that plays portamento, and one that plays tremolo. You can keep each on a separate channel but since it is the same instrument type articulating in various ways, you assign them all to the same channel and switch articulations via program changes.  This could be especially useful for notation software where there is interest in having a 'standard' orchestral set of staffs (meaning you want only one violins 1, one violins 2 etc.)

On the other hand, you may be working with instrument samples where each instrument contains multiple articulations.  For these instruments, if those are the only articulations you need, you don't have to switch with program changes since the instrument has switching 'builtin' often by the use of notes likely below the range of the instrument - we call those notes 'key switches'.

2. You may be working with samples of an instrument or ensemble that have predesigned note sequences attached to a single playing note.  There could be more than one instrument of the same type with additional note sequences.  This is often common in sequence designs for percussion instruments.

3. You may have very similar instruments that have different ways/sounds for the notes they play such as different pianos, some with hard sounds, some with software sounds, and perhaps even one with felt keys.

4. For synthesized sequences from the same 'sample' can have varied sound sequences which you can change manually or through 'automation' and you switch between the sequences using program changes.  Often these sequences are commonly used in 'sound design' and can either have a tempo or be without tempo. Or you may elect to have a single channel/staff for all the synth sequences and use program changes to move between them.

Samplers and synthesizers that support midi have various ways of implementing program changes.  Here are but two examples:

1. Kontakt - You create an "Instrument Bank" and then place samples in one or more of the 128 slots where each one presents a program change.  They have the instrument bank's common defined channel. The slots numbers are 1 to 128 but you must subtract one to select the appropriate sample bank.

2. EW Opus - You create samples and define them all with the same channel.  Then in the "Perform" tab / "Zone" window, you set the "trigger" (upper left of the instrument) to "Program Change" and then set the program number below it to a value of 1 or greater.  Keep in mind that you must subtract one to choose it so 1 is selected by "P0".

The above is a simple discussion on the use of Program Changes.  There are many different uses and implementations of them, but this should get you started.

In fact, many of you here probably are already implementing program changes.  Why not chime in here and describe how you are using it and you perceived strengths and weaknesses.

Jim Rieder

Joel Irwin I'm with you Joel. Program changes, key switches, expression maps, dynamics. MIDI recording and editing has come a long, long way since the early days of the Atari ST and Cubase 2.0. I also used Sound Forge (2-channel) and Sound Tools. Which became Protools in 1992. I demo'd a PT system for use when I worked for the Phoenix Suns NBA team. Stayed with it until I migrated to Cubas Pro 8. And never looked back. I do slave Protools from Cubase, because my stems usually end up in a mixing stage or another studio for mastering. and Protools is still the industry standard.

I have also found the building templates for specific uses is very valuable. I have 4 main templates I've built. And they all are constantly evolving over time. Mainly separated into three categories. film score, sound design and sound editing. Each template has roughly 145 tracks with groups of plugins, VI's and outboard gear already set to fire up when I need them.

Other topics in Composing:

register for stage 32 Register / Log In