Ok, so I have a rather large pedalboard with about 5-7 pedals with expression inputs, which I'd very much like to use, but I don't want to have 7 expression pedals on or around my board because it's huge as it is. I couldn't find any readily available DIY projects or schematics for something like that, and commercial choices were a bit too expensive for me since I'm a bit isolated from most of the world. So I thought, why not make a programmable unit that splits the signal to the devices, something along the lines of an Expressionator. So after some research, I've found the main components, an Arduino for the brains, an AD5206 digital potentiometer to get the most faithful replication of the signal, and something to indicate and assign the units, so naturally pushbuttons and RGB LEDs. So first, some background on my way of thinking with this thing:
The expression pedal's signal will be read through the analog input of the Arduino.
To keep the sweep consistent and remove anomalies, set some arbitrary values for the min and max of the sweep, and make them update when it finds a lower/higher value at the analog input.
To prevent spikes from pushing too much, recalibrate back to the arbitrary values after a certain period of time.
Map the read values to serial values readable by the digital pot (Analog in goes from 0-1023, digipot takes 0-255)
Use pushbuttons to assign which of the digipot's 6 internal potentiometers will be mapped to the expression pedal.
While it's at it, use the microcontroller to make different taper variants.
Indicate everything with RGB LEDs
Ok, so with that in mind, I set out on my quest and gathered the required materials. Due to the limited number of pins on the Arduino, I used shift registers to manipulate the LEDs. Specifically 74HC595's, 3 of them, for a total of 8 LEDs, 6 are used and 2 more can be added for future implementations, I have the idea of adding multiple inputs as well, to add sequencers and whatnot, and making them assignable per output, so a total of 36 combinations, but that's all theoretical for now.
I got the first prototype running, but I have some things I'd like to smooth out, so I thought I'd get some more brains into this.
Namely, I didn't go much outside the box with this, in the way that I didn't explore anything outside of the functions I already knew. So here's something I'd like to fix before I make any schematics or project files:
- Try to reduce clock cycles on the code, so that the time between the expression read and send to digipot is minimal.
- Fix the tapers on the STEP and 4x LOW-HIGH modes. What I'd like is to divide and map the read values to 8 values from 0-255 to send out to the digipot, with the minimum sent value being 0 and maximum 255. This could be extended to 10 values if need be, I just want a few steps in it to get that arpeggiator sound. On the Low-High mode, I want it to be mapped so that in the domain of 0-1023, it sends the values of 0-255 4 times. So for the first quarter of 0-1023 it goes 0-255, for the second quarter also, and so on.
These functions in the code DO work, but not perfectly. And I'd like them to be smoother, because the 4xLow-High doesn't really go to a full 255 in the toe-down position of the exp.
Here's a little video of the prototype I have so far. Pedals used in the video are an EHX Ring Thing and Eventide Pitchfactor, the expression pedal being a Roland EV-5.
Note: the PF Mix B only goes to 9 because it calibrates to the exp pedal upon power-up, and I've done some value changes and didn't reset it before making the video, it works fine now though.
Anyway, here's the code so far, a schematic will be posted soon enough, I just have to get a bit more free time, so in a few hours to a couple days at most. Any help, comments, questions, or anything really is hugely appreciated, I don't think I've done the best job with this and would like to get this going as a project.
http://www.mediafire.com/view/arv9060swa8s2zs/Expressionator_v1_0.ino