Translated from http://jzu.blog.free.fr/index.php?post/2010/03/30/Le-Phaseur-Arduino

Taking too much room on my pedalboard, the Alesis airFX has left, temporarily replaced by a basic Cry Baby wah. However, I still needed this kind of sick flange effect on Youpi Youpi Yeah (the song) - well, much less now... oh, well - so, after all, why couldn't I hack my very own digital effect? An open source pedal already exists, whose seemingly moderate success might be attributed to it hefty price tag, around $300.

You can reduce costs by using an Arduino for instance, if you don't need much memory or definition, plus it can be cool to design your own system from scratch. Still, some knowledge of electronics is needed, as well as knowing how to optimize your code. Remember that this 16 MHz ATmega186 features only a few Kbytes for the code, and only 1 Kbyte for data and the stack. Just what you need to build a dishwasher control. Or a lo-fi guitar flanger.

Arduino

An aha! moment happened when reading an article on Instructables where, even if the effects were not that interesting by themselves, and there were one or two mistakes, the author, kylemcdonald, put together all needed parts at the hardware and software levels. My own solution is now a tad different, but it would never have seen the light of the day without this article.

While waiting for the circuit I had ordered, I began to test my "variable shift" ideas with Audacity in order to validate the algorithm, slowly increasing a signal delay from a few milliseconds to 100 ms. Ok, I want that. Having received the parcel, integration began with audio I/O adaptation.

Its input needs 5 volts when a guitar signal varies around a few hundred millivolts, and the output is just the reverse. This calls for an amplification stage like an op-amp (an LT1006 being just fine for a 5 volts single rail) at the input, and for a tension divider at the output. The analog input allows for 10 bits, but, to get the same resolution at the output, you need to combine two 8-bit PWM digital outputs, tuning resistor values so that one is 256 times higher than the other. Finally, you can get 5 volts from your usual 9 volt wall-wart using a voltage regulator on a radiator. Something like that, dotted line parts being optional:

Schema adapatation Phaseur

I can clearly see now that this input circuitry was buggy: the bias is totally out of balance. Low pass filters are not necessary. Still, this configuration could output sound after a few difficult tests on a breadboard.

phaseur1.jpg

The first tests with the complete prototype - including a bad Italian pedal from Precambrian eras - gave this sample. Sensitive ears beware.

Phaseur complet 1

Finally, I was able to embed a final version into the wah casing. Fixing the electronic circuit gives much better results from a saturation point of view, but the sound becomes less interesting - and a curious sample and hold effect appears. (interferences at the analog input multiplexer level?)

phaseur8.jpg

Le Phaseur's code, under Artistic 2.0 licence, is uninviting and simple at the same time. Uninviting because of hardware proximity, which no library isolates from the programmer. Simple because the algorithm mixes the current sample with what has been written in the ring buffer just a little moment before, following the pedal position. Everything happens in loop.

To be continued... because, even if I envision another effect box on Linux with CD-quality processing capabilities and memory galore, the Arduino platform is still an efficient solution. Lacking an operating system is a real bonus for basic processing when only 8 or 10 bits of resolution are considered sufficient. When the input electronics have been debugged and the final result is acceptable, it will be easy to shift the bias offset and increase the gain to get the awful tone of the first sample, which some like so much (and others ltend to avoid at any price).