This is something I put together to allow a user to control instruments with their feet. I wanted to control the specific interval of my EHX Pitchfork pitchshifting pedal, as well as the recording and overdub functions of my WTPA2 looper. I actually had a very specific use case in mind – to be able to record a loop on the WTPA2, and then shift the pitch of the loop by a specific pitch interval with the Pitchfork.
This was my hack – a pedal consisting of three footswitches to control the recording, bank change and overdub operations of the looper over a DIN cable, and a separate arduino controlled circuit which sent a control voltage to the pitchfork depending on the user input on a resistive ribbon.
How it works
I programmed the resistive ribbon to have 8 “zones”. Depending on which zone is touched, a different note is triggered via CV. Using the rotary selector, one can choose assign different scales/chords to these zones. For example, selecting “dom 7” would mean the user could pitch shift by any of the intervals of a dominant 7 chord: selecting the left most zone would mean no pitch shift (root position), selecting the third zone would mean a pitch shift of 4 semitones (a third), and so on. In some cases, multiple zones represent a single note, so that the player has more space for their feet.
In case all the whitener fluid didn’t make it obvious, this is still a work in progress. I plan to add the following:
- A proper digital-to-analog converter (DAC) to make some of the code cleaner, and to make it easier for me to add features
- An arpeggiator function
- MIDI sync in for the arpeggiator OR MIDI CC gate outs to control VCV Rack on my laptop (I can only do one of these due to arduino micro limitations)
- User editable scales
There were some interesting things i learnt through this project:
- As I didn’t have a dedicated DAC at hand at the time, I used an Arduino Pro Micro to generate a 16-bit PWM voltage which varies from 0-5V. The PWM pins on the Arduino (which the AnalogWrite() function utilizes) are only 8 bit which makes assigning exact note frequencies difficult. As a result I had to use a technique to modify the atmega timer pins to output a 16 bit PWM.
- A PWM output isn’t a smooth, continuous voltage, but dips from 0-5V in regular intervals which gives an “average” voltage output close to what you want. This control voltage can work in certain scenarios like controlling the brightness of an LED (since our eyes can’t detect a flickering greater than 30 times/second), but the voltage fluctuation is very easily registered by the expression input of the EHX pitchfork.
In order to make this output usable, I added a simple RC filter in series with the output to smooth it out. This worked in making the voltage more stable and accurate for the intended pitch tuning purposes. It had the additional effect of adding a portamento to every note change, as the capacitor introduces a slight time-delay when it charges up. This is actually pleasant in certain scenarios, and gives a nice dreamlike “warble” to whatever I’m playing.
Project files can be found here: https://github.com/saurabhlevin/CV-Foot-Controller