Fork me on GitHub

Project Notes

#250 pedalShieldUno/AudioDSP

Test and develop the AudioDSP library for programming the pedalSHIELD Uno.

AudioDSP_build

Notes

When I built the AudioDSP pedalSHIELD UNO clone to investigate its operation, I started collecting my code in a class library AudioDspDriver.

I’m liking the encapsulation and reuse it provides over just hacking sketches based on the pedalSHIELD examples, but I wouldn’t say it’s ready to be raised in status as a published library yet.

So this project is an exercise in putting the (private) AudioDspDriver library though its paces by first testing how it can be used to implement the equivalent of all the pedalSHIELD UNO examples.

The scope traces below are all captured with a 600mV 1kHz input signal on CH1. CH2 is the output.

bit_crusher

Sketch: bit_crusher.ino

This effect boosts the signal into overdrive (level determined by the pushbuttons). The implementation here is pretty much identical to the pedalSHIELD example.

pedalSHIELD UNO example: bit_crusher_psu

AudioDSP version: bit_crusher_adsp

booster

Sketch: booster.ino

A simple volume boost (level determined by the pushbuttons). The implementation here is pretty much identical to the pedalSHIELD example.

pedalSHIELD UNO example: booster_psu

AudioDSP version: booster_adsp

clean

Sketch: clean.ino

A simple identity transformation. Input == output. The implementation here is pretty much identical to the pedalSHIELD example.

pedalSHIELD UNO example: clean_psu

AudioDSP version: clean_adsp

daft_punk_octaver

Sketch: daft_punk_octaver.ino

Effectively downsamples the input (level determined by the pushbuttons). The implementation here is pretty much identical to the pedalSHIELD example.

pedalSHIELD UNO example: daft_punk_octaver_psu

AudioDSP version: daft_punk_octaver_adsp

delay

Sketch: delay.ino

Mixes a delayed signal with the input in equal proportions (delay depth determined by the pushbuttons). The implementation is a little different to the pedalSHIELD example (which appears a little broken).

Because of memory limitations in the Uno, the delay depth is pretty short, so the effect is more like a light reverb.

distortion

Sketch: distortion.ino

Performs an asymmetrical clipping (top-side) to a level determined by the pushbuttons. The implementation here is pretty much identical to the pedalSHIELD example.

pedalSHIELD UNO example: distortion_psu

AudioDSP version: distortion_adsp

fuzz

Sketch: fuzz.ino

Performs a symmetrical clipping and boost to a level determined by the pushbuttons - signals above the threshold are thrown to the upper/lower rail. The implementation here is pretty much identical to the pedalSHIELD example.

pedalSHIELD UNO example: fuzz_psu

AudioDSP version: fuzz_adsp

metronome

Sketch: metronome.ino

Generates a metronome tone, at a frequency determined by the pushbuttons. The implementation here is pretty much identical to the pedalSHIELD example.

pedalSHIELD UNO example: metronome_psu

monitor

Sketch: monitor.ino

Performs a clean transform of the guitar signal, and logs the settings to the serial port. The implementation here varies from the pedalSHIELD example, in the logging to serial is not done inside the interrupt routine. this ensures that the guitar sounds gets through to the interrupt, but at the expense of not logging every sample.

AudioDSP version: monitor_adsp

signal_generator

Sketch: signal_generator.ino

Generates a tone described in a provided dataset. The implementation here is pretty much identical to the pedalSHIELD example.

tremelo

Sketch: tremelo.ino

Modulates the signal volume at a speed governed by the pushbutton setting. The implementation here is similar to the pedalSHIELD example.

Credits and References

About LEAP#250 DSPGuitarArduino
Project Source on GitHub Return to the LEAP Catalog

This page is a web-friendly rendering of my project notes shared in the LEAP GitHub repository.

LEAP is my personal collection of electronics projects, usually involving an Arduino or other microprocessor in one way or another. Some are full-blown projects, while many are trivial breadboard experiments, intended to learn and explore something interesting (IMHO!).

The projects are usually inspired by things found wild on the net, or ideas from the sources such as:

Feel free to borrow liberally, and if you spot any issues do let me know. See the individual projects for credits where due. There are even now a few projects contributed by others - send your own over in a pull request if you would also like to add to this collection.