SPEC.mdpreviewSPEC.mdsource267 lines · 21.0 KB · raw

title: MINIMAX WAS RIGHT THERE theme: jev status: made song: song.js measured: {"date":"2026-09-26","song":"7cbff5c831e1","total":{"loudnessDbfs":-21.1,"peakDbfs":-2.3},"parts":{"arps":{"loudnessDbfs":-37.6,"peakDbfs":-23.3},"bass":{"loudnessDbfs":-29.6,"peakDbfs":-11.7},"drums":{"loudnessDbfs":-23.8,"peakDbfs":-3.2},"lead":{"loudnessDbfs":-32.7,"peakDbfs":-14.5},"other":{"loudnessDbfs":-40.6,"peakDbfs":-3.5},"pong":{"loudnessDbfs":-41.3,"peakDbfs":-19.6},"vocals":{"loudnessDbfs":-28.1,"peakDbfs":-5.9}},"sections":{"1-4":{"total":{"loudnessDbfs":-36.7,"peakDbfs":-27.2},"parts":{"arps":{"loudnessDbfs":-36.7,"peakDbfs":-27.2}}},"5-8":{"total":{"loudnessDbfs":-36.2,"peakDbfs":-21.4},"parts":{"arps":{"loudnessDbfs":-36.5,"peakDbfs":-27.2},"pong":{"loudnessDbfs":-47.1,"peakDbfs":-27}}},"9-12":{"total":{"loudnessDbfs":-21.1,"peakDbfs":-4.7},"parts":{"arps":{"loudnessDbfs":-41,"peakDbfs":-27.3},"bass":{"loudnessDbfs":-32.7,"peakDbfs":-22.5},"drums":{"loudnessDbfs":-25.8,"peakDbfs":-10.1},"pong":{"loudnessDbfs":null,"peakDbfs":null},"vocals":{"loudnessDbfs":-23.3,"peakDbfs":-8.3}}},"13-16":{"total":{"loudnessDbfs":-21.3,"peakDbfs":-3.8},"parts":{"arps":{"loudnessDbfs":-41.3,"peakDbfs":-31.9},"bass":{"loudnessDbfs":-32.4,"peakDbfs":-22.5},"drums":{"loudnessDbfs":-25.6,"peakDbfs":-10.1},"pong":{"loudnessDbfs":null,"peakDbfs":null},"vocals":{"loudnessDbfs":-23.9,"peakDbfs":-8.2}}},"17-20":{"total":{"loudnessDbfs":-23.9,"peakDbfs":-5.9},"parts":{"arps":{"loudnessDbfs":-57.7,"peakDbfs":-32.9},"bass":{"loudnessDbfs":null,"peakDbfs":null},"drums":{"loudnessDbfs":-67.5,"peakDbfs":-39.1},"pong":{"loudnessDbfs":-34.1,"peakDbfs":-19.6},"vocals":{"loudnessDbfs":-24.3,"peakDbfs":-5.9}}},"21-24":{"total":{"loudnessDbfs":-19.7,"peakDbfs":-3.9},"parts":{"arps":{"loudnessDbfs":-38.9,"peakDbfs":-28.8},"bass":{"loudnessDbfs":-27.3,"peakDbfs":-12.8},"drums":{"loudnessDbfs":-21.5,"peakDbfs":-5.8},"lead":{"loudnessDbfs":-29.8,"peakDbfs":-16.4},"pong":{"loudnessDbfs":-43.9,"peakDbfs":-23.7},"vocals":{"loudnessDbfs":-47.4,"peakDbfs":-25.9}}},"25-28":{"total":{"loudnessDbfs":-19.8,"peakDbfs":-2.8},"parts":{"arps":{"loudnessDbfs":-39,"peakDbfs":-28.8},"bass":{"loudnessDbfs":-27.2,"peakDbfs":-13.7},"drums":{"loudnessDbfs":-21.3,"peakDbfs":-3.2},"lead":{"loudnessDbfs":-29.5,"peakDbfs":-16.4},"pong":{"loudnessDbfs":-43.8,"peakDbfs":-23.8}}},"29-32":{"total":{"loudnessDbfs":-19.4,"peakDbfs":-4},"parts":{"arps":{"loudnessDbfs":-38.4,"peakDbfs":-28.8},"bass":{"loudnessDbfs":-27.1,"peakDbfs":-14.1},"drums":{"loudnessDbfs":-21,"peakDbfs":-3.2},"lead":{"loudnessDbfs":-29,"peakDbfs":-16.4},"pong":{"loudnessDbfs":-42.8,"peakDbfs":-23.7}}},"33-36":{"total":{"loudnessDbfs":-20.7,"peakDbfs":-6},"parts":{"arps":{"loudnessDbfs":-41.1,"peakDbfs":-28.9},"bass":{"loudnessDbfs":-31.7,"peakDbfs":-14.5},"drums":{"loudnessDbfs":-25.3,"peakDbfs":-7.1},"lead":{"loudnessDbfs":-81.4,"peakDbfs":-58.2},"pong":{"loudnessDbfs":null,"peakDbfs":null},"vocals":{"loudnessDbfs":-23,"peakDbfs":-8.3}}},"37-40":{"total":{"loudnessDbfs":-21.8,"peakDbfs":-3.9},"parts":{"arps":{"loudnessDbfs":-41.6,"peakDbfs":-31.9},"bass":{"loudnessDbfs":-32.3,"peakDbfs":-22.5},"drums":{"loudnessDbfs":-25.7,"peakDbfs":-10.1},"lead":{"loudnessDbfs":-414.7,"peakDbfs":-393.1},"pong":{"loudnessDbfs":null,"peakDbfs":null},"vocals":{"loudnessDbfs":-24.8,"peakDbfs":-8.3}}},"41-44":{"total":{"loudnessDbfs":-23.9,"peakDbfs":-6},"parts":{"arps":{"loudnessDbfs":-60.7,"peakDbfs":-34.9},"bass":{"loudnessDbfs":-88.2,"peakDbfs":-48.7},"drums":{"loudnessDbfs":-69.2,"peakDbfs":-41.5},"lead":{"loudnessDbfs":-743.4,"peakDbfs":-722.4},"pong":{"loudnessDbfs":-34.1,"peakDbfs":-19.6},"vocals":{"loudnessDbfs":-24.3,"peakDbfs":-6}}},"45-48":{"total":{"loudnessDbfs":-18.7,"peakDbfs":-3},"parts":{"arps":{"loudnessDbfs":-33.9,"peakDbfs":-23.3},"bass":{"loudnessDbfs":-25.9,"peakDbfs":-14.2},"drums":{"loudnessDbfs":-20.8,"peakDbfs":-3.2},"lead":{"loudnessDbfs":-28.7,"peakDbfs":-15.1},"pong":{"loudnessDbfs":-43.2,"peakDbfs":-23.7},"vocals":{"loudnessDbfs":-48,"peakDbfs":-25.9}}},"49-52":{"total":{"loudnessDbfs":-19,"peakDbfs":-2.3},"parts":{"arps":{"loudnessDbfs":-34,"peakDbfs":-23.4},"bass":{"loudnessDbfs":-26.6,"peakDbfs":-13.5},"drums":{"loudnessDbfs":-20.9,"peakDbfs":-3.3},"lead":{"loudnessDbfs":-28.4,"peakDbfs":-14.5},"pong":{"loudnessDbfs":-42.7,"peakDbfs":-23.7}}},"53-56":{"total":{"loudnessDbfs":-19.5,"peakDbfs":-3.7},"parts":{"arps":{"loudnessDbfs":-34.4,"peakDbfs":-23.3},"bass":{"loudnessDbfs":-27.7,"peakDbfs":-13.5},"drums":{"loudnessDbfs":-21.4,"peakDbfs":-6.2},"lead":{"loudnessDbfs":-28.9,"peakDbfs":-15},"pong":{"loudnessDbfs":-43.5,"peakDbfs":-23.7}}},"57-60":{"total":{"loudnessDbfs":-19.5,"peakDbfs":-2.3},"parts":{"arps":{"loudnessDbfs":-34.6,"peakDbfs":-23.3},"bass":{"loudnessDbfs":-26.4,"peakDbfs":-11.7},"drums":{"loudnessDbfs":-21.2,"peakDbfs":-3.2},"lead":{"loudnessDbfs":-30,"peakDbfs":-14.5},"pong":{"loudnessDbfs":-42.4,"peakDbfs":-23.8}}},"61-64":{"total":{"loudnessDbfs":-27.4,"peakDbfs":-3.2},"parts":{"arps":{"loudnessDbfs":-40.9,"peakDbfs":-28.8},"bass":{"loudnessDbfs":-43.1,"peakDbfs":-20.4},"drums":{"loudnessDbfs":-34,"peakDbfs":-12.8},"lead":{"loudnessDbfs":-86.2,"peakDbfs":-62.8},"other":{"loudnessDbfs":-27.7,"peakDbfs":-3.5},"pong":{"loudnessDbfs":null,"peakDbfs":null}}}}} critic: date: 2026-09-26 model: jev-1.13.0 method: rubric-1 art: 0.65 artRuns: [0.66, 0.65, 0.65] criteria: hook: 3.3 development: 3.5 structure: 3.3 concept: 3.8 originality: 3.5 craft: 2.2 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: "Chiptune jungle roasting game bots built on Jev. Hook: the Mario Kart blue-shell sound, then "Oh no no no" as the Jev kart falls off Rainbow Road. Vocoder verses: "you paid by the billion to press right-jump", "tic-tac-toe was solved before you were born", "a PID loop takes the racing line". Before the drop, the Pong beep slows down, one beep per 227 ms decision. Drops instrumental, a proper ending." revisions:
  • rev: 1 date: 2026-09-24 model: claude-opus-5-5 harness: claude-code prompt: "Chiptune jungle roasting game bots built on Jev. Hook: the Mario Kart blue-shell sound, then "Oh no no no" as the Jev kart falls off Rainbow Road. Vocoder verses: "you paid by the billion to press right-jump", "tic-tac-toe was solved before you were born", "a PID loop takes the racing line". Before the drop, the Pong beep slows down, one beep per 227 ms decision. Drops instrumental, a proper ending." output: null # overwritten by rev 2 art: 0.6 artRuns: [0.6, 0.6, 0.6]
  • 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, keeping the 8-bar chord cycle intact; at each section Jev picks the next section, the move to play it with (as written, no drums, the chiptune alone, the breakbeat alone), and how intense it is, and ends the song by choosing the outro and its game-over blip, with a hard cap of 24 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.63 artRuns: [0.64, 0.63, 0.63]
  • rev: 3 date: 2026-09-25 model: claude-opus-5-5 harness: claude-code prompt: "Fix the mix and the hook. Bring the drums under the voices and add a master level so the song peaks under -1 dBFS; give the drops their own riff, a chip lead with Pong answering it, a new amen chop at the break's own groove, a jungle kick that varies every fourth bar and a new reese rhythm, with drop 2 lifting on the lead an octave up in harmony and the reese opening further. Land both drops and the ending on A minor. Make the Pong beeps audibly slow to one per 227 ms under a ducked blue shell, and put the kart fall after "oh no". Make the robot sing "Jev" and "a PID loop" clearly. The blue shell, "oh no", the fall and both title lines always play; verse 2 always plays before drop 2; transitions never cover a sung line or a build's ending." output: null # overwritten by rev 4 art: 0.65 artRuns: [0.65, 0.65, 0.64]
  • rev: 4 date: 2026-09-26 model: claude-opus-5-5 harness: claude-code prompt: "Keep Jev from looping drop 2: each of its loops may go round once more at most (drop2b and drop2c play at most twice), so no run of drop sections passes 24 bars. Drop the detour from drop2d back to drop1, which could never end within the cap." output: song.js art: 0.65 artRuns: [0.66, 0.65, 0.65]

