I've been working on that for nearly two years and now it is done I find it soooo 2014 that the previous intentions to make a full wiki page seem now silly. Anyway this could give ideas to other people so here is an abstract.
This is basically a lame-electronics simple-aggregate-of-common-parts version of a guitar pedal that hosts pd extended patches as effects. It's based on a cubieboard 2, connected to an el-cheapo (this was intended as a proof of concept hardware) soundcard through usb, internally. It boots a rt-patched version of debian from microSD card (never managed to flash sdram) in ... 50seconds , with autologin so no keyboard is needed. After this time it behaves like a floor pedal, pd runs the stored patches responding to its hardware interface. Anyway a keyboard, a mouse and a display can be plugged in and it behaves like a linux desktop, it's easy to edit patches on the fly.
The interface consists of three footswitches, three leds, a button switch, a clickable rotary encoder, four clickable potentiometers and a 4x20 lcd display. The pots and the display communicate with the gpio pins (all of them digital) through i2c, the pots being read by a quadruple i2c adc.
I called it a pd pedal, but I have to confess it cannot be directly connected to a guitar amp, as the IO are two preamplified instrument inputs, two line in, two line out and a headphone stereo jack. This can be solved when you have a digital pedal in your pedalboard that have line inputs. Of course I knew it from the beginning, and could never work it around later as it would have taken more space and would have been tedious to implement for a beginner electronics fan like me .
I also wanted from the beginning to make a relatively small footprint on my pedalboard so it is rather tall (aluminium box is 160x125x76). What a challenge to stack these components in such a box it has been, especially when it came with holes positioning, elements fixture, internal aluminium rounded edges to mill and file down...
The 1 ghz dual-core with 1 gb ram allows for decent dsp patches.
The pedal automatically runs a predefined patch but interface allows for patch selection. (statically coded so far)
I initially wrote several externals that allow for interface i/o, but never got rid of audio artifacts when the interface was trigged. As a workaround I now make the readings from outside pd, with a well-choosen rt priority and send values to pd using pdsend. The workaround is only half of what it should be, as for outputting data (writing things on the display) I still rely on a homebrew pd external (too much work for me to take it out of pd). The result is uncorrupted audio only when lcd display is not used, which is unreasonable (every pot controls a patch parameter and I love to see the values updated on the lcd). But when the pedal is left untouched the audio is clean.
Here are two pics, one of the inside before the audio card is stacked and the other one showing it outside look.