MainStage has a unique hierarchy for organizing elements in your patch list. This hierarchy enables you to be as specific as you want when creating and modifying patches. From top to bottom, the hierarchy is as follows.

  • Concert
  • Set
  • Patch
  • Channel Strip

Chanel Strips represent individual sounds mapped to different areas of the keyboard. Patches are collections of channel strips. Sets contain patches organized in a specific order, and a** Concert** houses all the sets.

Various settings can be configured at each hierarchial level, and these settings drip down into lower levels. In other words, tweaking settings at Concert Level will affect everything in your concert, while a channel strip tweak will only affect that specific channel strip.

While this hierarchical structure is a simple concept, it’s actually very powerful in practice. In the screenshot of the patch list, SynthWorks is the concert, Song 1 is a set,** Patch 1 – 3** are patches containing channel strips (not pictured). Now that you understand the hierarchical nature of a MainStage concert, let’s take an in-depth look at each level starting with channel strips.

Channel Strips

Channel strips are the smallest hierarchical elements in MainStage. Earlier, we said each channel strip represents a specific sound source. This is true forinstrument channel strips, but there are other types of channel strips that perform different functions. From now on, you can simply think of channel strips as the building blocks that make up a patch. Here are the different kinds of channel strips.

  • Instrument Channel Strip
  • Audio Channel Strip
  • External Instrument Channel Strip
  • Auxiliary Channel Strip
  • Master Channel Strip

Similar to traditional hardware mixers, MainStage’s channel strips’ signal chain flows from up to down and left to right. In fact, many parallels can be drawn between channel strips and hardware mixers. We’ll point these similarities out in our in-depth discussion of each channel strip.

Instrument Channel Strip

An instrument channel strip (also known as a software instrument channel strip) hosts a virtual instrument plugin. Depending on what virtual instrument you’re using, a channel strip may represent anything from a grand piano to a full symphony orchestra. Take a look at the screenshot of an instrument channel strip.

Remember when we said the signal chain flows from up to down? When a keyboard is played, MIDI data containing information like what key was pressed and** how hard it was pressed** exits the keyboard’s MIDI output and eventually makes its way into an instrument channel strip in MainStage.

At the top of the instrument channel strip is an Expression dial, which is similar to a preamp knob on a hardware mixer. The major difference is that the Expression dial is really only used to turn down volume. For our purposes, the Expression dial should be kept at 127, 99.9% of the time. We’ll explain why and how you should do this later on.

Next up is the Channel Strip Setting. If you right click on this, you’ll see a list of channel strip presets. You can also save channel strip settings for fast recall of your own creations.

Gain Reduction is a compressor and** EQ** is an equalizer. Don’t worry if you don’t know what that means. We’ll be covering audio effects in the next chapter. Do you notice something wrong here? So far, we only have MIDI data, and we already established that MIDI isn’t audio. Why are there audio effects at this point in the signal chain?

Double clicking on Gain Reduction and EQ clears it all up. Two plugins should appear in the Audio FX section farther down in the signal chain, and graphical displays will appear in the Gain Reduction and EQ boxes. Apple has simply included these two modules further up for aesthetic reasons.

MIDI FX plugins process and manipulate MIDI before sending it further down in the signal chain. You can do cool things like map chords and create arpeggio patterns. We’ll be covering MIDI FX plugins in detail later on.

Input is perhaps the most important part of an instrument channel strip. This is where you choose what virtual instrument plugin you want to use. A virtual instrument plugin takes incoming MIDI data, interprets the instructions provided by the data, and generates audio. In the example screenshot,** EXS24** is the plugin we have chosen. We will discuss EXS24 in detail later on, but for now let’s go over the basic concepts. EXS24 is a sampler, which means it takes pre-recorded audio samples, modifies it in various ways, and spits it back out.

In the example channel strip, EXS24 is hosting samples for a Yamaha Grand Piano. This means someone recorded samples of each note on a real grand piano, and assigned each sample to a note in EXS24. Thus playing C3 on a digital keyboard is essentially playing back a recording of C3 from a real piano. Different virtual instrument plugins produce audio in various ways, but they all have one thing in common. They all transform MIDI data into an audio signal that can be heard.

At this point in the signal chain, MIDI data has been converted into audio. Next in the signal chain are Audio FX plugins, which process and manipulate audio in various ways. Popular Audio FX plugins you may have heard of include EQs, compressors, delays, and reverbs. We’ll be discussing Audio FX plugins in detail later on.

Output lets you specify where you want to send the audio. In most cases, sending everything to Output 1 – 2 is just fine. However, the sound department for your show might request certain sounds be sent to different outputs. A request like this is quite common for Broadway shows and national tours. On some shows we’ve worked on, keyboard sounds are on Output 1 – 2, strings are on Output 3 – 4, brass are on Output 5 – 6, and sound effects are on Output 7 – 8. This gives the sound engineer a lot more flexibility when mixing.

The Pan knob, volume fader, and mute/solo buttons are the remaining elements of an instrument channel strip. The pan knob moves audio left and right in the stereo field. When used correctly, panning different instruments can create a huge-sounding patch.

