David Lamkins picked up his first guitar a long time ago. As best he can recall the year was 1967: the year of the Summer of Love. Four decades later David has conjured up an amalgam of folk, rock and jazz solo guitar music for the occasional intimate Portland audience.
LCW on Bandcamp
location: Portland, OR USA

Facets: MIDI, programming, @musings info

EPP programming: Rotary Speaker Brake

I originally bought a MIDI Solutions Event Processor Plus to gain full access to my Eleven Rack's CC controls from my Roland FC-300 floorboard. The EPP is turning out to be useful for other tasks, as well. This article describes how I programmed the EPP to add a "brake" pedal for the rotary effect.

The Eleven Rack's rotary speaker effect has a three-position speed control. The MIDI implementation of this control divides the 0-127 range into thirds; values in the lowest third set the rotary to "slow", while values in the highest third set the rotary to "fast". This works well with a toggled control pedal on the floorboard, which alternately sends a value of 0 or 127.

To engage the brake, you need a way to send a CC value in the middle of the range, say 64. That's easy enough to do if you have an available physical controller. The challenge is to devise a method that makes sense. If I just programmed a pedal on the floorboard to send 64 to the rotary, it would set the brake. But what should happen when I release that pedal? If the released state always sent a 0, the rotary would revert to slow upon releasing the brake. If I had hit the brake while the rotary was spinning fast, the indicator on the floorboard's speed pedal would then be out of sync with the state of the rotary speaker effect in the Eleven Rack. I'd like to avoid that.

What's needed then, is to have some way for the brake pedal to know about the state of the speed pedal and to use that information to revert to the selected speed when the brake is released. A short EPP program can make that happen.

What we need to do is to remember the most recent value sent by the speed pedal, then send that value when the brake is released.

Here's the EPP program:

F0 00 00 50 29 07 0F 01 03 00 7F 03 00 00 7F F7
B0 51 00
{ Setting #16: With all incoming Control Change #81 events on MIDI channel 1, store the Control Change value in "variable 1". Continue to process settings }

F0 00 00 50 29 02 10 01 03 00 3F 20 03 00 00 F7
B0 09 00
B0 71 00
{ Setting #17: Map Control Change #9 events of values 0 - 63 on MIDI channel 1 to Control Change #113 of value obtained from "variable 1" on MIDI channel 1. Continue to process settings }

F0 00 00 50 29 02 11 01 03 40 7F F7
B0 09 00
B0 71 40
{ Setting #18: Map Control Change #9 events of values 64 - 127 on MIDI channel 1 to Control Change #113 of value 64 on MIDI channel 1. Continue to process settings }

The first step (setting #16, because this follows another program in the EPP) listens to CC #81 messages and saves the transmitted value. CC #81 is the value that my floorboard transmits to change the rotary speed; the actual message gets mapped (as part of the program that's not shown) to CC #113, which is the control recognized by the Eleven Rack.

The second step sends the saved rotary speed value to CC #113 when the floorboard sends CC #9, which is the controller I'm using for the brake pedal, whenever that controller sends a value in the low part of the range. I have the brake pedal set for momentary action, so this happens whenever I take my foot off the brake. Because this action sends the last saved value of the rotary speed from the fast / slow pedal, the rotary speed always returns to the expected state.

The third and final step sends the brake control (a value of 64) to the rotary on the Eleven Rack when I step on the brake pedal.

December 29 2011 22:28:01 GMT