Diversions · Sound · on the bench
Laband
A turntable modelled properly in a browser tab. One deck, no sync, and an About paragraph that contradicts the page.
Scorecard · 16 of 20 checks met
How the checks workAll four: its wiring file lists no outside source; no relay, no key.
Missed C4: the About section says there is no file picker, on a page with twelve load slots.
Missed P3: no independent reference for the brake, and playback could not be measured locally.
Missed F4: its three tracks are files fetched from the site.
Missed R3: one deck against Mixxx's four. R4 met: a generated track saves as a WAV or a compact WebM.
01What it is
Laband is a single-deck turntable in a browser tab, built for the studio's own three Laband tracks: Neon Horizon Run, Black Glass Tides and Black Glass Undertow. Pitch moves in semitones and tempo as a multiple of the original, and the two are separate controls. A brake spins the record down, and the platter can be dragged either way with the audio following the hand. Twelve slots take your own files or direct links, and a generator will write a new track from a seed.
It is for anyone who wants to scratch, brake or re-pitch a record without installing DJ software, and for the curious who want to hear a platter's physics modelled rather than faked.
02How it works
All of it runs in the browser. The signal path lives in js/dsp.js, which the page loads twice: once as an ordinary script for the ScriptProcessor fallback, and once as an AudioWorklet module, so the read head and the stretcher run on the audio thread wherever the browser allows (dsp.js:1-34; engine.js:709-746).
The read head is signed, so it can run backwards, and interpolates with Hermite curves; pitch and tempo are held apart by a guarded WSOLA time-stretcher (dsp.js:26-31). The source records why: the browser's own playbackRate accepts a negative value and renders silence. The brake is a per-sample one-pole on the rate with a time constant of 0.36 s (deck.js:25), which the source derives as a steady fall of 48.1 semitones a second (dsp.js:553-563). The generator renders in an OfflineAudioContext and fetches nothing (make.js:1-28). A generated track can be saved as a WAV, or encoded in the browser as a compact WebM (make.js:1583-1667); publishing one to the page's library sends only its recipe, a seed and four settings, never audio (make.js:1514-1520). The tool's wiring file lists no outside data source at all.
03The test
We read the page and its files from the local copy of build 537 on 27 September 2026 and recomputed the brake constant from the source. The three MP3s are not in the local tree, because the studio ships media in a separate archive, so playback itself could not be measured. That is a limit of our test, not a finding about the live page.
| UTC | What we did | What came back |
|---|---|---|
| 20:00:12Z | Page on the local copy | HTTP 200, 113,262 bytes of HTML. |
| 20:00:12Z | The three track addresses | Each returned the HTML page rather than audio: the MP3s are absent from the local copy. |
| 20:00:13Z | The DSP worklet, js/dsp.js | HTTP 200, 74,213 bytes, application/javascript. |
| 20:00:13Z | The made-tracks list, made.php | HTTP 200: {"tracks":[],"n":0,"max":1000}. |
| 20:03:00Z | Brake constant, 12 ÷ (0.36 × ln 2) | 48.09 semitones a second, the 48.1 the source states. |
04The comparison
Mixxx
fetched 2026-09-27What it is
Free desktop DJ software for mixing live with digital music files; checked on mixxx.org and its 2.4 manual.
What it does better
Up to four decks with a crossfader and Sync Lock, BPM and musical key detection, timecode vinyl and hardware controllers, chained effects, a library and recording. Laband has no second deck, no sync, no detection and no controller support.
Where Laband goes further
Nothing to install, with the DSP on the AudioWorklet thread and a fallback it announces (engine.js:709-746). Pitch runs −12 to +12 semitones in 0.1 steps and tempo 50–200% as two live dials (index.html:1235, 1249), beside a brake whose physics is written down. The same seed gives the same generated track on any machine (make.js:18-22).
Audacity, Change Tempo effect
fetched 2026-09-27What it is
A free audio editor; this effect changes the tempo of a selection without changing its pitch.
What it does better
It renders an edited file you can keep, offers an optional high-quality SBSMS stretch for careful work, and sets tempo by percentage, BPM or a target length.
Where Laband goes further
Laband is live: pitch and tempo move while the record plays, and the platter scratches in both directions (dsp.js:26-31; deck.js:734). A modelled brake and spin-up is something an offline editor has no reason to offer (dsp.js:553-563).
05Where it falls short
- One deck. There is no second deck, crossfader, beat sync, or BPM and key detection; the page's own About section calls it a deck built for one record (
index.html:1518-1523). - The page contradicts itself. That same About section says there is no file picker and no library, while the page offers twelve load slots for files and links (
index.html:866-892) and a library of published generated tracks (index.html:707-716). - Audio linked from other sites loads only if that host allows cross-origin reads; a comment in the page calls streaming links the thing that cannot work (
index.html:858-864). - We could not hear it. With no MP3s in the local copy, stretch quality at 50% or 200% went unmeasured, and we make no claim about it.
06The ruling
Laband scores where the engineering shows. When the browser's own control could not play a record backwards, the studio wrote a read head that can, and the brake constant we recomputed from the code gives the rate the source promises. It loses marks where a DJ would look (one deck, no sync, no BPM or key detection) and on the stale About paragraph, which is a small fix the studio should make.
As a tab you open to put a hand on a record, it does more than it needs to. As a rig for a set, it is not one; Mixxx is.
On the docket: 16 of 20 checks met. A real turntable model in a tab; one deck, no sync, and an About paragraph the page contradicts.