Canvas not supported
? BPM Start Stop Info
Tweet Beat Share Beat My Beats


Save Current Beat

Save Current Beat

Load Saved Beat

What is DrumKid?

DrumKid is a drum machine for your web browser. It's designed for live performance, so you can adjust the beat in real time.

What's the point?

Drumming is hard and there aren't many good drummers around, but drum machines can be restrictive and don't lend themselves to fluid live performance, IMO. I wanted to design a drum machine that could be played by anyone, and that could be played live without prior setup or programming. I also wanted to create something with enough subtlety and range that it could be learnt and mastered over time; one day, I want to hear the phrase "he's really good at DrumKid".

How do I play it?

DrumKid starts by blending two basic beats that you choose from the drop-down menus at the bottom of the screen. The mix between these two beats is controlled by the "blend" slider. The other sliders all control different aspects of the beat and can be adjusted while the beat plays. DrumKid is designed so that you can play around with the sliders without knowing exactly what each one does, but for the curious among you, here is an explanation of every available control:

How did DrumKid come about?

I came up with this idea in late 2012 (I think), and initially tried to build it as a hardware project, using an Arduino mounted in a box with knobs to change the settings, outputting the drums as MIDI notes. It proved beyond my skill, but I changed tack and re-wrote the program in Javascript in August 2013. Both the unsuccessful box and the more successful web app were created in my wire-strewn den in Oxford, England.

How does it work?

DrumKid uses the Web Audio API to play sounds with a high degree of rhythmic accuracy - this is a fairly new piece of technology that is only available on certain browsers, but should spread to all modern devices and browsers in time. My code is basically a sparkly version of Chris Wilson's Web Audio Metronome. The code for DrumKid is available on GitHub; please feel free to fork it and make your own custom version.

What next?

I have a few ideas for what to do next with DrumKid. For starters, I want to make a better version based on feedback from people who have played around with it. Then I want to make a version for the Raspberry Pi and mount it in a box with knobs, mainly because it's fun to solder things. I think this would be possible by getting the project to run in Node, replacing the touch/mouse interface with physical input and writing to an audio stream using a library in Node instead of the Web Audio API.