Since I've been playing for electric guitar recently, I took a closer look at Guitar Rig again. To use Guitar Rig in a live setup, it's essential to be able to remote control it using a foot pedal. For that purpose, Native Instruments offers the Rig Kontrol pedal that additionally contains a USB audio interface. But I stil have a Boss FC-50 pedal lying around that I've used in the past to control Reaktor patches on the stage – so why not try to reuse the same pedal for Guitar Rig instead of buying a new one…?
The problem with the FC-50 is that it only sends so-called Program Change messages. Guitar Rig doesn't allow mapping these messages to effect controls. Instead, it uses them to directly change presets, which makes the pedal much less useful. My first idea therefore was to build a Reaktor patch that converts Program Change-messages to MIDI controllers or notes (Note On/Note Off). Unfortunately, Reaktor ignores consecutive Program Change messages with the same value! That would result in multiple pedal presses (on the same pedal) not being recognized.
But there's a much easier option: Nico Wald has created a wonderful (and free) piece of software called MidiPipe that allows to manipulate and filter MIDI messages almost without limits. The basic idea for my filter is to find out which pedal was pressed by comparing the current Program Change message with the previous one. That actually works well, with one exception: If the pedal is set to an invalid value, e.g. by first selecting bank 0, patch 8, and then pressing Bank Down, this cannot be detected from outside. (Program Change messages only allow values between 0 and 127). But it's easy to change that by pressing another pedal twice (and in a live situation it's too cumbersome to use the Bank Up/Bank Down buttons anyway).
The following MidiPipe configuration allows using all 6 pedals of the Boss FC-50 (including the A/B pedal), and - with the limitation mentioned above - also the Bank Up/Bank Down buttons as pedal 7 and 8. External MIDI controllers are just passed through. I've connected a volume pedal that I'm using as volume pedal or wah wah in Guitar Rig. The filter basically consists of two steps:
- Using AppleScript, the Program Change messages are mapped from von 0..127 to 1..8 gemappt.
- Each Program Change message is then turned into one Note On and one Note Off message. Interestingly enough I had to swap the order of messages in MidiPipe to get MidiPipe to output them in the right order.
During development and testing, Kurt Revis' wonderful and free MIDI Monitor was of great help.
By the way, one more hint: In Guitar Rig, I mapped the pedals of the Boss FC-50 directly to the Rig Kontrol pedals. This configuration normally is lost each time a preset is changed. Therefore, for each pedal, the "Lock" option has to be set to make the setting global in Guitar Rig, independent of the selected preset.