MINIMAX WAS RIGHT THERE — spec

song.js is generated from this spec. Change the spec first, then the song.

Intent

A roast of people who wire Jev into game bots, where deterministic code would do better. Jev is TypeSafe AI's typed-decision model: fast, calibrated Choice / Score / Noul judgments for things like ticket routing, jailbreak monitoring and command gating. The real projects being poked at: fhshaik/typesafe-mario (a Jev agent playing Super Mario Bros. from emulator state), ably-labs/jev-pong (the ball moves one step per model decision; its README measures Jev at 227 ms a decision), and robwent/jev-tic-tac-toe (Jev playing noughts and crosses, every move checked against a perfect minimax solver). All three read on GitHub on 2026-09-25. No Jev Mario Kart bot was found; the Mario Kart jokes are hypothetical.

Style

  • Chiptune jungle, 170 bpm, A minor: Am – F – C – G, two bars per chord, so each vocoded line sits on one chord.
  • Square/pulse leads and arpeggios, triangle bass, Pong-style square blips; bit-crushed amen break under a jungle two-step kick and 2-and-4 snare; a reese bass in the drops.
  • The drops have their own riff and groove, distinct from HEY! LISTEN!'s: the chip lead calls in the first half of each bar and a Pong blip answers it in the second, ping to pong across the stereo field; the amen plays at its own groove (eight slices a bar, each choked by the next) in a chop order of its own that rolls in the fourth bar; the jungle kick varies every fourth bar; the reese has its own rhythm.
  • Structured: patterns vary by section, never by chance.
  • No sustained background pad.
  • Levels. The drums sit under the voices, and a master level (postgain) keeps the measured peak at or under −1 dBFS: superdough has no limiter. The vocoded lines are loudness-normalised alike (−16 LUFS, −2 dBTP) and play at gain 1, so the title line is not the quietest. The crash is hh27:1, a real crash (cr is a ride).

