Setting up a Roland Boss FC-50 to trigger Ableton Live
Although the Behringer FC-1010 seems to be a simpler match-up for getting foot-pedal control, with expression input, to Ableton Live, the Boss (Roland) FC-50 is a solid choice in a more robust and compact format. Given that I was able to pick one up on Craigslist for about $100, I figured this would be the way to go.
The real challenge with the FC-50 is that it sends MIDI PC (Program Change) data, not CC (Controller Change) data. Since the FC-50 was designed to control patch switching for external synths and guitar effects racks, PC data was the right call. Unfortunately for those of us in the DAW generation, especially Ableton Live users, PC messages are not as useful or versatile as CC data. Ableton Live, specifically, at least as of version 8, converts all PC MIDI data into Pitch Bend (PB) data, and all on the same PB #, so although you COULD use the PB data to trigger, for example, a global clip start, you couldn’t take advantage of the fact that the FC-50 has 5 footswitches. If I wanted just 1 footswitch, there are a lot easier ways to go about hooking one up to Ableton.
Well, getting the FC-50 working exactly as I wanted it proved to be a little challenging for me, given my hardware and software configuration, but for what it’s worth, I”m posting my experience here, in case it may be of use to others. I am by no means a MIDI wizard, but with about 5 hours of research, installation and experimentation, I was able to create a configuration that for now appears to meet my needs, which are:
- leverage all 5 foot-pedals to be able to MIDI- or Key-map to any toggle-based Live control input, such as track start, overdub on/off, move up/down scene etc.
- leverage the Expression pedal input capabilities and map Expression to any continuous controller in Live (not just volume)
- spend no additional money to do all this
The solution for me revolves around 2 key pieces of (free) software: MidiTranslator (Classic) and Midi-Yoke. I was turned onto MidiTranslator by one of the only other posts that Google was able to locate surrounding this issue (it’s in German though), and it solved most of the challenge. MidiTranslator is a cool utility (the Classic version is free) that takes incoming MIDI input from any source, and then spits out either translated MIDI data or keystroke information for each MIDI message received. You can take incoming PC data and convert it, using simple variables, to CC data that Live can easily recognize, or, as I elected to do, you can simply take that PC data and convert it to a keystroke that you can then map using Ableton Live’s Keymapping feature. After a little experimentation, the keymapping option seemed to me to be the best as it then really becomes a no-brainer in Live.
Setting up MidiTranslator is pretty easy to do, and it has a great manual (though it’s designed for the new Pro version, which is not free – approx $80). It generally consists of:
- Creating a new “Project” – which is a collection of Presets
- Creating one new “Preset” – each preset is a collection of mappings, so you really only need 1 preset
- Creating a series of “Translators” within this preset. For each Translator you will:
- Use the Input tab and listen for incoming MIDI messages – press a controller (a footswitch in this case) and watch that the MIDI message is read in the Input tab
- Use the Output tab in Keypress mode to determine what keypress to send when the MIDI message is received. I elected to go with 0-9 on the keyboard
- Once all your translators are set up (I had to do 10 for the FC-50) you can launch Live and set up your keybindings.
Fighting for MIDI Ports
Sounds easy enough. And it was, with a few little caveats that I will get into momentarily. You see, the Classic (ie: cheapo) version of MidiTranslator completely “steals” or locks up the MIDI port that it using to read the incoming MIDI data. It also does the same if you are translating and sending the MIDI data out onto another channel. This means that although it does a great job of translating the data, that data is not available to other software (such as Live) to read. Opening up Live’s Preferences and looking at the MIDI tab, you will see that the MIDI channels you typically use suddenly become RED and unavailable as long as MidiTranslator is open and hogging it.
Makes me wonder what, exactly, MidiTranslator was designed to do, if the MIDI channel it outputs on is not available to other software to read. I guess it’s more for using the computer to control hardware that listens for MIDI messages. In fact, the new MidiTranslator Pro has built-in MIDI port mapping which addresses just this issue. But, me being a cheap bastard, I wanted to find a free solution to this challenge. This is where MidiYoke comes in.
Yoke Up Yer Yaks
What MidiYoke does is create a set of virtual MIDI ports. It does this using the Add Hardware wizard, so after restart, any software on your computer is fooled into thinking that your computer has these additional MIDI ports. Which is great – they show up in Ableton Live, as well as MidiTranslator Classic, as just any other MIDI input or output, with one added bonus: they are not “exclusive” ports, which means that more than one piece of software (up to 3, to be precise) can be connected to the same port. This now opens up possibilities for MidiTranslator to interrupt MIDI input from one external MIDI port, translate it, and spit it out to one of the MidiYoke’s virtual ports. Then Ableton Live listens, not to the original (real) MIDI port, but to the MidiYoke virtual port.
Installing MidiYoke is easy, as long as you’re not afraid of doing a non-custom hardware install. Luckily, MidiOx has provided a very nice pictorial tutorial – for Windows XP. With a bit of common sense, you can take this visual step-by-step tutorial and translate it into WindowsXP instructions. YMMV for Vista and Windows7.
Now that I’m running MidiYoke + MidiTranslator, I can keep capturing MIDI PC data from the FC-50, convert the footswitch PC data to keystrokes, while continuing to pass through (using Midi Thru mode on MidiTranslator) the Expression Pedal CC data (CC16), which can be MIDI-mapped to any continuous controller in Live.
Betting the Bank (Switch) and Stopping the Show
Everyone will want to configure their foot controllers to do specific things. My goals were to facilitate live recording, overdubbing and looping. This is still a work in progress but for what it’s worth, I’ll post my mappings so far, below.
The FC-50 has 5 switches and a 6th “bank” switch that switches the footswitches from 1-5 to 6-10. So, with a bit of hokery-pokery you can (more or less) do 10 different things. The one stupid thing that it does though (for my purposes) is that this 6th switch will send whatever PC Message would be triggered by whichever of the 1-5 (or 6-10) switch was last pressed. Let me state this more clearly using an example:
- If you press Footswitch 1 (FS 1/6) by default the FC-50 sends PC #1
- If you then press FS 2/7 by default it sends PC #2. So far so good.
- If you then press the Bank Switcher (A/B) to switch to the higher bank (6-10), it will send PC #7, because FS 2/7 was last pressed and now that we’re in Bank B, FS2/7 sends PC #7.
- If you then press FS 1/6, it sends PC #6, as one would expect.
This is a pain in the arse. One generally expects the A/B bank select to function similarly to a Caps Lock key – changing the meaning of subsequent keypresses, but itself having no direct keyboard input value. Since that is NOT the way this works, you have to be very careful about leaving some non-destructive (in the sense of “stopping the music when I don’t want the music to stop”) functions available on different footswitches so you can press a “dummy” footswitch just so you can change banks and not worry about it sending some show-stopping message to Live.
- PC#1 FS1/6(A) – Launch clip in Track in currently selected Scene
- PC#2 FS2/7(A) – Stop clip in Track in currently selected Scene
- PC#7 FS2/7(B) – Mapped to “Ctrl-Z” (Undo last action) – great for erasing the last recording. You can also try “Del” instead.
- PC#3 FS3/8(A) – Toggle Overdub
- PC#5 FS5/10(A) – Select Next Scene
- PC#10 FS5/10(B) – Select Previous Scene
Save the Sweat
Finally, after setting all this up, I realized that I didn’t want to have to go through this rigamarole every time I start a new Ableton Live project, so I went to Preferences > File / Folder > Save current settings as default. The only thing I have to change is to keymap the Launch Clip and Stop Clip keypresses to the Track that I’m currently recording in. I actually find that this is an oversight on Ableton’s part. You should have a way of changing focus on Tracks the same way you change focus on Scenes, so you can triangulate on a specific clip using external control, and then provide a means to launch / stop that clip, rather than binding a key to a specific Track.
Other than that, though, things are pretty sweet.