I'm having so much fun making this I thought I would share.
I am working on a simple, cheap, easy to construct multi-effects guitar pedal based on the Raspberry Pi Pico microcontroller. All of the other parts are generic parts. So far I have implemented the following effects:
Noise gate, Delay, Room, Combine Effects, Bandpass Filter, Lowpass Filter, Highpass Filter, Allpass Filter, Tremolo, Vibrato, Wah, Autowah, Envelope, Distortion, Overdrive, Ring Modulator, Flanger, Chorus, Phaser, Backwards (play the last few samples backwards), Pitch Shift, and Octave (rectification).
Some effects can be cascaded inside the device. There are up to 16 "units" where each processing stage can process the results of the last stage. Various controls on the effects can be assigned to the four potentiometers at the bottom of the board, or two expression pedals you can plug into the side.
I also added a VGA output because I want to have a cool video display that changes with the audio. Also, perhaps implement some kind of guitarsynth or MIDI control.
Anyways this has been a lot of fun to make. I hope others will enjoy it too.
https://www.github.com/profdc9/GuitarPico
Oh rock on! I am looking to build things for my daughter and her guitar. I am absolutely going to try and build this.
Is there a specific reason you went with the Pico over an ESP32? On the surface, the specs for this application seem about equal. WiFi and Bluetooth would be nice, but not needed. I dunno if the DAC on the ESP32 would be of any use here either.
My guess about your selection was either about simplicity or availability.
One of the reasons to go with the Pico is that Espressif seems to only support their chips for a limited time. I wanted to use something like is guaranteed to be in production longer. That said, the effects code is mostly portable, so it wouldn't be that hard to move to another microcontroller.
Thanks for the response! I may design a daughter board that I can use to swap between the two and not alter your design too much, if at all. (Why risk breaking something that ain't broke?) Your code and approach to this seems hyper-clean, so I don't want to lose that.