Skip to content
altstrument

SPECTRAL

Firmware for Workshop System Computer (Music Thing Modular)

A spectral filter bank with randomly modulated logarithmic bands — the Spectral Clouds mode from Kammerl's Clouds fork, ported to the Workshop Computer.

by Andy Jenkinson (uglifruit)

ActiveSource: openMIT
Distribution
Prebuilt image you flash yourself
Source
github.com https://github.com/TomWhitwell/Workshop_Computer/tree/main/releases/103_spectral
Homepage
computer.musicthing.co.uk https://computer.musicthing.co.uk/programs/103-spectral/
Synced from
upstream metadata, raw.githubusercontent.com https://raw.githubusercontent.com/TomWhitwell/Workshop_Computer/main/releases/103_spectral/info.yaml. Corrections belong upstream.

Description

SPECTRAL runs a live FFT over Audio In 1 and divides the spectrum into 4 to 128 LOGARITHMICALLY spaced bands. Every band gets a random gain, re-rolled on a trigger and smoothed over time; bands below a threshold shut entirely. Bands opening and closing is the sound — a high-resolution filter bank that keeps morphing but stays musical, because the divisions are logarithmic rather than linear.<br><br>

It is a spectral filter, not a granular processor and not a reverb. Feed it anything sustained — pads, drones, noise, feedback, a whole mix — and it carves moving holes in the spectrum. Low band counts (4–8) give broad obvious sweeps, close to a random multi-band gate. High counts (64–128) give fine shimmering comb-like textures. Slow smoothing lets bands drift open and shut like weather; fast smoothing makes them snap, which with a fast re-roll rate becomes a stuttering spectral gate.<br><br>

TEXTURE randomises the phase of every bin, smearing transients into a diffuse wash — the part that earns the "clouds" name. FREEZE holds the current magnitude spectrum while still tracking incoming phase, so a held sound stays alive instead of becoming a static drone. That makes it an effect ON a signal rather than a sampler: the input keeps supplying phase while frozen, so pulling the patch cable thins the sound out rather than sustaining it, and freezing during a gap holds a correspondingly quiet spectrum. A short press on the momentary Down position toggles that freeze; HOLDING Down for two seconds instead selects SEALED freeze, which holds each bin's phase advance as well as its magnitude — nothing of the live input reaches the output (leak −69dB rather than −30dB) and the sound sustains at full level with the input unplugged, as a held chord rather than a static buzz. Any short press returns to live.<br><br>

Both outputs carry the same wet signal. Mix the dry signal back externally, and patch through a stereo effect downstream if width is wanted.<br><br>

The switch's two stable positions select knob pages. Middle is page one: Main sets PROBABILITY (how many bands are open), X sets BANDS (4–128), Y sets SMOOTHING. Up is page two: Main sets TEXTURE, X sets RE-ROLL RATE, Y sets OUTPUT LEVEL. Down is the spring-loaded momentary position and toggles FREEZE on each press. Knobs are always live on the page you are looking at. CV In 1 and 2 offset PROBABILITY and BANDS; Pulse In 1 re-rolls the bands, Pulse In 2 freezes while held. CV Out 1 follows spectral density, and CV Out 2 reports the measured DSP load so the headroom can be checked on a voltmeter.<br><br>

ALT-BOOT: holding the switch DOWN at power-on starts TAPE mode, adding a tape-style delay after the spectral engine — wow and flutter from two detuned LFOs moving the read head up to 4ms, damping so repeats darken, and a saturating feedback path. Page 2 becomes TIME, FEEDBACK and WOW; page 1 is unchanged. Even LEDs show a normal boot, odd LEDs the alt-boot.<br><br>

N=1024, hop 256 (75% overlap), sine window, running at 192MHz with all FFT work on core 1 — the audio ISR only fills a ring. The band ratio the original stores in a 127-entry table turned out to be exactly size^(1/(k+1)), verified to 2e-10 against every entry, so it is computed directly rather than shipped; that also makes it correct at this card's FFT size rather than Clouds' larger one.<br><br>

The fixed-point DSP is verified on the host as well as on hardware — FFT accuracy, rect/polar conversion, overlap-add gain, ring timing, band layout and the tape delay each have a test in tools/ (see docs/FFT_VALIDATION.md, which documents the real bugs those tests caught). Flash 1.5%, RAM 70%, and the DSP runs at about 68% of its per-frame budget at 192MHz — measured on hardware and reported live on CV Out 2.

Install notes

Copy the UF2 onto the Computer's program card (RP2040 bootloader drive).

Version history

SPECTRAL version history
VersionDateNotes
1.0.02026-08-27Version and date from the card's info.yaml.

Back to Workshop System Computer