Spring 2016

My First Real Project: LEDs Driven by an FFT

A Raspberry Pi music player that drove RGB strips through MOSFETs. The first thing I started and actually finished.

RGB LED strips lit by a music synchronisation project.

Spring 2016. I had a Raspberry Pi, a couple of 12V RGB LED strips someone had given me, a handful of MOSFETs from an electronics kit, and zero idea what I was doing. I wired one of the MOSFETs backwards and it got hot enough to leave a small mark on the breadboard. I learned to read a datasheet, slowly, by needing one. This was the first thing I started and actually finished.

The plan was something like: play music, look at it, make the lights match. I got bands wrong first. Mapping raw audio amplitude to brightness made the lights pulse with anything (clipping, voice, fan noise), a strobing mess that hurt to look at. Reading about Fourier transforms long enough to type numpy.fft.fft(audio_chunk) into a REPL was the moment the project started actually behaving like the thing I’d imagined. Bass-heavy frequency bins went to red; mids to green; highs to blue. Smoothing the output over a few frames stopped the seizure-inducing flicker.

The frontend was a vanilla web page on the same Pi: pick a track, tweak the band thresholds, see what changed. No framework. Just a <select>, a few sliders, and an XMLHttpRequest. It worked.

It’s not impressive in 2026. The thing I actually keep from it isn’t the FFT or the MOSFETs; it’s the discovery that I’d rather have a finished janky thing than an elegant unfinished one. Most of the projects on this site are downstream of that discovery; the ATtiny85 handheld four years later is the same instinct with the soldering iron held steadier. I’d still recommend the same path to anyone learning: pick something physical, plug things together until they work, accept that the first version will be ugly.