I made this mp3 player that only plays inside a real cassette tape player. It's powered by an Xiao ESP32-S3. I chose the Xiao because it has a charger built-in and it's surface-mountable.
Music is stored on a standard microsd card.
For audio output it uses a PCM5102a.
The PCB is really simple because most of the complexity is offloaded to the xiao. In fact, there are ONLY 10k resistors on the whole board!
The most complicated part was reading the take up wheel rotation, and that was done with a very small Alps encoder. That specific encoder is the EC05E1220401 and it's only 2mm tall which allowed me to fit in the 6mm of headroom in a cassette. It's wired just like any other 3 pin encoder.