Progress · 0.0.7 · 4 October 2026
Booth has gone from writing its first drive to placing cue points from the words a record sings in about five weeks. This page is the honest state of it — including the parts that are written but not demonstrated, which on a page like this are the parts that matter.
.DAT, .EXT and
.2EX — written from one set of measurements.Written is not the same as demonstrated. These are the gaps, stated the way they are stated in the project's own documentation rather than softened for a front page.
| The gap | Where that leaves you |
|---|---|
| Only current players have been seen to open a drive this writes | The two that do — a CDJ-3000X and a CDJ-1500X — are both AlphaTheta's current
generation. A CDJ-3000 on firmware 2.05 refused the legacy export.pdb
outright, and the file parses under two independent parsers, so what is wrong is
something a parser tolerates and a player does not. Everything a nexus deck reads is
written; whether it loads has not been shown. Try a stick on the hardware before
the night. |
| The three-band waveform has not been seen on a player | The colour waveform, beat grid, hot cues and the phrase strip have — the last of those photographed on a CDJ-1500X, drawing the section names and boundaries this program wrote. The three-band waveform sits in a part of the analysis files nobody has reported on. |
| The waveform colours are a judgement call | What rekordbox puts in those three bits for given audio is not published, and this has never been compared against a real export column by column. |
| Key detection is right about 37% of the time | And confuses a key with its relative major or minor about another 18%. It is shown with its confidence for that reason. Treat it as a hint. |
| Cueing from the words costs minutes a track, twice over | A separation and then a recogniser pass, and the recogniser is installed separately. What it hears is whatever Whisper hears: a heavily processed vocal or a chopped-up sample comes back as noise. Since 0.0.7 a lyrics server is asked first, which skips both steps when it answers, and what a track's words came from is recorded and shown. |
| One deck, and no mixing | No pitch, no sync. It is for auditioning what you are preparing, not for performing. |
| Cues and grids are not written back into your files | They live in the collection and on the drive. Names can be written back, on request. |
| Ogg, Opus and WMA are recognised but not converted | Nothing in this build decodes them. Nothing resamples either: a file above 96 kHz is reported and left alone. |
The project's own full list is longer and more technical, and it is the authority. Nothing on this page is meant to be gentler than it.
A lyrics server asked before anything expensive — taken outright where the track was named by its own sound or where the lyric agrees with what was heard, put up for a yes or no where it is plausible and not certain, and editable by hand. A server saying a record is an instrumental saves the separation and the pass that would have ended in “nothing was sung”.
The recogniser's own doubt is recorded and shown when it is poor, its language is taken from what the collection decided on everything read so far rather than guessed from a breath at the top of a stem, and a stem is no longer rendered just to find out whether anybody sings on the track. No database page is ever written with a row cut in half.
A record at one tempo is gridded at one tempo however untidily its beats were tracked, so eight beats from anywhere in it are eight beats from anywhere else — which is what stops two loops from one track drifting apart on two players. Scatter and drift are told apart by their shape rather than their size.
What a track keeps saying is kept and shown: the lines it comes back to, how often each is sung, and where each one lands. Markers carry the whole sung line every time it lands, tested against a CDJ-3000X.
A metronomic track stopped alternating between two wrong tempos every beat. Lyric cues moved onto the stem rather than onto Whisper's clock, which anchors its first segment at zero however long the intro runs. A drive is checked against the oldest player it has to work on, and music on a strange stick is copied into the collection by default.
Memory cues named and each return of a line marked. Eleven colour schemes. A second drive can be added and told apart from the first. A drive stopped re-copying itself every five minutes, and a grid that bends is kept with its own downbeat. Tracks that will be slow to reach are called out at import.
Drawn against the track rather than against full scale, as an envelope rather than a comb, with the loudest band first so the kick is visible at all. The phrase strip became correctable by hand, any section of the window can be sent to a window of its own, and switching between a track and its stems keeps your place.
The rename: the engine, the command and the app settled on the names they have now. What a file's own path says it is became a source of names for the records no database has heard of, and tagging asks first when a file is named nothing like its tags.
A copy of every drive written or plugged in, the player's history read back into playlists, the macOS app, the licence, and CI on every push. The point at which it was a program rather than a prototype.
export.pdb, and pulling individual rows back out of that is
a parser this does not have yet.Issues and pull requests are on GitHub. The most useful thing anybody can send is a report from a player this has not been tried on — which deck, which firmware, and what it did with the stick.