Update content & design (#75)
All checks were successful
Deploy to Pages / build (push) Successful in 2m58s
All checks were successful
Deploy to Pages / build (push) Successful in 2m58s
Reviewed-on: https://home.schmelczer.dev/git/git/andras/schmelczer-dev/pulls/75
This commit is contained in:
parent
0be50b6c24
commit
b554e92e9f
83 changed files with 2995 additions and 723 deletions
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
title: Lights Synchronized to Music
|
||||
description: A Raspberry Pi music player that analysed audio output and drove RGB LED strips.
|
||||
title: 'My First Real Project: LEDs Driven by an FFT'
|
||||
description: A Raspberry Pi music player that drove RGB strips through MOSFETs. The first thing I started and actually finished.
|
||||
date: 2026-04-26
|
||||
projectPeriod: 'Spring 2016'
|
||||
thumbnail:
|
||||
|
|
@ -8,14 +8,16 @@ thumbnail:
|
|||
alt: RGB LED strips lit by a music synchronisation project.
|
||||
tags: ['systems', 'tools']
|
||||
role: Hardware and software author
|
||||
stack: ['Python', 'NumPy', 'FFT', 'Raspberry Pi', 'Vanilla web']
|
||||
outcome: My first finished non-trivial project, combining a web UI, audio processing, and hardware output
|
||||
stack: ['Python', 'NumPy', 'FFT', 'Raspberry Pi', 'MOSFETs', 'vanilla web']
|
||||
outcome: The first non-trivial project I started and finished
|
||||
audience: technical
|
||||
links: []
|
||||
---
|
||||
|
||||
A Raspberry Pi ran a small music player, and the audio it produced drove the colour of a couple of RGB LED strips through some MOSFETs.
|
||||
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.
|
||||
|
||||
It was the first non-trivial project I actually finished. Far from perfect, but I am still proud that I built it on my own.
|
||||
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 backend was Python, with NumPy doing the FFT. The frontend was a vanilla web page for picking tracks and tweaking settings.
|
||||
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](/articles/ad-astra-attiny85-game-engine/) 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.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue