How did I make this happen? Well, the block diagram below shows the elements. I bought an aftertouch-enabled Fatar keybed from Keyparts UK. I bought their custom keyscanner, too, which scans the keybed and generates MIDI messages. I then use an Arduino Mega to parse the MIDI messages and to drive the Polysix's electronics. It interfaces with the Polysix by replacing the Intel 8049 microprocessor that is at the heart of the Polysix's "Key Assigner" circuit. This this digital interface, I can control what note they Polysix is sounding. To get the arbitrary pitch bending for the aftertouch vibrato and for the portamento, I generate an analog pitch control voltage (CV) using a digital-to-analog converter (DAC) from Adafruit. I inject that signal at a pitch CV summing node that it already built into the Polysix. After writing a bunch of code to run on the Arduino and after debugging these hardware elements, she works pretty well!
|How I'm Implementing Aftertouch and Portamento|
As you can see in the image below, I chose to make the arpeggiator "Speed" knob control my software LFO, which is driving my aftertouch vibrato. The blinking of the LED still works to show the speed of my aftertouch vibrato! I then use the arpeggiator "Range" switch to set the sensitivity of the aftertouch response. Portamento is activated or deactivated using the "Latch" switch, while the amount of portamento is set using the "Arpeggiator Mode" switch. Now I'm not saying that this is an intuitive user interface, but it sure is nice being able to use these elements to control my new features without having to cut into my Polysix panel.
|Re-purposing the Arpeggiator Controls for Use with my Aftertouch Vibrato and my Portamento|
More updates later...when I get tired of playing!
Update: Here's more info on re-using the arpeggiator "Speed" knob to control the aftertouch vibrato speed
Update: Mounting the Arduino in the Polysix
Update: Tuning the Aftertouch Response Curves
Update: Tuning the Portamento Based on the Mono/Poly
Update: Adding detuning to the Polysix
Update: Added a sustain pedal to the Polysix
Update: I shared my Arduino code here
Update: I added Velocity Sensitivity to my Polysix.