Let's Make Robots!

Yellow Drum Machine

Drives around and finds stuff to play drums on. Samples what it plays, and play to the samples.

How to make a Yellow Drum Machine



Audiofile Engineering asked me to make a robot like this for them, to be won in a promotional contest. Yellow Drum Machine II is done now, and it can be found here.

.. There is always more fun to do with this robot, but for now I will just mark it "complete" in the current version, hope you enjoy it.

Notice how the robot first plays on the object it finds (or is forced to find by the angry cameraman), plays a small beat, and records the beat it plays on it. Then this recorded beat is played again, and it starts to play on the object (an belt tracks and everything else it has),and also playing this sampled beat :)

Also some videos from construction and tuning-time..

What it does? Basically:

  • Navigate around, collect some data, avoid obstacles, until it
  • Finds something "worth playing on" (a single isolated object or a wide flat surface that it can find an angle onto)
  • Snakes into place
  • Plays some beats on what it have found, and samples this, checking it has a "good sound"
  • Based on data collected in the area, and sample just made, then compose a little rhythm, and plays this along with the sample

Why? Well.. I was sitting thinking what I should do for my next robot, what it should do.. Listening to music.. making a rythm with some robot-parts.. Thought; "Hey, I will make a robot that drives around and plays on stuff"

It is just made with sticks mounted very fast with a melt glue gun. But it is really solid still.


Under neath is speaker and a microphone.

The speaker is used for beeps from the microcontroller, and to make click-sounds to the beat. The click-sounds are simply made by setting a pin high and then low straight after each oter. This way I can have the Microcontroller make sound to the music it is also playing, without using any time / causing delay.


The microphone (located on the stick between the two motors) is used to sample sounds and take input, measuring if the sticks are hitting anything or not.

Also it can be used to detect a foot stumping on the floor or someone clapping, and so the robot can find the speed of this after four beats, and play along / fall in to your clapping or stumping.

And.. It can be used when there are kids playing with the robot; Signals "Record", the kids shout, and the robot then plays music / a beat with their shouting as a part of "the music" :)


This robot is made interely without servos. The drumsticks (The "Bass Drum" on the picture) are just these litle geared motors that I am quite fond of.


At the top there is another speaker. It is quite too large, I know, but I thought it looked cool :D Also because it is so torn and twisted, as I could not get it out of it´s old cabinet. On the top-speaker there is a red LED. It lights when the robot is recording, and gives a small blink when it is playing back a sample.


As said above, there is no servo on this robot. The head is also using the little motors from solarbotics. It was, however necessary to use some very thin wire to connect the SRF05, as it otherwise would sort of jam the head now and then if I was using my standard blue wire.

It was quite a fun challenge to make the rather complicated navigation and not having a servo, but only left /right/front to place the head, and then do the rest with the body.

The navigation is complicated because it is not just a matter of navigating around obstacles - that was the easy part. Second the robot has to find good places to drum; A single, isolated object, or a flat wall. Then the robot has to place itself on a good angle to the wall, or straight infront of the object.. All with only L/R/F with the head ;) But it does it quite well now! I am usually amazed of what it finds to play on, when I just let it drive around.


The robot runs for ever on just 4 cells. It must be because the belt-tracks are so geared that there is no strain on the motors.. And no servos, and the sampler takes nothing either.. I dont know, I just know that it runs for hours, more than my wife can stand to listen to - on one charge :D


In the center of this image is a L293D Motor driver. It is just used to enable the head to turn both ways.

Notice how easy it is to mount stuff with this glue; I just thought it would look good there on the side. Put some glue on, and stick it there. Hey, the cables are dangling.. Well.. press then onto the wood, and add a line of glue, bingo!

There is a blue print sticking out behind the wood from a cheese-container ;) That is "the sampler". It is actually this


- And it is just hacked; I took off the switches, and now the microcontroller can record and playback sounds.


- As almost always; Picaxe 28X1 mounted on a standard board. So fast, so effective!!


I think the biggest advantege with building fast as I do (instead of measuring and drawing) - is that you get cooler designs! Lot more soul in this one, than a robot I would make if I was to draw it first..


