← Selected work

  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.

Role

Solo — hardware, firmware, Python

Hardware

ESP32 · SSD1306 128×64

Stack

Arduino C++ · Python · Lanyard

Status

Working prototype

The OLED display showing its desk-pet eyes above HARSH.SEC

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.

Next case study
ClassSec ERP