It’s interesting where events lead you. A couple of friends’ request for a weird jukebox led to things like advising computer science for a play and helping with live adventure puzzle games. All because of a rotary dial phone.
A Proposal Of Sorts
My friends Joshuwa Jenkins and Lindsay Parker were getting married. They wanted the feel of an “old-time carnival midway”. They also wanted an old-timey looking jukebox. I’m guessing they didn’t want a modern DJ setup to spoil the rest of the theme. They also wanted guests to enter their own selection of songs from a predefined list.
Josh came to me because he knew I’ve done embedded projects like this before. He asked if I could make an old-timey looking jukebox, maybe use a rotary dial from an old phone as an input device.
I just happened to have acquired an old rotary phone and was looking for a project. I also had a busted Clarion Jr. radio that would make the perfect enclosure. We were all set.
The plan was the rotary dial attached to the radio would be the interface. Users would select tracks by dialing their number. The jukebox would send the dialed number to a hidden laptop that would look up the track for that number and play it over some PA speakers. Josh did the laptop code, while I did the old-timey interface.
First was figuring out how a rotary dial worked. Old devices like this were fantastic in their simplicity. The dial was just two switches. The first one was normally closed when not dialing, open while you were dialing. The other switch was normally closed, then pulsed open once the number of times for the digit dialed. I used an Arduino for the brains of the interface. It waits for the dialing switch to open, then while open, it counts the number of pulses on the other switch. When the dialing switch closes again, I know that dialing is done and can record the number.
I also decided to display the numbers dialed to give feedback to the users. I didn’t want to use something like a seven-segment LED because that would look a bit too modern (i.e. 70s.) I thought I could use something like a Nixie tube. After consulting with members of Makers Alliance, they told me these things draw a lot of current, more than an Arduino board could probably handle. They suggested a Numitron.
There were also two buttons on the interface. The red button reset it in case someone messed up or if previous people were just idly playing with the dial. There was also a black button the user pressed to confirm and enter their number for the song selection.
I was able to read the dial and display the number dialed. All that was needed was to tell the laptop the dialed numbers. The Arduino already appeared to computers as a serial port through its USB connection. We made it so the laptop listened on the serial port for numbers. To establish communication, we devised the SUP/YO protocol. This is a simple handshake where the Arduino sends SUP to the laptop, the laptop sends YO back, then the Arduino sends SUP again as another acknowledgement and begins sending the number. The laptop puts the number in a queue and plays the song when the previous songs played. All of the code is available, but may be out of date. If you want to know more about it, comment below or ask me elsewhere.
When we connected them for the first time and the laptop played the song we dialed, Josh and I embraced, he picked me up in a bear hug and I lifted my feet off the ground. It was a pretty rad bro moment. A “broment,” if you will. I think it was a hit at the wedding after the ceremony. One thing I didn’t account for was people entering the same song over and over again when it was already in the queue. I could only handle so much of “Fat Bottomed Girls.” If I were doing it again, I’d have to make it ignore adding a song if it’s already in the queue.
Getting A Lot Of Mileage
I heard that the people that do IngenuityFest were putting on their first mini Maker Faire. They had a call for projects so I said what the heck and entered my jukebox interface. I thought it was too small a project and wouldn’t fit, but it was right at home with the other kinds of projects they had there in my location. The Maker Faire is excellent for children, or anyone into the maker scene, and I highly recommend going. One thing I noticed was children have no idea how to use a rotary dial. They usually thought the numbers in the holes were like a touch screen and you put your finger in there and just touch it, never thinking you had to rotate it. Made me and their parents feel old.
Being one of the faire’s makers, they contacted me back to be a part of a maker meetup. I presented the jukebox again, along with other people’s projects like one by Mel McGee who is now the CEO of We Can Code IT.
I thought it was to meet other makers, but I think it was so others could meet us, like Dr. Kirsten Ellenbogen who is the president and CEO of the Great Lakes Science Center. I met her there and she asked me about my project and other maker things. I’m guessing she was scouting for ideas for their new maker exhibit.
I also presented it at a hack night at Aztek Web. It’s a cool place, met some other developers working on cool things and got to see another Cleveland tech company.
A Niche Market
Projects with a rotary dial is certainly a niche. It’s been the biggest hit on the old iteration of my website. It’s why I was contacted by Jeremy Paul of Theater Ninjas. They were working on a play called Code: Preludes that had elements about programming and a character based on Alan Turing. There were stations between acts where you could learn about computing with things like playing binary blackjack. There was also a puzzle room that looked like an old office that you had to find clues that tied in with the story of the play. Jeremy was asking me about making a rotary dial phone that could be part of these puzzles. He asked around Makers Alliance and they referred him to me since I already had made a project with a rotary dial.
We didn’t actually end up getting around to the phone project for the play, but we did talk about the computer science of Alan Turing. I was talking to Jeremy and Ray Caspio, who played the Turing character, about something needed for the plot. Ray mentioned a program running itself, so I assumed he was talking about the Halting problem. He wasn’t, but it fit perfectly. So we all met at a coffee shop and I explained the Halting problem as best as I could using the Halting problem described in prose as a guide.
They were both taking notes, and after my rambling explanation they were like, “Yeah, we got it.” They proved they did when I saw the play. They used the problem as a plot device and if you knew what to listen for you could catch them acurately describing the Halting problem. The problem with technical stuff in movies or shows is it could swing too far in one of too ways. If you want to be accurate, you could go into too much detail and bore everyone. The point should always be to help tell a story, but too much focus on the story at the expense of the technical details means you could verge into fantasy, incorrectly describing tech, making us technical types unable to suspend disbelief. They found the right balance.
They later used it as a plot device for the play The Turing Machine which was a one-man play with Ray reprising his role as the Turing character. For this play they did want the phone to be part of puzzles that the audience could explore and discover more of the story. They already had an Arduino audio shield, so I just had to fit it all into my rotary phone and program it. I already knew how the dial worked. I just had to add the switch for the cradle to tell when the phone was off the hook. They also found a small speaker that I wired into the handset. You can find the code for this on GitHub.
The phone was then used in their Adventure, which is basically a live-action adventure game with puzzles. I’m told they’ll be doing something similar in Gordon Square on October 17th, and/or at the LGBT Community Center of Greater Cleveland, that I’ll be adding new features to the phone for so they can have more complex puzzles.
This had all been great fun. I’m always looking for more projects. In fact, I’m in the middle of a few other (non-rotary) projects others have asked me to contribute to, I’ll be sure to write up those too. But if you want to join forces then just let me know.