I know nothing is straight or even or level etc.. But who gives? It is made to play the drums, not to have straight lines :) And trust me; it IS actually quite solid. I will not try, but I am sure it could withstand to be dropped from a table without any harm done.. And if not, it is REALLY fast to fix it again!


Basic construction-materials..


Thanks for listening!

Any questions? If not, then let´s get funky :D





Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

My son and I built this robot and we can't get the drumstisks to work.  Everything else works: the treads, the distance sensor, 'head' movement, both speakers, the recorder module, but the drumsticks do not move when we download the test programs for those.  We've checked several times that the motors are connected to the right pins on the picaxe (Pin O1 for the Snare Drum, for example) and ground (I soldered on a strip of male pins to the ground holes on the picaxe board).  No movement.  

I wonder if the drumsticks need to be attached to the external motor control somehow?  Am I missing something somewhere that makes it clear?


Thanks for any input, and if you have questions, please ask.  

Sorry, I see that I should have posted this on the other page, doing so now.

Hello. I bought the kit from Solarbotics with the http://www.solarbotics.com/product/17550/  Sound Module. Even though I am able to get the module to Play touching the two Play wires together (I cut both wire close to the button, as per instructions),  I am unable to get it to play back when I touch either of the wires to a Ground on the AXE board. I tested the board to make sure it was getting juice, but still nothing. I have searched online and have not found a solution to my problem.

Thank you so much if someone sees this question and responds. 

Hey TheBadger,

First; Can I ask you to post any future comments / questions on "how to make" and YDM, on the page dedicated: http://letsmakerobots.com/node/1050

Cheers ;)

Can you confirm this:

You power the SM from "the robot".
You can press the button/short the wires, and it works.
You change nothing, and then..
You have a (confirmed) ground connection (Marked "G"), and you get zero response when either wire is touching that?

If so, please copy my text above, paste it along with a picture of the last step on the "how to make" - page. :)

I'm about to make the rear drumstick, and i just dont know what material I should use for a nice bass-kick. Any suggestions? @fritsl: what did you use to make the rear stick? Is that tape?

I am using aluminum, always. Thin as possible. I get it from outdoor TV antennaes :)

I start there. Then, when I am sure it's fast enough, I insert a screw in the end, try different ones, till I find the right balance; Stick should not hang, and move fast, but still give a good kick.

Often I wrap it with heat shrink tube, or black tape. Not sure why, I just think it should be black :D And it holds the screw, possibly making it dangle a little on the inside, adding more sound.

Your work is amazing !

It's the funniest robot I'd never seen :)

Keep the funky and good  work !


My son and I are making this robot and having a blast!  Many thanks for making this available for the public.

We did have a question about the sensor.  In MAKE magazine they suggest (and we bought) a Parallax ultrasonic distence sensor (28015).  It only has three connections:  =5V, GND, and signal but in your directions it calls out one with FOUR connections:  %V, Echo, Trigger Output, and GND.  How do I make the sensor I purchased work?

I am a marine biologist, so this electronics stuff is new to me!

Hi tunicate,

I am terribly sorry for this; There has been some editing to my article, and unfortunately some less fortunate things have happened in this process. It was in suggested to me to use the Ping ("Parallax ultrasonic distence sensor (28015)") - but I did point out that this will not do. It has to be the SRF05. Now, when you wrote to me, I saw that the online article did say Devantech SRF05 - but it was a strange mix of description and link. I have changed it, so it says SRF05 only. (and now the link is dead)

I am really terribly sorry. The Ping is a fine sensor though, I think we can make it work, here is what I suggest you do:

* Do not wire the Ping yet - just go ahead with everything else, but do not solder wires to it (and for convenience; do not glue it on either)

* When you come to the part where you are running test programs, make a new post here on LMR, with the "isolated" topic "How to use a Ping as replacement for SRF05" - and if I am not responding, send me a mail. I will then try and help you with the wiring and programming changes that needs to be done.

For the record; One month after the release of the printed Magazine, I will post the (un edited) version of the instructions here on LMR. And there will be a kit available, where you can get all the right parts. I know this is not much help to you, tunicate, but that is what I have to work with for now.

Again; I am terribly sorry.

You are going to have to adjust your code and connections slightly to work with the Parallax sensor.

Here's an example you may be able to adapt:


The documentation for the Parallax Ping sensor can be found here: