A Synthesizer Built Using an Arduino to Control a Cassette Player

Zack Scholl turned an old cassette tape player into an analog synthesizer by controlling its playback speed with an Arduino Uno.

Cameron Coward
4 years agoMusic

CDs and modern lossless digital audio files are superior to old fashioned analog mediums like cassette tapes in every objective way. Cassette tapes have low-fidelity, noisy audio and are prone to damage over time. But they do have many interesting properties. If you’ve ever had a malfunctioning cassette tape deck, you have probably noticed that the playback speed alters the pitch of the audio. Play the tape fast and voices will sound like they’re coming from chipmunks; play the tape slow and they’ll sound like James Earl Jones. Zack Scholl took advantage of that fact to turn a cassette tape player into a synthesizer by controlling it with an Arduino.

Playback speed alters the pitch of audio, because pitch is the result of the frequency of soundwaves. When you increase playback speed, you’re compressing the waveform and increasing the frequency of the soundwaves. That increased frequency translates to a higher pitch. Most modern digital music players have the ability to reduce the frequency in real time in order to compensate for that, which is how your podcast app can increase playback speed without making the hosts sound ridiculous. In this case, however, Scholl purposefully harnessed the ability of the cassette playback speed to alter pitch in order to produce the notes selected through a MIDI keyboard.

The tape that Scholl is playing has a recording that is simply a constant droning sound at a medium pitch. If he speeds up the cassette tape player’s motor speed, the droning increases in pitch. The opposite is true when he slows down the motor. The motor speed is controlled by an Arduino Uno board through an MCP4725 DAC. The higher the voltage of the output, the faster the motor speed. Scholl's code allows the speed to be set over serial from a connected computer. This does require “tuning” to determine which notes correspond to specific playback speeds. A MIDI keyboard is connected to the computer and used to control which notes are being played. Pushing D# on the MIDI keyboard will, for example, send a command over serial to the Arduino telling it to spin the motor at 1.2 times the normal playback speed, while pushing E will set it to 1.4 times the normal speed. The result is a real time analog synthesizer with a very unique sound.

Cameron Coward
Writer for Hackster News. Proud husband and dog dad. Maker and serial hobbyist. Check out my YouTube channel: Serial Hobbyism
Latest articles
Sponsored articles
Related articles
Latest articles
Read more
Related articles