MP3: Chiptune DJ

Jonggi Hong, Beth McNany
Github repository


We took apart a calculator and radio and combined them into a single device which has several pre-programmed tunes, and uses the original (calculator) buttons and (radio) knobs to alter the songs as they play.

Idea Brainstorm

  • Create sound effects as the radio plays - this turned out to be infeasible, the furthest we got was a volume visualizer using LEDs
  • Repurpose a clicker as a remote
  • Alarm clock with a different way to switch it off - like rolling away, or requiring you to turn a light on
  • Setting the radio channel or sound volume with the value from a calculator
  • Executing radio functions with TV remote
  • Making sound effect in the original radio sound based on the values in the volume/radio channel controller

Selected Artifact Description and Breakdown

Our first artifact was a battery-powered radio with a plastic shell and manual knobs to control volume and frequency. It came apart in two main pieces, and most of the internal electronics were on a circuitboard. We used the potentiometers attached to the knobs and the speaker in our final product, and powered from the Arduino rather than battery. We also experimented with the radio output, but ultimately did not end up using that part.

external image HEsKfI9.jpgexternal image TchI7LC.jpg

Our second artifact was a battery-powered pocket calculator with a small LCD screen and standard set of buttons. The buttons have conductive spots on the bottom and when pressed, touch pads on a circuit board underneath. The circuit groups signals from different buttons together, so it took some work to figure out how to read a clear signal from the buttons.


Materials and Parts

Describe the Part's Role In Your Project
Total Cost
Arduino Uno R3
The main brains of our project that interfaces the sensors with our computer and performs some simple onboard signal processing
Our first artifact
Another artifact
Used to connect components
Wiring, resistors, & other basic materials
Used to hook everything up



View of the re-assembled radio - it fit back together without issue, and all the output wires were routed through the now-empty battery holder.
external image hDRfaSA.jpgexternal image VCR01BP.jpg

View of the modified calculator - the switches are grouped and each group shares a line in the printed circuit. The signals in the lines are monitored by analog pins in Arduino.

As shown in the schematic, the buttons are grouped and a group shares a line in the printed circuit. A line generates HIGH signal whatever button in the group is pressed. The way to figure out exact button pressed is to measure the ratio of HIGH and LOW signal in the certain amount of time. For example, The keys for number 2 and 5 are in the same group, but the ratio of HIGH in a period when the button is pressed is 0.5 and 0.75, respectively. I could know this by plotting the signals using the graph we made in the Individual Assignment 2.

The groups are as follows (button, ratio):
  • 0(0.5), 7(0.25), Equal(0.5)
  • 1(0.5), 4(0.75), 8(0.25)
  • 2(0.5), 5(0.75), 9(0.25)
  • Multiply(0.25), Minus(0.25), Plus(0.75), 3(0.5), 6(0.75)
  • Dot (0.75)
Some buttons still have ambiguity.

external image WpfWyuW.png

An earlier attempt to combine both circuits on an Arduino Duermilanove (same circuit design, but due to issues with the board, we ended up using two Unos instead):
external image xZtBi59.jpg


  • Our first idea with the radio did not work at all, and we lost a bit of time trying to make that happen
  • The first calculator we tried broke, since the internal circuits were printed on flexible plastic instead of a board
  • Sometimes difficult to figuring out which components did what, and how to soldering to them without damaging other parts
  • We had a lot of weird problems troubleshooting, the sound would (seemingly) randomly stop working or play back incorrectly
  • Too many analog inputs needed, but ran into issues uploading to a larger board (and with smaller ones, had to cut out planned melodies because of memory constraints)
  • The circuit in the calculator is not a simple grid circuit. The buttons are grouped and the signal in a group varies depending on the button pressed. It was hard to figure out the signal pattern. (We used the graph made in Inidividual Assignment 2).

Future Work Ideas

  • Neater wiring and overall presentation
  • Single arduino board
  • More input options and functionality
  • Reading the radio signal
  • Visualizing sound in the radio
  • Analyzing button signals.

Thoughts about Project

  • Definitely underestimated how difficult it would be to get the inputs, especially with the artifacts we chose. Most of the internal electronics were tiny parts on a circuit board and difficult to trace.
  • A simpler device might have been easier to interface with and provided more room (conceptually, but perhaps spatially as well!) for expanding its functionality.
  • It is not easy to make Arduino play sound and read signals from calculator at the same time because timing is important in both tasks.

Links to Inspirations, Code Libraries, and Code Samples