DIY Funny Arduino Project——Karaoke-Singing Robot

edited October 2021 in Arduino & Crowduino

So You Want To Build a Karaoke-Singing Robot...?

Here's what it needs to do:

  • ✅1.Believably open and close its mouth in sync with pre-programmed speech/music
  • ✅2. Listen for MIDI Note On (1001nnnn) and Note Off (1000nnnn) messages as event triggers
  • ✅3. Terrify all who come in contact with it

In what can only be described as "a classic case of taking things way too far", I arranged vocals and puppetry for a 5 song cover album, featuring the likes of Green DayRick Astley, and Carly Rae Jepsen, then took this little monstrosity out to a real life Karaoke Bar to test it out.

?Demo viedo:

Audience reactions were mixed - but I had a lot of fun.

Download the source code here and make one of your own! 

https://github.com/hunterirving/KaraokeBot

COMPONENTS

  • ✅1 . Articulated Toy Face(the creepier the better)
  • ✅2. Arduino (the model shouldn't matter)
  • ✅3. 9g Servo Motor (amazon has 'em CHEAP!)
  • ✅4. PC Running Your DAW of Choice (KARAOKEBOT listens for MIDI messages from a Digital Audio Workstation. I used FL Studio - maybe you'll use Ableton)
  • ✅5. 3D-Printed Body (optional)

Step 1️⃣ Find Your Muse, Rip Its Face Off

Thrift stores are a great place to pick up weird, unloved toys on the cheap! The face for KARAOKEBOT came from a knock-off Thomas the Tank Engine toy.

Step 2️⃣Serve Your Will

Use an Arduino to listen for MIDI messages and a 9g servo motor to move the mouth as messages are received (source code for this is provided).

Step 3️⃣:Lay Down A Track

Using your DAW of choice, lay down some instruments and use a speech synthesizer to create that uncannily human-like sound (FL Studio has a lot of great options built in).

Step 4️⃣: Program Puppetry Patterns

There are a few things one must take into consideration when building an animatronic karaoke-singing robot.

Perhaps the most important consideration is that of timing.

if your 'bot has sloppy animations, it'll look less lifelike and the illusion will be lost.

Since I was using a Digital Audio Workstation (DAW) to program speech, I thought I might as well use it to program animations as well. A separate, soundless MIDI channel was created for animation, and I was able to slide "hits" (captured as MIDI NOTE_ON messages) and "releases" (captured as MIDI NOTE_OFF messages) around in real time to create believable facial animations.

Once you have your song laid out, it's time to program the mouth movements.

In FL Studio, set your Arduino as the default MIDI device, then create a new, empty "MIDI OUT" track.

Lay down "notes" in time with the song's vocals - NOTE ON messages will spin the servo out to open the mouth, and NOTE OFF messages will spin it back to a closed position.

(these steps should be fairly similar under an alternate DAW)

Step 5️⃣: Body Building

This step is optional.

In my video, I tried to make it look like I printed KaraokeBot's body perfectly on my first try.In reality, the shell featured in the video was my third attempt.

The first shell had a face hole that was just slightly too small, and while the second shell seemed like a good fit, it split horizontally when I knocked it off my desk and onto the floor (lesson learned - a little infill can go a long way).

Although it's a wildly specific part that I don't see many others finding useful, here's a download link for the final KaraokeBot shell in .STL format.

I've also included the now infamous "yellow piece" that broke at the 1 minute 32 second mark in the video.

You might consider printing one as a reminder of the importance of perseverance.

Or maybe it's about the fragility of the human spirit....

I used a 3D-printer to make a custom body for my 'bot, but you could go any number of ways with this one.

Step 6️⃣: HIT THE TOWN!!

It's finally time for your robot's big debut.

Is the world really ready for this...?


Special note: The author of the above article is Hunter Irving, Original shared link:https://hackaday.io/project/161523-karaokebot 

Sign In or Register to comment.