In the example screenshot, the volume fader is to the left and the volume meter is to the right. The volume meter gives you a visual representation of how loud your sound is in dB, with o dB being the absolute ceiling. We say “absolute” because an audio signal higher than 0dB is** clipping**, and it’s not pretty.

Now you’re probably wondering why 0 on the volume fader doesn’t correspond with 0 on the volume meter. This is done on purpose to give you some headroom to work with. You should always strive to never go above 0 (also known as** unity**) on the volume fader, as this will minimize the possibility of clipping your outputs.

The box above the volume meter displays the audio signal peak in dB. This is the loudest volume audio reaches at any point in time. In the example screenshot, our piano sound peaked at -4 dB. The box above the volume fader displays the physical location of the fader. In the example screenshot, our fader is at 0.0 dB. If we move it down 6 dB, the box will read -6.0 dB.

Lastly, the mute and solo buttons can be used to, well, mute or solo a channel strip. Muting a channel strip silences it, while soloing silences all other channel strips. Multiple channel strips can be muted or soloed.

Instrument Channel Strip Inspector

Every channel strip has an extended settings menu called the Channel Strip Inspector, which can be found at the bottom of the screen. Depending on the type of channel strip, the inspector displays different configurable options contained in various tabs. The instrument channel strip inspector contains four tabs.

  • Channel Strip Library
  • Attributes
  • Layer Editor
  • MIDI Input

Channel Strip Library

The Channel Strip Library tab contains a list of factory and user instrument channel strip settings.

Attributes

The Attributes tab lets you change the name, color, and icon of your channel strip.

Layer Editor

The Layer Editor tab is where you can assign key and velocity ranges for a channel strip. MainStage also supports floating split points, and you can set the floating range in semitones in the Layer Editor.

MIDI Input

The MIDI Input tab lets you process MIDI data in various ways before it’s sent to a virtual instrument plugin. In the Input section, Keyboard is where you can choose an input source for a channel strip, Filter lets you filter out specific MIDI data, and Transpose lets you transpose the incoming MIDI data up or down. In the Controller section, you can virtually route and scale controllers.** In the Velocity Scaling** section, you can scale the keyboard input on a global or per note basis. We’ll discuss all these settings in detail later on.

Audio Channel Strip

We won’t be using the audio channel strip much, if at all. However, it’s worth mentioning for the sake of completeness. The audio channel strip can be used to connect external sound sources to MainStage via an audio interface. Vocalists can run their microphone through MainStage, and use it as an effects processor. Guitarists and bassists can also use MainStage to host amp modeling plugins. It’s even possible to plug an entire band into MainStage and use it like a virtual mixing board!

External Instrument Channel Strip

Think of an external instrument channel strip as an audio channel strip with MIDI capability. Simply put, an external instrument channel strip allows you to use your keyboard to trigger itself or some other physical sound module via MIDI. You’re probably wondering why you wouldn’t just use an audio channel strip instead.

Remember, MainStage lets you split and layer different channel strips across the whole keyboard. Mapping multiple external instrument channel strips across different regions of the keyboard enables you to have various sound modules sound only at their mapped regions.

Configuring external instrument channel strips can get pretty complicated depending and what and how you want to trigger sound modules. Since 99% of the programming we do nowadays involves only virtual instruments, we won’t be covering how to set up external instrument channel strips. However, you can consult the MainStage documentation for more information.

Auxiliary Channel Strip

The auxiliary channel strip can perform many different functions depending on how its utilized. Sending signal to effects processors and sub-mixing patches are just two popular functions that can be achieved with auxiliary channel strips. Don’t worry if you don’t know what that means right now. We’ll be discussing auxiliary channel strips in-depth later on. For now, just know auxiliary channel strips can make your life a whole easier.

Patches

In MainStage, a patch is a collection of channel strips. Settings that can be changed on the patch level include** time signature**, tempo, program change, bank select, defer patch change, the option to instantly silence a previous patch, and a** transpose function** that applies to whole patch.

Sets

In MainStage, a set is a collection of patches. Sets are essentially folders, and are often used to represent songs. Settings that can be changed on the set level include time signature and** tempo**.

Concerts

In MainStage, a concert is a collection of sets. A concert represents the highest level of the MainStage’s hierarchy. At the concert level, you can configure global settings for MIDI, tempo, tuning, channel strips, and** metronome**.

The Power of Specificity

Now that you have a good understanding of MainStage’s hierarchical nature, you’ll be happy to know that settings can be overridden at every level. For example, a text box displaying “Keyboard Programming by Brian Li” at the concert level can be overridden and changed to “1) Overture” at the set level. At the patch level, it can be overridden once again and changed to “Acoustic Bass/Piano,”

You may have noticed the gradual decrease in the number of configurable settings from channel strip to concert level. This is because the number of parameters that can be changed at a macro level is much smaller than at a micro level. What this means for you as a keyboard programmer is that you can be as general or specific as needed. We’ll be putting this concept to use in real world programming examples later on.

This post is part of the Apple MainStage Keyboard Programming series. The next post in this series is *Virtual Instruments & Plugins in Apple MainStage *.