Structure

64 bars (~1:30). Plays once from bar 1 and ends; never loops.

BarsSectionContents
1–8IntroChip arpeggio alone; Pong blips answer it from bar 5
9–16Verse 1Vocoder lines 1–4, one per 2 bars; half-speed beat, triangle bass
17–20Build 1Blue shell warning from bar 17, ducked under Pong blips that slow down across bars 17–18 and arrive at one per 227 ms; the hit on bar 19 at full, its tail cut before "oh no no no"; the fall comes after "oh no", from bar 20, its tail ringing into the last beat
21–32Drop 1Instrumental, landing on Am: jungle kick, crushed amen, reese bass, chip lead answered by Pong; crash on 21
33–40Verse 2Vocoder lines 5–8 over the half-speed beat
41–44Build 2As build 1
45–60Drop 2Instrumental, landing on Am: drop 1 plus 16th hats and a double-time arp; its audible change is the lead an octave up with a third-above harmony, and the reese filter opening further; crash on 45
61–64OutroResolves to Am: drums out except one last hit on 61, a sine A under it; an A minor arp fades; a final low Pong blip on A on 64

Verse 2 starts on bar 33 so it lines up with the 8-bar chord cycle, which is why drop 1 is 12 bars and drop 2 is 16. The drops play the chord cycle four bars on (Am F C G from their first bar), so each lands on the tonic; the builds end on F, so every drop arrives F to Am.

