I bought a 15quid till printer with 10 rolls of paper from eBay and wanted to do something with it.

What it does

Have you ever wanted to burst into song at the check-out line? Had a childhood fascination with till printers? Kaching Karaoke lets you sing karaoke in the oldschool retro way you've always wanted - lyrics fed to you from a till printer!

It also aims to pitch shift the song to match what you're singing, so you're always in tune!

How we built it

The receipt printer is technically a USB printer device, but it can be shared virtually as a parallel port printer. As such, we can send byte messages to the printer following the manufacturer's ESC/POS protocol, and get stuff to print out! We grab the karaoke song from youtube and lyrics from some random website and sync up the printer to the song's playback.

The audio processing part is more complicated and doesn't quite work. The song gets pitch-shifted by getting the computer mouse to fiddle with VLC tools/settings while the song is playing, because I couldn't find a good library to do real-time pitch shifting with. Your voice's pitch can be found using a fast-fourier transform. The pitch you should be singing comes from a karaoke midi file of the song, which gives the note/duration values.

Challenges we ran into

  • Printer drivers are weird
  • VLC's API doesn't let me directly change the pitch and Python doesn't have good libraries for real-time audio modification/processing.
  • midi parsing is bizarre
  • Integration urgh

Accomplishments that we're proud of

The printer prints. Brrrr.

What we learned

What's next for Kaching Karaoke

Further refining the pitch detection algorithm, surely somebody already wrote something that's far better than what I'm doing.

Built With

Share this project: