Garretlabs meets Bleep Drum: an Arduino based drum machine with some “tasty hacks”!

Hi techno girls and techno boys!

A long time is passed from my last post, but I worked to many projects in parallel… some of these will pe published here in the near (…ehhhhmmmm!) future. 😉

Since you know I am also a musician (please visit my italian music homepage, which contains  good music to download 😉 :, today I present you a very interesting “hack” which I’ve done starting from a beautiful device from Bleep Labs: the famous, open source and open hardware, and overall groovy Bleep Drum (a very powerful drum machine with a set of 80’s sounds):

The great Bleep Drum with MIDI controller

I asked Dr. Bleep (the Bleep Labs boss) the permission to publish here my complete hacking project….and he gave it to me with pleasure. Many thanks Dr. Bleep, you’re a great!

…So, I am here to describe you my work.

Starting from the schematic of Bleep Drum I noticed that the device used one ATMEGA 328 with 16Mhz quartz….very similar to Arduino architecture.

Then I downloaded the source code (version 07)  for Bleep Drum from the official repository…and I saw that the code was written for Arduino! 🙂 . Note the newest version of the software is the 09.

So, I replicated the embedded project using and Arduino Uno (using the well known mapping between Arduino GPIO pins and the ATMEGA328 pins) and two/three breadboards in order to apply my hacks.

Well, I wanted to add three main functionalities to Bleep Drum:

  1. A two channels-mon0 output instead the original one channel mono (because in my home studio I would like to use the output of the Bleep Drum to enter in two mono parallel filters)
  2. A Volume control
  3. A little amplification functionality

So, I worked on the output stage of the Bleep Drum and I applied the following modifications (all is designed “by hand”, as usual! 😉 ). In the drawing (made by ML 🙂 ) you can see the differences from my output stage and the original one.


In practice, I directly connected the output of the MPC4901 DAC to a LM358 dual operational amp, removing the resistor and the capacitor and adding a 10K potentiometer in order to control the volume.

I connected this output to the two gates of the LM358, in order to have two amplified mono channels.

Finally,  as you see,  I’ve connected the two outputs of the  LM358 gates to the jack tip and ring using two 10uF capacitors.

This is the complete Fritzing schema of the project (click to view the full size image).

BleepDrumsML_v04---FINAL---amplified+stereo_bbThis is the overall project photo:


And finally, thi is the detail of the modified output stage:


Regarding the Arduino software, the version 07 of the official sofware is working great on my hack! 😉

Now the output of my homemade Bleep Drum is very loud (and also “pumping”, if you know what I mean 😉 ), controlled in volume and on two mono channels. YEAHHHHHH! 🙂 So…I will use this instrument in my next electronic music compositions… because (as many of you know) I love the 80’s sounds!

Before to close this post I would like to thank again Dr. Bleep (and Bleep Labs) for his great work and for his helpfulness.

Bye bye geek-girls and geek-boys: I go to compose some good music…using my new instrument! 😉

See you soon!



9 thoughts on “Garretlabs meets Bleep Drum: an Arduino based drum machine with some “tasty hacks”!

  1. Ciao, ho visto il tuo progetto della DrumMachine e sto provando a rifarlo ma quando vado a caricarlo dentro il mio Arduino Uno da degli errori.
    Qualche consiglio?

    • Ciao caro Andrea, sono felice di poter rispondere finalmente in italiano! 🙂
      Potresti essere più preciso riguardo agli errori che ottieni? Sono errori che appaiono durante la compilazione del codice o proprio durante il caricamento del software su Arduino?
      …Poi…che versione hai dell’ambiente di sviluppo di Arduino?
      Fammi sapere, a presto!

      • Ciao.
        Allora ho scaricato adesso la versione di Arduino più aggiornata.
        questi sono gli errori:
        Arduino:1.6.6 (Windows 10), Scheda:”Arduino/Genuino Uno”

        C:\Users\ytrambu\Desktop\Nuova cartella (2)\Nuova cartella\BLEEP_DRUM_009\BLEEP_DRUM_009.ino:25:19: fatal error: MIDI.h: No such file or directory



        compilation terminated.

        exit status 1
        C:\Users\ytrambu\Desktop\Nuova cartella (2)\Nuova cartella\BLEEP_DRUM_009\BLEEP_DRUM_009.ino:25:19: fatal error: MIDI.h: No such file or directory



        compilation terminated.

        Errore durante la compilazione
        exit status 1
        Errore durante la compilazione

        Immagino sia colpa della libreria. Dove posso trovarla? E cos’altro mi servirebbe a livello di librerie ecc..?
        Poi perchè se levo la stringa del caricamento della libreria mi da quest’altro errore? “BLEEP_DRUM_007:9: error: ‘prog_char’ does not name a type

        PROGMEM prog_char noise_table[] = {};”
        Perchè è legata alla libreria?

        Grazie Mille!!!

      • scusa questo è l’errore iniziale:
        “C:\Users\ytrambu\Desktop\BLEEP_DRUM_007\BLEEP_DRUM_007.ino:1:53: fatal error: MIDI.h: No such file or directory

        #include ///must cahnge in and thru compies


        compilation terminated.

        exit status 1
        Errore durante la compilazione”

      • Scusa per le risposte multiple ma ci sto lavorando ancora perchè sono veramente interessato!
        Ho trovato la libreria MIDI, quindi adesso non da più quell’errore ma adesso da solo il secondo:
        BLEEP_DRUM_007:9: error: ‘prog_char’ does not name a type

        PROGMEM prog_char noise_table[] = {};

        Grazie ancora per la pazienza!

      • Ciao caro Andrea, scusa per il ritardo nella risposta!
        Ovviamente il primo problema era legato alla mancanza della libreria MIDI.h, che hai risolto! 😉
        Penso che il secondo problema sia legato alla mappatura della memoria di programma (PROGMEM), come puoi leggere anche qui:
        …Mi sa che dovremo fare una modifica al codice che utilizza la macro PROGMEM prog_char noise_table[] = {};, aggiungendo all’inziio del codice la seguente riga:
        #define prog_char const char PROGMEM

        Fammi sapere se funziona!

        …Se non dovesse funzionare, ti suggerisco di provare a scaricare e usare l’ambiente di sviluppo Arduino 1.0.5 (che usai anche io a quei tempi) e di usare quello. Puoi trovare lo zip qui: , dopodiché scompatti lo zip e lanci l’eseguibile arduino.exe che si trova nella cartella. In questo modo non devi installare niente e puoi usare la versione 1.0.5 in modo indipendente dalla 1.6.6 che usi di solito.
        Metti la libreria MIDI.h nella cartella libraries di questa versione, in modo che venga vista dal compilatore 1.0.5. Dopodiché riprova a compilare usando questa vecchia versione.
        A presto!!

  2. Pingback: Synth Cafè intervista: Garretlabs (Marco Lastri) – Il blog di Synth Cafè

  3. Hello! Can i ask a technical question? Id like to know why does this arduino project need a DAC after the arduino unit. I’ve seen other arduino synth types and you can take the output directly from the pwm output, why here this isnt the case? thank you!

    • Dear Gus, sorry for the late answer.
      The use of the external DAC is included in the original project by Bleeplabs (so you should ask the question to them), but one reason could be tied to the quality of the audio output. Or it could be tied also to the arduino cycle duration: it could be that the audio DAC function done by arduino cycle could be too long for the purpose of the instrument. So they preferred to send digital serial data to the MPC external DAC. But they are all hypotesis.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s