Vocals

Vocals appear only in the verses and builds. Drops, intro and outro are instrumental.

  • Vocoder (speech synthesized, then vocoded onto the song's chords, one line per 2 bars, so the robot sings in key):
    1. "You paid by the billion to press right jump" — Am
    2. "Tic tac toe was solved before you were born" — F
    3. "A PID loop takes the racing line" — C
    4. "Minimax was right there" — G
    5. "Two hundred twenty seven milliseconds a move" — Am
    6. "Jev is for judgment, not for joysticks" — F
    7. "Route the ticket. Gate the sudo." — C
    8. "Minimax was right there" — G
  • Pronunciation. Plain SAPI text says "Jev" well, but the vocoder turns its voiced v into "Jeb" or "Jeff" (whisper small.en and medium.en both, with or without an IPA phoneme; other songs' vocoded "Jev" read the same), and "A P I D" runs together into "APID". So in line 6 the robot says its own name in the plain voice: "Jev is" is rendered from SSML with the IPA phoneme dʒɛv and mixed in dry over the vocoder, which ducks under it, and the chord sings the rest. Line 3 is "a", a pause, then "PID", so the article cannot fuse with the letters. What whisper hears in each is recorded in samples/README.md.
  • Memes (real clips): the Mario Kart Wii blue shell warning and hit; "oh no no no" (the laugh version) as the kart falls; the "fall off cliff" Mario Kart sound.

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):

  • formJev asks one choice: which section plays next, among the song's sixteen 4-bar sections.
  • djJev asks, once that is decided, a level for each part (arpeggio, chip lead, Pong, drums, bass, the vocoded verse lines: out, back or full in this section), 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 }).

