title: FORTY-FIVE PERCENT theme: jev status: made song: song.js measured: {"date":"2026-09-26","song":"8369b5c95fe7","total":{"loudnessDbfs":-22.7,"peakDbfs":-2.4},"parts":{"bass":{"loudnessDbfs":-28.4,"peakDbfs":-12.7},"drums":{"loudnessDbfs":-28.7,"peakDbfs":-9.4},"keys":{"loudnessDbfs":-30.9,"peakDbfs":-14.5},"loop":{"loudnessDbfs":-32.1,"peakDbfs":-11.7},"other":{"loudnessDbfs":-38.4,"peakDbfs":-3.7},"vocals":{"loudnessDbfs":-28.8,"peakDbfs":-3.8}},"sections":{"1-4":{"total":{"loudnessDbfs":-28,"peakDbfs":-12.5},"parts":{"keys":{"loudnessDbfs":-30.6,"peakDbfs":-14.5},"loop":{"loudnessDbfs":-31.2,"peakDbfs":-12.5}}},"5-8":{"total":{"loudnessDbfs":-20.3,"peakDbfs":-2.8},"parts":{"bass":{"loudnessDbfs":-27.4,"peakDbfs":-12.7},"drums":{"loudnessDbfs":-27.6,"peakDbfs":-9.4},"keys":{"loudnessDbfs":-30,"peakDbfs":-14.6},"loop":{"loudnessDbfs":-34.4,"peakDbfs":-15.9},"vocals":{"loudnessDbfs":-23,"peakDbfs":-3.8}}},"9-12":{"total":{"loudnessDbfs":-20.8,"peakDbfs":-3.3},"parts":{"bass":{"loudnessDbfs":-27.3,"peakDbfs":-12.8},"drums":{"loudnessDbfs":-27.7,"peakDbfs":-9.4},"keys":{"loudnessDbfs":-30.3,"peakDbfs":-14.5},"loop":{"loudnessDbfs":-34.4,"peakDbfs":-15.9},"vocals":{"loudnessDbfs":-24.4,"peakDbfs":-4.2}}},"13-16":{"total":{"loudnessDbfs":-23.1,"peakDbfs":-5.9},"parts":{"bass":{"loudnessDbfs":-27.4,"peakDbfs":-12.7},"drums":{"loudnessDbfs":-27.7,"peakDbfs":-9.4},"keys":{"loudnessDbfs":-30.1,"peakDbfs":-14.6},"loop":{"loudnessDbfs":-30.3,"peakDbfs":-12.5},"vocals":{"loudnessDbfs":-133.2,"peakDbfs":-105.5}}},"17-20":{"total":{"loudnessDbfs":-22.9,"peakDbfs":-6.2},"parts":{"bass":{"loudnessDbfs":-27.3,"peakDbfs":-12.8},"drums":{"loudnessDbfs":-27.7,"peakDbfs":-9.4},"keys":{"loudnessDbfs":-30.3,"peakDbfs":-14.5},"loop":{"loudnessDbfs":-30.1,"peakDbfs":-12.5},"vocals":{"loudnessDbfs":null,"peakDbfs":null}}},"21-24":{"total":{"loudnessDbfs":-20.7,"peakDbfs":-3.2},"parts":{"bass":{"loudnessDbfs":-27.4,"peakDbfs":-12.7},"drums":{"loudnessDbfs":-27.7,"peakDbfs":-9.4},"keys":{"loudnessDbfs":-30.1,"peakDbfs":-14.6},"loop":{"loudnessDbfs":-34.4,"peakDbfs":-15.9},"vocals":{"loudnessDbfs":-23.5,"peakDbfs":-4.3}}},"25-28":{"total":{"loudnessDbfs":-21.2,"peakDbfs":-2.4},"parts":{"bass":{"loudnessDbfs":-27.3,"peakDbfs":-12.8},"drums":{"loudnessDbfs":-27.6,"peakDbfs":-9.4},"keys":{"loudnessDbfs":-30.2,"peakDbfs":-14.5},"loop":{"loudnessDbfs":-34.4,"peakDbfs":-15.9},"vocals":{"loudnessDbfs":-25.2,"peakDbfs":-4}}},"29-32":{"total":{"loudnessDbfs":-22.7,"peakDbfs":-5.8},"parts":{"bass":{"loudnessDbfs":-27,"peakDbfs":-12.7},"drums":{"loudnessDbfs":-27.4,"peakDbfs":-9.5},"keys":{"loudnessDbfs":-30.1,"peakDbfs":-14.6},"loop":{"loudnessDbfs":-29.6,"peakDbfs":-11.7},"vocals":{"loudnessDbfs":-170.1,"peakDbfs":-136.8}}},"33-36":{"total":{"loudnessDbfs":-22.6,"peakDbfs":-6.2},"parts":{"bass":{"loudnessDbfs":-27,"peakDbfs":-12.8},"drums":{"loudnessDbfs":-27.3,"peakDbfs":-9.5},"keys":{"loudnessDbfs":-30.3,"peakDbfs":-14.5},"loop":{"loudnessDbfs":-29.4,"peakDbfs":-11.7}}},"37-40":{"total":{"loudnessDbfs":-22.7,"peakDbfs":-5.8},"parts":{"bass":{"loudnessDbfs":-26.9,"peakDbfs":-12.7},"drums":{"loudnessDbfs":-27.4,"peakDbfs":-9.5},"keys":{"loudnessDbfs":-30.1,"peakDbfs":-14.6},"loop":{"loudnessDbfs":-29.5,"peakDbfs":-11.7}}},"41-44":{"total":{"loudnessDbfs":-26.6,"peakDbfs":-8.6},"parts":{"bass":{"loudnessDbfs":-30.5,"peakDbfs":-15},"drums":{"loudnessDbfs":-31,"peakDbfs":-10.9},"keys":{"loudnessDbfs":-33.6,"peakDbfs":-17.2},"loop":{"loudnessDbfs":-36.6,"peakDbfs":-16.2}}},"45-48":{"total":{"loudnessDbfs":-27.3,"peakDbfs":-3.7},"parts":{"bass":{"loudnessDbfs":-53,"peakDbfs":-27.5},"drums":{"loudnessDbfs":null,"peakDbfs":null},"keys":{"loudnessDbfs":-41.3,"peakDbfs":-22.5},"loop":{"loudnessDbfs":-70.3,"peakDbfs":-29.3},"other":{"loudnessDbfs":-27.5,"peakDbfs":-3.7}}}}} critic: date: 2026-09-26 model: jev-1.13.0 method: rubric-1 art: 0.59 artRuns: [0.59, 0.6, 0.59] criteria: hook: 2.2 development: 3.1 structure: 3 concept: 3.7 originality: 3.3 craft: 2.5 ideas:
- date: 2026-09-24 model: claude-opus-5-5 harness: claude-code prompt: "Research Jev's real use cases; jab at people using Jev where deterministic code would do better, such as game bots." brief: "Lo-fi hip hop about the stock-picking bot. Chopped "Stonks" and the Wolf of Wall Street chest-thump hum as a percussion loop. Vocoder lyrics: "better than a coin, worse than an index fund", "don't trust the word probability" (the bot's own author says this). Tape wobble, vinyl crackle, and it fades out on "This is fine"." revisions:
- rev: 1 date: 2026-09-24 model: claude-opus-5-5 harness: claude-code prompt: "Lo-fi hip hop about the stock-picking bot. Chopped "Stonks" and the Wolf of Wall Street chest-thump hum as a percussion loop. Vocoder lyrics: "better than a coin, worse than an index fund", "don't trust the word probability" (the bot's own author says this). Tape wobble, vinyl crackle, and it fades out on "This is fine"." output: null # overwritten by rev 2 art: 0.55 artRuns: [0.55, 0.55, 0.56]
- rev: 2 date: 2026-09-24 model: claude-opus-5-5 harness: claude-code prompt: "Let Jev arrange the song as it plays. Name each 4-bar section and the sections allowed to follow it; at each section Jev picks the next section, the move to play it with (as written, no drums, keys and vocals, the beat tape), and how intense it is, and ends the song by choosing the outro, whose fade and "This is fine" always close it, with a hard cap of 16 sections. Tell Jev the tempo, key, chords, lyrics and everything played so far, and how the listener reacted. Without Jev it plays as written." output: null # overwritten by rev 3 art: 0.6 artRuns: [0.6, 0.6, 0.6]
- rev: 3 date: 2026-09-24 model: claude-opus-5-5 harness: claude-code prompt: "Instead of one move for the whole section, let Jev set a level for each part (the keys, the hum loop, the drums, the bass and the vocals: out, back or full) and choose how the song moves into each section: a cut, a swung boom-bap fill, a crackle riser or a one-beat dropout, played over the last bar of the section before it and faded with it." output: null # overwritten by rev 4 art: null # not scored: the song.js before rev 4 was recorded is rev 2's, not rev 3's
- rev: 4 date: 2026-09-25 model: claude-opus-5-5 harness: claude-code prompt: "Make the lyrics understandable: each line dry, its echo a throw that lands after the line ends. Sing every line on every path: verse 2 always comes before the outro. Make the coin line true: a new line, "Up, flat, or down", sung before it, so the listener hears a three-way guess. In the verses Jev sets the vocals back or full, never out, and is not asked about them elsewhere. Make the chopped Stonks and the chest-thump hum a real percussion loop: the hum's thumps on the grid and in tune, Stonks chopped into stutters inside it, the whole word once per section. Stop the mix clipping: as written is the fallback energy, and up front peaks under -1 dBFS. The bed fades only to about -12 dB, the crackle stays, and the song stops about a beat after "This is fine". One swing for the whole band, 16ths swung by a third. An audible bass locked to the kick. The fuller beat adds an open hat on the and of 4, a two-bar kick variation and the bass up to the fifth. The tape wobble a slow vibrato on the keys and bass. Stonks never in a section's last bar. A fill replaces the drums for its bar, at their level." output: null # overwritten by rev 5 art: 0.59 artRuns: [0.59, 0.59, 0.59]
- rev: 5 date: 2026-09-26 model: claude-opus-5-5 harness: claude-code prompt: "Drop the detour from the fuller beat's last section back to the beat, which could never end within the cap." output: song.js art: 0.59 artRuns: [0.59, 0.6, 0.59]
FORTY-FIVE PERCENT — spec
song.js is generated from this spec. Change the spec first, then the song.
Intent
A gentle roast of using Jev as a stock predictor. Facts (~/brains/personal/technology/artificial-intelligence/jev/ecosystem/jev-stock-hk.md):
a 3-class (up / flat / down) next-day backtest over 120 cases across four
Hong Kong stocks scored 45.0% against a 33% random baseline. The author's own
conclusion: Jev is "a disciplined reasoning layer", not "a proven quantitative
trading model", and they distrust the word "probability" in its output.
"Worse than an index fund" is the joke's claim, not a measurement; the lyric stays because it is framed as a jab.
A correction to the brief: "better than a coin". A coin guesses a two-way question and scores 50%, so heard alone, 45% "better than a coin" sounds false. The backtest's question has three outcomes, and on a three-way question a blind guess scores 33%, so 45% does beat chance, though it is below a coin's 50%. The lyric is the user's and stays; the verse makes the frame audible instead, with "Up, flat, or down" sung before the coin line. It replaces "One hundred twenty cases", which was ours, not the brief's.
Style
- Lo-fi hip hop, 80 bpm, in D dorian (C major) with diatonic 7ths: Dm7 – Cmaj7 – Fmaj7 – Em7 from bar 1, two bars per chord, so each vocoded line sits on one chord.
- The intro plays Dm7 – Cmaj7 as a turnaround, and both verses (bars 5 and 21) open on Fmaj7.
- Dusty boom-bap drums; Rhodes-like chords (short, not a pad); vinyl crackle as sparse high-passed noise.
- One swing for the whole band: 16ths swung by a third, on the kick, snare, hats, keys, bass, hum loop and the fill alike, so nothing sits off the hats. The 8th hats of the verses are written as 16ths with the off-16ths silent, so they swing on the same grid.
- Tape wobble is a slow vibrato, about 0.7 Hz and ±10 cents, on the keys and the bass together, so the whole bed wows as one.
- Bass: round and audible, a filtered sawtooth that locks to the kick (the downbeat, the 16th before beat 3, and the "and" of 3), root, root and the 5th on the last hit; it sits within 6 dB of the drums.
- The percussion loop is the Wolf of Wall Street chest-thump hum's thumps, cut on their transients and placed on the 8th grid, each tuned to a note of the key (A, E, D), about 4 dB under the snare in the beat sections (lower in the verses, under the vocals), with "Stonks" chopped into stutters inside it in the beat sections. The dirt kit supports the loop and does not replace it. The whole word "Stonks" plays once per beat section, as the payoff.
- Level. Nothing in the browser limits the master, so the mix is set by its peaks: up front (the loudest energy) peaks at or under −1 dBFS, measured on a capture of the output.
Structure
48 bars (~2:24) as written; the ending is a fade.
| Bars | Section | Contents |
|---|---|---|
| 1–4 | Intro | Crackle, chords, the hum loop |
| 5–12 | Verse 1 | Boom-bap and bass enter; vocoder lines 1–4 |
| 13–20 | Beat | Instrumental; "Stonks" chopped into stutters in each section's first two bars, the whole word on the last 8th of its third |
| 21–28 | Verse 2 | Vocoder lines 5–8 |
| 29–40 | Beat, fuller | Beat adds 16th hats, an open hat on the "and" of 4, a two-bar kick variation (a pickup kick in every second bar), and the bass up to the 5th on the "and" of 4; "Stonks" as in the beat |
| 41–48 | Outro | Snare out at 43, kick out at 45; the bed fades over 41–47 to about −12 dB and never to nothing; the crackle stays unfaded; "This is fine" on bar 47, and the song stops about one beat after it |
"Stonks" never plays in a section's last bar: that bar belongs to the transition into the next section.
Vocals
- Vocoder, one line per 2 bars, each rendered on the chord it lands on:
- "Forty-five percent" — Fmaj7
- "Up, flat, or down" — Em7, a beat after the bar: on the bar its "Up" was lost under the downbeat's kick and chord, and an 8th late its "flat" was lost under the beat-2 snare
- "Better than a coin" — Dm7
- "Worse than an index fund" — Cmaj7
- "A disciplined reasoning layer" — Fmaj7
- "Not a trading model" — Em7
- "Don't trust the word" — Dm7
- "Probability" — Cmaj7
- Each line is dry on the word; its echo is a quiet copy of the line (about
−13 dB, band-limited) a dotted half note (2.25 s) after it starts, so it
lands after the line ends: the longest line is 2.0 s. The echo is written
out as a second, later copy, not superdough's
delay, whose delay line tops out at one second: asked for 1.5 s it plays at 1 s, on top of the line's end, and "index fund" and "trading model" transcribed wrong under it. - The lines are all at −17.3 LUFS with their peaks limited to −4.5 dBFS, so they sit up front without the mix clipping.
- Memes: "Stonks"; the Wolf of Wall Street chest-thump hum (its thumps, cut and tuned into a one-bar loop); "This is fine" (the dog, after its crickets).
Jev in the booth
Jev arranges the song as it plays, as two jevs declared at the top in
TypeSafe's own shape (jev({ state, questions }), website/src/jev/), both
given the song as state (subject, tempo, key, chords, lyrics):
formJevasks one choice: which section plays next, among the song's twelve 4-bar sections.djJevasks, once that is decided, a level for each instrumental part (keys, hum loop, drums, bass: out, back or full in this section), how far forward the vocals sit in a verse, how the song moves into it, and a score for the section's energy. Questions in one request cannot see each other's answers, so it is a second request, told the section just chosen (after: { section }).
In rev 3 the single "move" for the whole section (as written, no drums, keys and vocals, the beat tape) became a level for each part, so Jev shapes the mix one part at a time.
Both are asked every 4 bars (.every(4, …)), and the answers are composed
in ordinary Strudel at the bottom: walk holds the form's rules, each
part plays at its level, the transition plays over the last bar before the
section, and energy.score sets the postgain.
The form. A section may be followed only by these:
| Section | Bars as written | May be followed by |
|---|---|---|
intro | 1–4 | verse1 |
verse1 | 5–8 | verse1b |
verse1b | 9–12 | beat |
beat | 13–16 | beatB |
beatB | 17–20 | verse2, verse1 |
verse2 | 21–24 | verse2b |
verse2b | 25–28 | beatFull, beat |
beatFull | 29–32 | beatFullB |
beatFullB | 33–36 | beatFullC, verse2, outro |
beatFullC | 37–40 | outro, verse2 |
outro | 41–44 | outroEnd |
outroEnd | 45–48 | (the end) |
The detour from beatFullC back to the beat is gone: beatFullC is the tenth
section at the earliest, and the way on through the beat (the beat, verse 2
and the fuller beat again, then the outro) could never end within the cap of
16 sections, so Jev was never offered it. walk now refuses a way on that
can never be taken.
Every path to the outro passes through verse 2, so every line is sung:
the beat is the only way out of verse 1, and the beat leads only to a
verse. The shortest path is 11 sections (intro, verse 1, the beat,
verse 2, the fuller beat, the outro), under the cap. Sections are 4 bars
because the intro is. A verse's two halves always play together, as do
the beat's, so a line is never cut off mid-verse. These rules are code
(walk), not Jev: each request offers Jev only the sections allowed next.
The written order is always allowed, and it is what plays when Jev can't
be reached. The song ends when Jev picks the outro: its fade and "This is
fine" always close it. At 16 sections (about 3:12) the outro is forced.
The option texts Jev reads describe what plays, not where it belongs in
the arrangement: that is Jev's to decide.
The parts. Each question says what the part is and where it plays as written: the keys (the Rhodes with the vinyl crackle), the hum loop (with the Stonks chops and stab), the boom-bap drums, the bass, and the vocoded vocals.
- The keys, hum loop, drums and bass each get a level: out (silent for the section), back (under the rest of the mix) or full (as written), so Jev can drop parts to build tension, pull them back to make space, and bring them in full for the payoff. The answer is Jev's probability-weighted score: under 0.5 the part is silent, and above it the part plays at its nearest step (half velocity at back, whole at full).
- The vocals are a choice of back or full, offered only when the
next section is a verse; they can never be out, so the words are always
sung. Outside the verses there are no vocals and Jev is not asked
(
allowforces full). Back plays them at 0.65 velocity, full at 1.
A part keeps its own masks, so vocals still appear only in the verses.
Each part plays on its own orbit, named for its question (orbit('keys'),
…), so the meter hears it alone. "This is fine" always plays. When Jev
can't be reached, every part plays in full.
The transitions. Jev also picks how the song moves into each section,
played over the last bar of the section before it, with the next
section's answer (.early(1)): a cut (straight in), a fill (a
kick on the bar's downbeat, then swung snare hits tumbling into the first
beat), a riser (the vinyl
crackle thickening into a swelling hiss), or a dropout (every part
stops for the last beat). A fill replaces the drums for its bar: the
groove's kick, snare and hats stop in that bar, and the fill plays at the
drums' level in the section it plays in (silent when the drums are out).
The riser follows the keys' level the same way. A transition fades with
the section it plays in. Without an answer it is a cut.
A little chance. The section is sampled from Jev's
probabilities at temperature 0.7 (sample), so two plays of the song can
take different paths; the strip shows Jev's top pick beside the one
sampled. A close call between
sections is where sampling matters most, so there is no confidence
threshold: an unsure Jev still picks, and the written order plays only
when Jev can't be reached.
Energy is a four-step ladder: hushed, laid back, as written (the
fallback), and up front (louder than written). The fade and the part
levels multiply velocity, so energy sets postgain instead (0.6, 0.8,
1 and 1.1), which no part sets: the mix and the fade keep their shape. As
written is postgain 1, so the fallback plays the mix as measured; at up
front the song peaks at or under −1 dBFS.
- Bars 1–4 always play as written.
- Each request tells Jev the song's state (subject, tempo, key, chords, lyrics), everything played so far, how loud each finished section measured in the browser, which sections may come next and how many are left before the cap, and the 🔥/😴 reactions from the listener's tab.
- The vocal lines index by absolute cycle, and a section plays its own bars, so a repeated verse sings the same lines.
- This relaxes the constraints below that the song plays once in a fixed order and never varies by chance: the arrangement varies with Jev's choices, which are judgments, with a little sampled chance in the form.
Constraints
- Plays once from bar 1 and ends; never loops. Sections are absolute-cycle masks, so playback starts from stopped.
- Structured: patterns vary by section, never by chance. (Random chopping read as noise on the first song.)
- No sustained background pad; harmony comes from rhythmic parts.
- Vocals only where the structure table puts them; drops are instrumental.
- Meme clips are the real audio (myinstants, or YouTube via yt-dlp), cut at
word timings measured with whisper.cpp. Vocoder lines are made with
speak+vocodeon the chord they land on, and checked by transcribing the result with whisper.cpp. Everything lands insamples/<sound>/with a provenance row insamples/README.md. - Samples load from
samples('jev-samples/strudel.json'); drums fromgithub:tidalcycles/dirt-samples.