Raspberry Pi Guitar Amplifier

Guitar Amplifier and effects made with Raspberry Pi and reused Vox amplifier case

Similar projects worth following
I took a Vox VT20+ amp I had that had stopped working, took out everything but the speaker and wired in a Raspberry pi, power supplies, class D amplifier, potentiometers (to set the effect levels), leds, and even VU lights on the front. I used Python and the pyo audio library to do the effects and the GPIOzero module to read the pots.

I built this amp in partnership with my guitar teacher. I taught him Python and a little bit of the electronics and he picked out the effects and how we adjusted them. He is building his own also. Maybe I can get him to post!


Ben's build in a box

JPEG Image - 1.69 MB - 08/12/2022 at 20:39



MCP3008 wiring

JPEG Image - 1.94 MB - 08/12/2022 at 20:39



MCP3008 wiring

JPEG Image - 1.74 MB - 08/12/2022 at 20:39


photo of ben's build

quicktime - 31.41 MB - 08/12/2022 at 20:27



photo of ben's build

heic - 1.98 MB - 08/12/2022 at 20:27


View all 14 files

  • 1 × Raspberry Pi 3 Pi 2 should also work or 4
  • 1 × Cabinet I used old Vox cabinet
  • 1 × speaker, 8ohm or 4ohm
  • 1 × fanless power supply 24v I used Meanwell RT50D
  • 1 × fanless power suppy 5v I used Aiposen 5V 25W

View all 19 components

  • Not so easy

    dsagman2 days ago 1 comment

    OK, I've got a button working, and recording working, but when I try to do playback I get:  terminated by signal SIGSEGV (Address boundary error)

    I think the problem may be that I am somehow starting the pedalmaster main program at the same time and they are conflicting. So maybe not my code. 

    Here's the code, and I have button wired up to GPIO pin 2.

    # Looper. This is test code that:
    # on GPIO connected button press: starts a recording
    # second press: stops listening and plays a loop of the recording
    # third press: stops looping and returns to initial state
    #!/usr/bin/env python3
    from gpiozero import Button
    from signal import pause
    import pyo
    import os
    s = pyo.Server().boot()
    audio = pyo.Input()
    loop_file = os.path.dirname(os.path.abspath(__file__))+'/myloop.wav'
    times_clicked = 0
    def looper_func(key):
        global times_clicked, rec, looper, audio, loop_file
        if times_clicked == 0:
            rec = pyo.Record(audio, filename=loop_file, fileformat=0, sampletype=1).out()
        if times_clicked == 1:
            looper = pyo.SfPlayer(loop_file, loop=True).out()
        if times_clicked == 2:
        times_clicked = (times_clicked+1)%3
    switch = Button(2)
    switch.when_pressed = looper_func

  • Added Test Files to Github

    dsagman2 days ago 0 comments

    While trying to make this work, I came up with a lot of ideas and most of them didn't work. I made a lot of test programs and in the event that any of them might help, I've uploaded them all to the github repository.

  • Working on the Looper

    dsagman3 days ago 0 comments

    I'm working on the looper. Step one is to try to get a program where I can:

    1. press a key to start recording
    2. press a key to start looping (and stop recording)
    3. press a key to stop the looping and wait to start over again at 1 with next key.

    I've managed to do that here:

    It was trickier than I expected. There's some oddities with the callbacks and pyo objects and the audio player not working if it was outside of the callback function. No idea why. But it works on my linux machine and now I need to get it working on the raspberry pi.

    Next steps are to get it working as part of the existing pedal program and to wire it up to a button attached to a GPIO pin. I'm hoping to get an LED that blinks while recording, steady while looping, and then off when not active.

    Maybe easy. maybe not so easy.

  • New Video

    dsagman3 days ago 0 comments

    Overly long video on every code line. 

  • Trying to record info on the code

    dsagman3 days ago 0 comments

    I've downloaded the OBS software for recording my computer screen and audio input. I'm going to try and do a code review video, but, as always, there's another tool to learn and figure out. That said, OBS seems quite good. Fingers crossed. Including the one I electrocuted the other day.

  • Team

    dsagman3 days ago 0 comments

    I had done a lot of the work here with my guitar teacher, Ben McMunn, who I've now figured out how to add to the project. Ben is building his own version using a raspberry pi 2. I'm going to try and get him to upload his photos here.

  • Chatroom is now public

    dsagman3 days ago 0 comments

    I just figured out how to make the chatroom public. I hadn't realized it is private.

  • updates

    dsagman07/22/2022 at 20:20 0 comments

    Updated the Python code to fix for the fact that I wired all the pot backwards. Updated code on Github.

    Also, working on making a looper effect. I've got a button working, but now have to figure out how to record the audio and play it back in a loop!

View all 8 project logs

View all 3 instructions

Enjoy this project?



actionjackson wrote 07/22/2022 at 22:36 point

Does / can your project run guitar amp sims, cabinet impulses, through the class D power amp? 

Great project by the way.

  Are you sure? yes | no

dsagman wrote 3 days ago point

I don't have the skills to code up amp sims, but the amp is basically directly connected to the pi, so anything that will run on the pi can be output to through the amp and use the input of the guitar.

  Are you sure? yes | no

dsagman wrote 07/21/2022 at 20:47 point

Super cool!

  Are you sure? yes | no

Ben mcmunn wrote 07/08/2022 at 18:43 point

Guitar teacher here! This thing took on a life of its own...Mine is in the works!

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates