Case study 01Hardware2026
Live lyrics on a tiny screen.
An ESP32 and a 0.96" OLED that shows the lyrics of whatever I'm playing on Spotify — line by line, in sync — with my own HARSH.SEC look.
01The idea
I wanted the lyrics of whatever I'm listening to sitting on my desk — not in another browser tab. Small, glanceable, and styled like something I'd actually want to look at.
02How it works
Spotify already tells Discord what I'm playing. Lanyard exposes that Discord presence as a public API, so a small Python bridge on my PC polls it, works out which lyric line is current, and sends it to the ESP32 over USB serial. The ESP32 just draws what it receives.
Spotify
now playing
Discord + Lanyard
presence API
Python bridge
sync + lyrics
USB serial
one line at a time
ESP32 → OLED
SSD1306 over I²C
Keeping it in sync
Discord's Spotify presence includes when the current song started and when it ends, so the bridge always knows how far into the track I am. It lines that position up against time-stamped lyrics and only sends a new line over serial when the current one changes — the ESP32 never has to do any timing itself.
03The screens
128×64 pixels isn't much, so every screen had to earn its place. I cut anything that felt busy — like fake equalizer bars — and kept it clean.



04Iterating on the look
The first versions tried to show everything. Fake equalizer bars looked messy on a screen this small, so they went. At one point I stripped out the progress bar and time readout too, to keep the lyrics front and centre.
Then I gave it a personality: a HARSH.SEC boot splash, an idle clock, and an animated desk-pet face for when nothing is playing — inspired by a post I saw on Instagram. The latest now-playing screen takes cues from ESP32 Spotify players: title, artist, a progress bar and playback icons.
ClassSec ERP