Heads Up Karaoke
I like to sing, but although I may know the tune, I can never remember all the words. This is why Karaoke is so cool. But what about when you’re driving in the car? Even if the windows are closed and no one can hear you, it’s so much better it you can sing the actual words. We need a way to display the lyrics so it won’t interfere with your view of the road.
The Heads Up Karaoke display solves the problem. The song plays on your Android phone, comes out the car’s stereo, and the lyrics display just above the dashboard. Some will say it’s a distraction to the driver an may lead to horrific crashes. They’re right of course. So be warned, only very irresponsible people should use this. In fact you should use it only when you’re parked or at a very long stop light.
This Instructable combines techie stuff like LED scrolling, Android and Arduino programming, with Karaoke music, creating LRC files to combine your favorite song lyrics with the tunes. I know, maybe they’re both kinda techie, but anyway, here it is. The example here is not me singing as you can probably tell. I was focused on keeping the car on the road (cheating). But you can get the idea.
LED Display
The display is two, eight 8x8 LED Max 7219 matrix display modules soldered together. You can get then already soldered into units of four. I bought two of these on EBay for just over $5 each. The units of four unfortunately have a header soldered in place on the input side. One of these has to be removed (un-soldered) before the two units can be joined. Use a solder sucker and be careful. In addition to soldering, I also glued the pieces to sit more rigidly side by side.
There are several versions of 8x8 LED displays, and it took a bit of trial and error to find out what I had so the software could be set accordingly.
Case
The case is acrylic cut to size and cemented.
Two sides are 1/16 inch black crackle pieces which are opaque and also look cool. One piece is 16 x 1 ¾ inches and the other is 16 x 2 3/8 inches.
Two other sides are 3/16 clear acrylic. One piece is 16 x 1 ¾ inches and the other is 16 x 2 ¼ inches.
The display and electronics slide into the case and are held in place by two plastic ends.
The case ends are 3d printed. I drew the case ends in Sketchup. The ends are made with tabs that hold the LED display in place against the clear side. The right side also has a long projecting plastic piece with is the platform for the electronics. Sketchup files are attached here.
Electronics
Inside the case is an Arduino Nano and a HC-06 Bluetooth module. The whole works is powered by a 12 to 5v converter plugged into the car’s 12v outlet. The mini (not micro) USB connector plugs into the Nano to supply 5v. The 5v pin on the Nano seems to be sufficient to power for LEDs and the Bluetooth.
Software
The Android program
I used Application Inventor 2 (AI2) for the Android program since my Android programming skills are limited. AI2 is a beginner’s tool kit that provides a lot of flexibility. But for someone with a programming background it can be frustrating to work around its simplifications and Plug and Play capabilities. To allow selection of a preloaded file you must load a helper program called AndExplorer. Get this from Google Play.
The program allows the user to
- Link the phone’s Bluetooth to the display’s Bluetooth (this is optional. Lyrics will always be displayed on the phone.)
- Select a pre-loaded song (in Karaoke format – see Preparing the Songs below), and
- Play the song.
The program allows the options of
- Speeding or slowing the scrolling (control characters and value sent to Arduino)
- Increasing or decreasing the LED intensity (control characters and value sent to Arduino)
- Advance or retard the timing of the display in relation to the music (done within Android program).
The Arduino program
This sketch which runs on the Arduino Nano reads data via Bluetooth serial connection and scrolls it onto the display.
- It uses the MD_MAX72xx.h library to do the scrolling.
- Looks for special control characters to indicate
- faster or slower scrolling
- greater or lesser intensity of LEDs.
Preparing the Songs
LRC Files
This is the sticky part. The Karaoke files used by the Android program are in LRC format. This is really just a text file with timing put in front of each separate line of text. The timing tells the program when to display the text once the music starts playing. An example is attached.
There are some ready to go LRC files that one can download from the web, but the best way I’ve found is to create your own using a wonderful online creation program at http://www.lrcgenerator.com/ Paste or type the lyrics into the window, find the music MP3 file somewhere on the web (or in your music collection) and click the mouse at the beginning of each phrase or line. This provides the timing to be written to the LRC file. When the song is over, save the LRC file to disk. Note that file names cannot contain spaces. Use underscores “_”. I know… how lame is that. You need to transfer both the LRC file and the music file to your phone. Create an easy to find directory for this purpose.
Deploy and Enjoy
I used Velcro to stick the display to the dashboard.
It is assumed that the phone is already set to connect to the car’s audio system via Bluetooth. If this is not done, the music will still play over the tiny phone speaker. And yes, the phone can have two separate independent Bluetooth connections. My phones did anyhow.