Raspberry Pi Audio Looper

Why?

I know, so many people have done something similar, using PureData or Chuck or Python.

I don’t want to just copy what someone else has done. Originally, this was going to be a bare-metal programming project, giving me total control. However, it is far more useful to learn how to work with the Linux kernel, as so many do already. Why reinvent the wheel and write your own kernel?

Status

Code has been pushed to GitHub:  https://github.com/rchanrussell/rpi_audio_looper_c

Project At A Glance

The main project: to write my own application (using JACK) that records (via USB sound card) into RAM maintaining separate tracks and loops them. The difference is that I intend to have repeat ability, separate track control (BOSS 505 does this for 5 tracks per bank), and a custom foot pedal. I can select which tracks to mute/unmute. I can set a short track to auto-repeat itself to match the length of the longest track. That’s kinda handy, you can use a drum machine or play your guitar like a drum but just for one bar, while you play a 12-bar blues on the guitar. With a tap of your drum track pedal control it will automatically repeat that one bar 12 times.

I wrote it in C, because I like C. I plan to build a multi-pedal unit, providing the key features of record, play, overdub, track repeat on/off, group number, track number, and means of sending the command once configured. Not yet figured out the user interface, but the RPi has the UART-based command interface ready. I have tested it via Python scripts from my laptop. Group selection provides a means of organizing tracks into verse, chorus, interlude etc.. and make it easy to switch between, muting and unmuting tracks based upon the assigned groups.

UPDATE (2017-10-11): This page has been updated based on the changes I made while working on the project.
UPDATE (2017-10-12): I updated the Status section and added links below.
UPDATE (2020-09-19): I am redesigning the looper. I have a document, based on the design in the link below, but I am redoing it with state machine diagrams and other stuff. The current “master” doesn’t handle offsets too well and is a patchwork that expanded from prototyped code. I hope to get to coding by Christmas 2020. If I design it correctly, it should be easy to completely rewrite it. I will post the new design once it is finished.

Links:

Getting Ready
Looper Setup
Looper Explained

4 thoughts on “Raspberry Pi Audio Looper

  1. Hi Robert and thanks for sharing such an awesome project.

    With the ability to repeat a loop and to combine this, with alternating chorus and verse loops, it has everything I am looking for in a looper.

    The documentation you provided is great, too. So I would love to give it a try and build a version of my own. But before I really give it a go, I would like to know, if this piece of software is fairly complete. Or if there are still some bugs and issues. Could I use the rasberry pi audio looper to do some live looping on stage? Or would you advise against doing this, because it’s still in a prototype stage?

    Kind regards,
    Matthias

    Like

    1. Hi Matthias, I am very sorry for my late reply (VERY late reply). I am dealing with a serious medical issue and struggling with the re-write of this looper.

      It is functional, though if you look at the checking comments you can see what changes and limitations exist. I was worried about keeping it in sync with a metronome because I haven’t successfully done that (I am not sure if it is just my poor timing or the looper, as I don’t have a BOSS looper RCx to test against).

      You are free to test it yourself of course. I am in the middle of a redesign to make it easier to debug and fix. It’s just taking a long time because I wish I had a mentor to help with it (my boss isn’t keen on it and I don’t see him anymore because I am off on medical leave).

      I don’t see why you could not use the looper on stage for live looping. Based upon my measurements (which I believe I tested and posted comments on in checkin comments and somewhere on this blog) I took there’s no real delay beyond the expected buffering provided by USB, which is typical of even full blown PC/Mac’s.

      Just double check the checkin comments in case I disabled multi tracking. I cannot remember as I am working on a complete redesign (not the refactoring branch but a complete redesign). Just use the master branch and look at the checkin history on GitHub.

      Let me know if you have any issues, as that will help with motivation to continue with this project (instead of obsessing about the news).

      Thanks for your interest and kind words on my project,
      ~Robert

      Like

Leave a comment