What Have I Done?
With my foot trigger acquired, my software downloaded, and my enthusiasm raging I hooked everything up and tried it out. There were some problems, however, that I had not anticipated between the FCB1010 (foot controller) and Mainstage. There were also some quirks of Mainstage itself that I had to figure out before I could smoothly work within the program.
Everything started out so good. I started up Mainstage; I connected the FCB1010; Mainstage recognized the midi data that was coming in from the FCB1010, but it was not doing what I had told it to do. In Mainstage you can add buttons to your project and map those buttons to triggers on the foot controller, and then assign those buttons to complete different tasks within the project. The result is that those tasks are then completed when the trigger is pressed on the foot controller. The first part of that sequence of events went fine; the button was added and was swiftly assigned to the midi information that was coming in. The problem with this, however, was that the midi information that was being sent by the foot controller had, shall we say, baggage attached to it. It turns out that there are a couple different types of information that can be sent via midi, and the two big ones are “program change” and “controller change.”
Some midi data has specific functions that it is associated with it. For example, volume is assigned to the midi function 7, so when a program recognizes midi function, it knows that it is most likely concerning volume. Similarly (at least within Mainstage), “program change” functions change the setting, or patch, that the performer is on. That is to say that the midi data concerning “program change” cannot be customized. The problem with this is that every trigger on the foot pedal was associated with “program change,” so every time I pressed a trigger it would change the patch on me and I would have a different sound. This makes sense when you think about it, though. This setup of Mainstage and FCB1010 is ideally meant for guitarists who use different effects and amp modeling, and the “program change” function would allow them to quickly and easily change their sound in between or even during songs. This is not how I wanted to use it, however, and after attempting to customize things manually (unsuccessfully) I took to the internet to solve my woes.
It turns out that many other people had this same problem, and I would have been aware of it if I had looked more closely at the reviews of the product. While the “program change” function was pre-programmed, the “control change” function was left blank and the easiest way to alter it was to buy yet another program specifically for the FCB1010. There exists a program called iFCB by Wabbit Wanch Design that has the sole purpose of re-programming the Behringer FCB1010, and it became a life-saver. Through this program I was able to turn off the “program change” function on each trigger and customize each “control change” function. The “control change” function basically works by telling the program which trigger is being pressed and what midi amount is being sent through. In the case of buttons in Mainstage, I assign a “control change” number to one of the foot triggers and then assign a midi value of 128 to that “control change” number, since 128 = ON in midi. That midi data activates the button, which will perform the task it is assigned to do. If the midi data is less than 128, the button will not work. Once I had all of this under control (pause for laughter), it was only a matter of working out a system that made sense to me.
One of the quirks in Mainstage that I was previously unaware of was the Global vs. Patch settings. Mainstage is setup like a concert (they even call files “concerts”) and each patch within the concert is like a song, thus it can be setup according to the set list and a performer can play through with ease and precision. There are functions that only exist on the patch level, however, and also only on the global level. For instance, if I put an effect on an audio track within a patch, then I can assign a button to bypass or activate that effect, but only when I am working on the patch level. Say I want to use that same effect but instead of running my sound directly through the effect I bus it out. That bus is now on the Global level since any track can be routed to that bus, and any effects that are put in that bus can only be mapped while working on the global level. It makes sense when you think about it, but I did not think enough about it at first which led to some confusion and frustration.
Another quirk of Mainstage is that when you map the buttons to parameters within the plug-ins, you cannot move those plug-ins around because it confuses the mapping within the program. This means that all of the plug-ins must be set before any of the mappings can be done. This requires forethought, which is not always present when one is still learning a program and how they want to use it. One thing I did learn is that, while plug-ins cannot be moved, they can be substituted. This means that if that “tremolo” isn’t working out, then it can be replaced with something else, say “extreme distortion” because maybe the music isn’t “in your face” enough.
After I learned of this information and how to work around/with it, I was able to create a setup that worked for me. On the patch level I had single input bussed to an aux that contained a loopback plug-in (the main tool for looping in Mainstage) and a couple effects. Those aux channels were also bussed to another aux channel that contained an extra loopback plug-in that was independent of all the others. Effects were placed after the loopback plug-in which allowed me to turn them on and off in real time, as well as change their parameters with the pedals on the foot controller, which effected the sound as it was playing rather than looping back the effected sound that it recorded.
Everything was working smoothly, so I had to start being creative and make some music. There are some pitfalls of looping music that I had to learn to avoid as I began working within the setup that I had created.