A 59-minute show waveform with sample regions marked every three minutes, and an auto-generated tracklist beneath it
A 59-minute show, sampled every three minutes and matched against Shazam. The tracklist builds itself underneath.

Noods Uploader

2024· Product· Next.js· Audio recognition

About

Every show Noods Radio broadcasts needs a tracklist for PRS reporting, and hosts rarely have one to hand. Noods Uploader is the station's internal tool for getting a show from a recording on someone's laptop to published, reported and archived — with the tracklist written for them.

Upload the recording and the app applies fades and station idents in the browser. It then lifts a sixty-second sample every three minutes, runs each through Shazam, and de-duplicates the hits into an editable tracklist laid against the waveform. Residents see their own shows; admins see everything, review, and publish to Mixcloud, SoundCloud and the station's CMS from one screen.

Built for Noods Radio (opens in new tab) on Next.js and Supabase, with wavesurfer.js for the waveform, ffmpeg.wasm for in-browser audio processing and the Shazam API for recognition. It replaced a manual chase for tracklists after every show with a two-minute check.

Screens

New show form: title, audio file, fade in and fade out controls over a waveform
Step one — upload the recording; fades and station idents are applied in the browser before anything is stored.
Editable tracklist with artist, title and start time for six identified tracks
Six tracks identified from twenty samples. Every field stays editable — hosts correct, admins approve.
Show data form with title, date, start time, show type, guests and genres
Show metadata — date, slot, residents or guests, genres from the station taxonomy.
Admin grid of shows with release date, start time, type, genres, status and publish controls
The admin view: every show, its status, and one-click publishing to Mixcloud, SoundCloud and the station site.