I could see using a microcontroller (Arduino, or my favorite - Teensy2.0) with a just a few inputs to handle the shifting instead of a whole computer.