The hook always plays: the builds' blue shell, "oh no no no" and the fall, and both "Minimax was right there" lines. The energy and a dropout's gap reach it; no part level does, so Jev cannot silence the title or the gag. Jev's vocals level governs only the other vocoded verse lines.

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 scales the velocity.

The form. A section may be followed only by these:

SectionBars as writtenMay be followed byPlays at most
intro1–4introB
introB5–8verse1
verse19–12verse1b
verse1b13–16build1
build117–20drop1
drop121–24drop1b
drop1b25–28drop1c
drop1c29–32verse2, verse1
verse233–36verse2b
verse2b37–40build2, build1
build241–44drop2
drop245–48drop2b
drop2b49–52drop2ctwice
drop2c53–56drop2d, drop2btwice
drop2d57–60outro, drop2c
outro61–64(the end)

Loops end. Uncapped, the ways back let Jev repeat a drop until the cap: up to 48 bars of it in a row. So drop2b and drop2c, where drop 2's loops return, each play at most twice (times in walk, which counts every play: a loop is a cycle of different sections, and none of them repeats back to back), and each loop goes round once more at most. The longest run of a drop any path can now take is 24 bars. Every detour can still play, the written order is never capped, and a section that has played its most is not offered, nor is one that could only reach the ending through one.

The detour from drop2d back to drop1 is gone: from drop2d, the shortest way on through drop1 (drop 1 again, verse 2, build 2 and drop 2) could never end within the cap of 24 sections, so Jev was never offered it. walk now refuses a way on that can never be taken.

Sections are 4 bars because the builds and the outro are. The chords turn over every 8 bars (Am F | C G), so every section may only be followed by one that starts on the other half of the turn, except where a drop begins or ends: the drops are phased four bars on to land on Am, so a build (Am F) goes into a drop's Am, and drop 1's last section (Am F) into a verse's Am. Builds lead only into their drop, so the blue shell always lands on it. Verse 2 always plays before drop 2: build2 follows only verse2b, and drop 1 goes back to a verse, so the thesis line "Jev is for judgment, not for joysticks" is never skipped and the two builds are never 12 bars apart. 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, whose last hit and game-over blip always close it. The cap is 24 sections (about 2:15), not 16: at 4 bars a section the song as written is already 16.

The parts. Each question says what the part is and where it plays as written: the arpeggio (the square-wave chords, double-time in drop 2), the chip lead (the drops' melody, an octave up in harmony in drop 2), Pong (the intro's answering blips, the drops' answers to the lead, and the builds' blips slowing to one per 227 ms decision), the drums (the verses' half-speed beat, the drops' jungle kick, 808, crushed amen and landing crash), the bass (triangle in the verses, reese and sine sub in the drops), and the vocoded verse lines. Jev sets each one's level: out (silent for the section), back (under the rest of the mix) or full (as written), so it 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's velocity is scaled by the score (half at back, whole at full). Each part plays on its own orbit, named for its question (orbit('arps'), …), so the meter hears it alone. A part keeps its own masks, so the voices appear only where the structure table puts them. The hook and the ending (the last hit and the game-over blip) always play. 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 crushed amen fill, the break chopped into rolls down into the first beat), a riser (a square-wave sweep climbing A minor from A2 to A5, like a power-up), or a dropout (everything stops for the last beat, a gap the last word rings into). The outro keeps its last beat, and without an answer it is a cut. The rules are code (intoAllowed, passed as allow: { into }), so Jev is offered only what fits:

  • A build always ends as written, so only a cut or a dropout into a drop.
  • A fill goes into a verse or a build, never out of a build.
  • A riser goes into a build or a drop, never out of a build.
  • A dropout goes into a drop or the outro.
  • A fill or riser never starts under a sung line: out of a verse it waits for the last half-bar, after the line has ended.
  • A fill replaces the written break (the amen is off in that bar) and follows the drums level; the riser follows the arpeggio's.

The move is sampled from Jev's probabilities at temperature 1.

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, from held back (quieter) to all out. It scales every part's velocity together (0.55 to 1), on top of the part levels, so the mix keeps its balance.

  • 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.
  • A section plays its own bars, so a repeated verse sings the same lines and a repeated build replays the blue shell.
  • 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

  • Samples from samples/ via samples('jev-samples/strudel.json'); drums from github:tidalcycles/dirt-samples; synths are built in.
  • Sections are absolute-cycle masks, so playback must start from stopped.