M9 Looper

The DL-4 was my go-to looper for many many years. When the M9 came out, I thought it could be the perfect replacement for my trusty DL-4, with nice improvements in the looper (longer time, undo, etc…) and having some high quality effects never hurt anyone either. Unfortunately, because of how the M9 is designed, in order to access the looper, you need to hold a button down to enter the looper. This really kills the “feel” of the pedal for me, as what I really loved about the DL-4 is that I could just step and loop right away, no thinking, no holding……just doing. Thankfully the M9 can take MIDI messages to control the looper.

After finishing The Party Bus sampler/mixer/looper, I began to realize the wonderful power/potential in microcontrollers. I had recently purchased an Arduino and was going through tutorials in order to learn how to program/use it. I though that an Arduino-based M9 MIDI Looper Controller would be a great project as it would let me do what I wanted with the M9, and having a nice guide/walkthrough could help others do the same thing.

The basic idea is to have a very small footprint set of buttons that will function just like a DL-4 looper, that you can access at any time, without having to touch the M9 at all. The only difference in functionality (that is planned at the moment anyways) is for the 4th button sending an UNDO message if you hold it down.

At the moment, this is a work in progress, so all pictures/code are just that. Works in progress. The hardware side of things is pretty much done, unless I feel like adding more LEDs, or completely revamping the idea. With 4 switches, and 4 LEDs, I should be able to program as much control as I need for a very long time (tap, doubletap, hold, twobuttonpress, etc…).

My code is pretty barebones at the moment, with controls over RECORD, OVERDUB, PLAY, STOP and PLAYONCE only working at the time of this pages creation. But the code for the 4th button, which will handle HALFSPEED, REVERSE, and UNDO is nearly done.

Once I have more completed, I will post better pictures, as well as some how-to information covering the hardware and software sides of the project.

For those that are less DIY inclined Disaster Area Amps has made a commercially available version of this (in 2 and 6 button configurations). Check it out.

Below are some pictures of the build and the current code.


  • Rich from Line 6 here. I love how you made this all work together. Very cool. Love Pedaltrain as well.

    I just wanted to say one thing for guys who love the DL4 Looper and by the M9 just for Looper. You CAN actually use it just like the DL4 by putting on one Delay you like and then putting it into looper mode and leaving it. That makes it just like the DL4 for the entire time it is on. You can kill the delay just like on the DL4 because you will have control over the one delay only that you get with DL4.

    So to clarify, if you want instant control over the looper AND control over many FX at the same time, this is a great way to go.

  • Hi I was wondering if you had managed to complete the code for the loop controller yet?

  • This is exactly what I’m looking to buy. If Line6 offered a switch like this, I’d pay good money to have the M9 Looper functions right at my feet. Unfortunately, I am not the DIY kind and wouldn’t be able to build something like this. Great work, mate!

  • Hola!

    Antes de todo gran trabajo!! Estoy intentando hacer algo similar y al compilar tu programa para ver el funcionamiento me da el siguiente error.

    “In file included from /Users/pab/Documents/Arduino/pedal looper/sketch_jun07a/sketch_jun07a.ino:2:0:
    /Users/pab/Documents/Arduino/libraries/Button/Button.h:23:22: fatal error: WProgram.h: No such file or directory
    #include “WProgram.h”
    compilation terminated.
    exit status 1
    Error compilación en tarjeta Arduino/Genuino Uno.”

    Hay que decir que tuve que instalar la librería “button” porque hay funciones que la requieren creo yo. Por ejemplo: uniquePress

    Si sabes que puede ser lo agradecería enormemente.

    Un saludo,


    • Hmm, it could be because of a change in the Arduino libraries. The original code for this is quite old, possibly before even the Arduino 1.0 standard. Wouldn’t really know where to start in updating this though, as my level of Arduino syntax/library changes isn’t too great.

      Let me know if you figure it out though, so I can update this page.

Leave a comment to Rich Renken


Rodrigo Constanzo
-makes music and art
-lives in Porto/Manchester
-is a crazy person

Learn from me (for free!)

I am offering free lessons / conversations / consultations / mentoring / time / support to creative people, locally or remotely.
Want in on this?!

Read my PhD Thesis!

Composition, Performance,
and Making Things,
sitting in a tree :


Upcoming Performances

No upcoming performances