I won't go into a ridiculous amount of depth here on the build part, my intention was to show another example of building an Arduino based MIDI controller if you are researching the topic or thinking about building something and gathering ideas. My application is fairly specific for the Line 6 Pod 2.0, but with some code tweaking can be made more broadly applicable.
There are several guitar effects processors with MIDI capability that arrange their presets in banks of 4. I play guitar in a contemporary worship service. The church owns a Line 6 Pod 2.0 modelling processor that sits on the floor and has no foot switches to change presets or pedal to control volume. There are several existing controllers on the market. The Behringer FCB1010 is a great solution for about $150 but takes up more stage floor space than I would prefer. And besides, what fun is that? I knew I had to try and build one. And... I managed to succeed!
Step 1: Basic Hardware Info
Chassis: I "re-purposed" a "ZvBox 160" HDMI modulator that was shot. Nice sturdy steel construction, should survive the zombie apocalypse. Gutted it, laid out the parts, made measurements. I then created a combination drill template/front panel label in Photoshop. I printed the label on a full page adhesive sheet and added an adhesive laminated sheet overlay. See the midi_con_faceplate.psd. Box dimensions are 1.7" H x 10.5" W x 4.75" D (4.32 cm H x 26.67 cm W x 12.07 cm D)
Controller: Arduino Mega 2560 clone made by Sainsmart.
Display: Kingbright model DC08-11SRWA.
Foot Switches: what I had laying around. SPST momentary, normally open. guitarpedalparts.com has 'em for $3.
LEDs: two color, common cathode. Green and Blinking Red.
Assign switches: small SPDT, action is ON-OFF-(ON). Mouser part # 611-7107-001.
Output jack: Rean NYS2122 TS 1/4".
Pedal: passive 10k linear taper pot type. I used the Line 6 EX 1; M Audio EX-P and Roland EV-5 supposedly will also work. See the image for the pedal circuit schematic detail.
Resistors: 10K for pull-up on switches(QTY: 8); 220 Ohm for MIDI jack (I used 2, one may suffice); 220 Ohm for LEDs(QTY 8); 2.2K for expression pedal jack (QTY: 1).
Chassis mount DC jack. Mouser part # 502-712A.
Step 2: Features/behavior:
Foot switches labelled "A" through "D" select the 4 presets within a bank. The other 2 foot switches increase and decrease the Bank number. When changing banks, the last used preset button's corresponding LED flashes until you either select a preset on the new bank, or return to the original bank.
2 momentary toggle switches allow user to assign MIDI channel and continuous controller (CC) numbers. Only CC 1, 2, 4 and 7 can be selected (setup in the Arduino code, but can be expanded) but they are the most commonly used ones. There are 9 banks on the POD 2.0, the controller accesses all 9 but also include a special bank 10. 10-A toggles the tuner on and off, 10-B selects wah mode for the pedal. Either 10-C or10-D will turn off wah and revert back to the user assigned CC number.
The default is CC7 for volume. The LED display shows current bank number, and momentarily show MIDI channel and CC numbers when assigned.
Step 3: The Code:
Here's the code. I've attempted to keep it organized and included plenty of comments. Please use, reuse, abuse or confuse as needed.
You will need to include the MIDI library from FortySevenEffects at github.com.
Step 4: That's It!
Please feel free to contact me if you have any questions. I'm no code guru, but I'd be glad to offer suggestions or ideas.