Skip to main content
Version: ACS CC

Rusty Musician

Sound processor for electric musical instruments

info

Author: Petru-Cristian NANIA
GitHub Project Link: repository

Description

The device can be connected between an electric musical instrument and an amplifier.
It can apply sound effects to the signal generated by the instrument.
It can also function as a looping station (it records sequences of sound and plays them back repeatedly).

Motivation

I have a passion for music and I've always wanted such a device.
I think it's more fun to make it myself than to buy one.
I also don't always have and entire musical band with me when I want to entertain my friends and a looping station would be awesome.

Architecture

Architecture

Log

Week 5 - 11 May

Week 12 - 18 May

Week 19 - 25 May

Hardware

An electric guitar pickup is just a coil with magnets (the magnetized strings) vibrating around it. These vibrations induce in the coil an electrical current which is normally conducted though an audio cable to an amplifier.

In my project, the aim is to take that current, send it to Rusty Musician device, and do funky stuff with it before sending it to the amplifier.

First of all, the input is be preprocessed with a passive low-pass filter that has a threshold as high as the highest note on the guitar. This ensures the signal is as clean as possible before sending it to the ADC on the Raspberry Pi Pico 2 and processing it using software written in Rust for the RP2350 MCU.

Multiple buttons (with pull-up resistors) are used to select options from the menu (cycle between live effects or select the loop station function). The options are shown on an LCD screen.

For certain effects and for looping, storage space is needed. This is achieved by using an external microSD module and an external non-volatile memory.

The processed signal is sent to an external DAC module, filtered again, and ultimately sent to the amplifier.

Schematics

Schematic

Bill of Materials

DeviceUsagePrice
Raspberry Pi Pico 2WThe microcontroller39.66 RON
A second Raspberry Pi Pico 2WThe debugger39.66 RON
MCP4725 with I2C interfaceDAC module for generating the output signal24.99 RON
LCD 1602AFor the effects menu9.82 RON
Three pin headers - 2.54mm with 40 pinsFor the two dev boards and the LCD3 × 0.99 RON
At least two MF1401 6.3mm jack socketsConnecting the instrument and the amplifier tot the Rusty Musician device2 × 2.00 RON
Audio cableAn extra one is needed to connect the Rusty Musician device and the amp
ButtonsTo select options from the menu4 × 0.36 RON
PotentiometerChange LCD contrast1.49 RON
Breadboard + Jump wires + Stabilized power sourceMounting, connecting and powering everything22.00 RON
Micro USB cablePowering the dev board and uploading the code3.99 RON
W25Q32 module with SPI interfaceFast non-volatile memory for real-time effects5.48 RON
MicroSD card module with SPI interfaceLoop recording and playback4.39 RON
Soundking AL 103 FootswitchStarting and stopping loop recording/playback11.90 RON
Total-171.79 RON

Software

LibraryDescriptionUsage
embassy-rpRust + async ❤️ embeddedNext-generation framework for embedded applications
lcd1602-rsDriver for 1602 LCD via an embedded-hal implementationShow menu on LCD screen
micromathEmbedded-friendly math libraryFast floating-point math
arrayvecA vector with fixed capacity, backed by an array (it can be stored on the stack too)Storing samples of the signal on the stack
fixedFixed-point numbersFaster arithmetic
biquadA library for digital second order IIR filtrersSignal processing
  1. Inspiration: Ed Sheeran
  2. 1602A LCD connected to Pico
  3. Looper for Linux written in Rust
  4. PWM & ADC lab
  5. SPI lab
  6. I2C lab