Back in the 1980's and 90's, cassette tapes were the primary way people would enjoy music both at home and on the go. They work by having a pair of spools with magnetic tape wound around one side at the start, then slowly unwinding it across a head that reads the data stored on the tape's surface. Typically, this all happens at just a single speed, meaning that for those wanting a slow, ambient sound need to somehow adjust the drive motor's rotational speed. In response, people have been adding pitch mods, which often use a potentiometer or even a single switch that slows down the motor, although it can be tedious to manually adjust over time. Isaac Thomas had the idea to make his own version that uses a microcontroller to vary the speed, resulting in a nicer, automated system.
For this to work, Thomas chose to use a Raspberry Pi Pico, which is based on the custom RP2040 chip. The Pico was then connected to a MOSFET driver that is, in turn, controlled by a PWM signal from a digital GPIO pin. Compared to the classic potentiometer, PWM is purely digital rather than analog, and it simulates analog voltages by rapidly toggling on and off within a set frequency. This amount of "on" time within one period is referred to as the "duty cycle", and as an example, setting the duty cycle to 50% with a voltage of 3.3v results in an approximate voltage of 1.65v. So whenever the Pico wants to speed up the motor, it raises the duty cycle, which causes the MOSFET to allow more power to flow to the motor.
After setting up the drive control mechanism, Thomas then needed a way to input the various parameters required for his sequencer. To do this, a rotary encoder was added which lets users turn a dial to do everything from changing the tempo, setting sound values, and selectively muting notes. Meanwhile, all of this data can be easily viewed on a single 128x64 OLED screen that communicates with the Pico over the I2C bus. The final step involved playing a tape containing a pure 1kHz sine wave and then analyzing how the duty cycle maps to it when the speed changes over time. Selectively muting notes was done by building a DIY optocoupler and placing it inline with the sound amplification circuitry. When the LED is turned on, the photoresistor's resistance is lowered and allows current to pass through, and vice-versa.
Currently, all of the electronics fit into a small cardboard box that holds the breadboard and power converter in place. The lid has two 3.5mm jacks that lead to the cassette player while the rotary encoder and screen sit near the bottom. In the future, Thomas plans to include a MIDI input circuit for reading velocity data as well as a control voltage (CV) input for adjusting playback speed.
To see more about this project, you can read its write-up here on Instructables or watch its demonstration video below.