Arduino Drums Bring The Noise, No MIDI Required

When looking through existing Arduino drum kit projects, [joekutz] noticed that most of them just used the microcontroller as an input for an existing MIDI device. That’s fine if you’re just looking to build your own hardware interface, but he wondered if it would be possible to forgo the MIDI device completely and actually generate the audio internally.

To be sure, this is a lot to ask of an 8-bit microcontroller, which is probably why nobody does it this way. But [joekutz] wasn’t giving up without a fight. One of the trickiest aspects was storing the samples: the 8-bit, 11.025 KHz mono WAV files ultimately had to be converted into C data arrays with a custom Python script.

Unfortunately, since the samples are essentially part of the drum’s source code, he says distributing the firmware is something of a problem. Though it sounds as though there might be a solution to this soon for those who want to play along at home.

But don’t get the impression that this project is just software. Check out the custom impact sensors lovingly crafted from popsicle sticks and metal cut from soda cans, which have been mated with sections cut out of old DVD-Rs. Actually getting the beats out of the Arduino required the addition of a R2R DAC circuit and a TDA2822 amplifier. In the video after the break, you can hear the results for yourself.

[joekutz] is no stranger to homebrew electronic instruments. When we last heard from him, he was turning a very pink keyboard into his own personal circuit bending playground.

21 thoughts on “Arduino Drums Bring The Noise, No MIDI Required

    1. I actually looked into ADPCM but my gut feeling said that it would be too much calculations per sample for the Arduino. And honestly I did not understand really how ADPCM works.

    1. No not really. All samples are stored as one long array (part of the source code) in the 32KiB of the Arduino. Se source code with demo data on the project page!

  1. Gosh. Such a clutter when one could use a cheaper, faster, better 32 bits micro like STM32F0 bluepill with DMA and integrated 12-bit DAC @1Msps (or even 4.8Msps with some tricks:

    The worst in Arduino is not even the ugly IO handling and terrible IDE, it´s that is sticks sooo much people to the utterly obsolete AVR8 family…

    1. There are much better 8-bit outside of AVR if you don’t want 32-bit.

      e.g. STM8L151/152 has 4 DMA channels, and you can get *up to* 12-bit ADC,DAC, 64kB FLASH, 4kB RAM, 2kB EEPROM. Their peripherals are simplified version from the STM32 series with more sensible defaults. It has unified program/data address space, so it is easy to put/access read only data in FLASH without silly compiler directives/macros etc than AVR.

      Arduino becomes a burden when you hit the framework or hardware limits.

    2. Indeed. I recently discovered Maxim’s ‘Pico’ dev board: Cortex M4 with FU and the board costs 10 euros. Heck, some Kinetis boards even come with audio codec, headphone jack, input and mic jacks.

    3. Opinions on processor choice are like belly buttons. Everybody has one.

      Maybe you missed the part of this project where he mad his own sensors out of crappy springs? Maybe you missed the off-the-wall sigmoid encoding?

      Maybe you missed everything cool about this b/c you were focused on picking the right chip and/or bagging on the Arduino IDE?

      1. I guess I could not have phrased it better. I am very aware of more capable IDEs and microcontrollers, and professional DACs and sensors etc pp .. hey I could just have bought a cheap used drum kit :)

      1. I think Andrew meant to reply to Vladimir. Vladimir was rambling on about the Arduino being crap and the STM Blue Pill being so much better, and Andrew asked “[if the STM is so great, Vladimir,] where’s the post a link to your finished project.”

  2. “To be sure, this is a lot to ask of an 8-bit microcontroller, which is probably why nobody does it this way”
    Bleep Drum from bleeplabs does it with just an arduino so ya might want to look at that too. Fun bit of kit :)

    1. That chip can only produce tones, not sampled drum sounds.

      If you wanted to produce tones only, it would be fairly easy to do on the Arduino using a few small tables.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.