Cassette tape speed control
Speed controlling a casette player sounded like potentially nothing more than a potmeter and done.
It turns out that cassette tape motorsare designed to keep constant speed under varying load and varying supply voltage. Which makes a lot of sense, particularly in portable designs.
The player pictured here has the electromechanical variant of fixed-speed motor, which are basically weights on the commutator contacts that lift off at the intended speed. See also Electronics_notes/Motors_and_servos#Cassette_tape_motors.
Modulating the power wins in the end, because you're starving it off speed before that liftoff.
The range in which that works is relatively narrow (0.8V iirc), but this is just one-time calibration.
As such, the electronics consists of little more of a transistor, and the code nothing more than reading the dial value (and CV input to allow control directly from a sequencer), mapping to useful range of voltage/speed, and writing that to PWM registers.
I'm setting the PWM registers directly, because Arduino analogWrite() is 8-bit, while 10-bit PWM is a little more precise and its lower speed is valid enough for this case due to the motor's momentum.