title: SELECT * FROM JEV theme: jev status: made song: song.js measured: {"date":"2026-09-26","song":"0b447e15f815","total":{"loudnessDbfs":-22.5,"peakDbfs":-2.2},"parts":{"arp":{"loudnessDbfs":-35.3,"peakDbfs":-18},"bass":{"loudnessDbfs":-28.7,"peakDbfs":-20.1},"drums":{"loudnessDbfs":-26.3,"peakDbfs":-2.8},"lead":{"loudnessDbfs":-31.1,"peakDbfs":-10.5},"other":{"loudnessDbfs":-47.6,"peakDbfs":-4},"vocals":{"loudnessDbfs":-31.6,"peakDbfs":-6.8}},"sections":{"1-8":{"total":{"loudnessDbfs":-27.1,"peakDbfs":-5.3},"parts":{"arp":{"loudnessDbfs":-33.1,"peakDbfs":-18.8},"drums":{"loudnessDbfs":-28.4,"peakDbfs":-6}}},"9-16":{"total":{"loudnessDbfs":-22.6,"peakDbfs":-3.5},"parts":{"arp":{"loudnessDbfs":-37.4,"peakDbfs":-22.4},"bass":{"loudnessDbfs":-28.1,"peakDbfs":-21.3},"drums":{"loudnessDbfs":-25.8,"peakDbfs":-4.8},"vocals":{"loudnessDbfs":-29.7,"peakDbfs":-6.8}}},"17-24":{"total":{"loudnessDbfs":-21.3,"peakDbfs":-2.2},"parts":{"arp":{"loudnessDbfs":-36.4,"peakDbfs":-21.6},"bass":{"loudnessDbfs":-28.1,"peakDbfs":-20.1},"drums":{"loudnessDbfs":-25.6,"peakDbfs":-3.9},"lead":{"loudnessDbfs":-28.7,"peakDbfs":-11.5},"vocals":{"loudnessDbfs":-28.4,"peakDbfs":-6.8}}},"25-32":{"total":{"loudnessDbfs":-22.7,"peakDbfs":-3.5},"parts":{"arp":{"loudnessDbfs":-35,"peakDbfs":-20},"bass":{"loudnessDbfs":-28.3,"peakDbfs":-20.1},"drums":{"loudnessDbfs":-26.5,"peakDbfs":-6},"lead":{"loudnessDbfs":-29,"peakDbfs":-11.3},"vocals":{"loudnessDbfs":-182.2,"peakDbfs":-141.4}}},"33-40":{"total":{"loudnessDbfs":-22.4,"peakDbfs":-3.4},"parts":{"arp":{"loudnessDbfs":-37.3,"peakDbfs":-22.8},"bass":{"loudnessDbfs":-28.2,"peakDbfs":-20.1},"drums":{"loudnessDbfs":-26,"peakDbfs":-4.8},"lead":{"loudnessDbfs":-66.3,"peakDbfs":-36.7},"vocals":{"loudnessDbfs":-28.6,"peakDbfs":-6.8}}},"41-48":{"total":{"loudnessDbfs":-21.2,"peakDbfs":-2.3},"parts":{"arp":{"loudnessDbfs":-36.4,"peakDbfs":-21.6},"bass":{"loudnessDbfs":-28,"peakDbfs":-20.1},"drums":{"loudnessDbfs":-25.4,"peakDbfs":-2.8},"lead":{"loudnessDbfs":-28.7,"peakDbfs":-11.7},"vocals":{"loudnessDbfs":-28.5,"peakDbfs":-6.8}}},"49-56":{"total":{"loudnessDbfs":-22.3,"peakDbfs":-2.9},"parts":{"arp":{"loudnessDbfs":-34.4,"peakDbfs":-19.5},"bass":{"loudnessDbfs":-28.1,"peakDbfs":-21.6},"drums":{"loudnessDbfs":-25.9,"peakDbfs":-6},"lead":{"loudnessDbfs":-28.7,"peakDbfs":-11.1}}},"57-64":{"total":{"loudnessDbfs":-23.8,"peakDbfs":-3.6},"parts":{"arp":{"loudnessDbfs":-33.7,"peakDbfs":-18},"bass":{"loudnessDbfs":-29.2,"peakDbfs":-21.6},"drums":{"loudnessDbfs":-27.9,"peakDbfs":-6},"lead":{"loudnessDbfs":-31.8,"peakDbfs":-10.5},"other":{"loudnessDbfs":-38.6,"peakDbfs":-4}}}}} critic: date: 2026-09-26 model: jev-1.13.0 method: rubric-1 art: 0.65 artRuns: [0.64, 0.65, 0.66] criteria: hook: 2.9 development: 3.4 structure: 3.2 concept: 3.7 originality: 3.5 craft: 2.8 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: "Slow synthwave at 90 bpm for postjevsql. A vocoder sings SQL: "select star from jev", "where vibes are true". The hook is Obi-Wan's "Hello there", answered by "General Kenobi". Gated reverb snare, arpeggios, a big 80s chorus. Vocals only in the verse and chorus." revisions:
- rev: 1 date: 2026-09-24 model: claude-opus-5-5 harness: claude-code prompt: "Slow synthwave at 90 bpm for postjevsql. A vocoder sings SQL: "select star from jev", "where vibes are true". The hook is Obi-Wan's "Hello there", answered by "General Kenobi". Gated reverb snare, arpeggios, a big 80s chorus. Vocals only in the verse and chorus." output: null # overwritten by rev 2 art: 0.55 artRuns: [0.55, 0.54, 0.55]
- rev: 2 date: 2026-09-24 model: claude-opus-5-5 harness: claude-code prompt: "Let Jev arrange the song as it plays. Split it into named parts and name each 8-bar section with the sections allowed to follow it; at each section Jev picks the next section, the move to play it with (as written, no drums, stripped to arps, drums and vocals, no arpeggio), and how intense it is, and ends the song by choosing the outro, with a hard cap of 16 sections. Keep the key change vocal-free. 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.63, 0.64, 0.63]
- rev: 3 date: 2026-09-25 model: claude-opus-5-5 harness: claude-code prompt: "Fix the mix and make the song do what it says. Stop the clipping: peaks at or under -1 dBFS, the kick under the vocals, the saw lead about 6 dB under the drums in the instrumentals and the arpeggio about 10 dB under. Make the chorus a big 80s chorus: a clap on 2 and 4, sixteenth hats, the arpeggio's filter opened, a real crash and the lead at full. Gate the snare for real: a flat reverb tail cut dead at about 250 ms. Make "Jev" heard as Jev, not "GIF". Keep the vocals to the verses and choruses, as the brief says, and make the "Hello there" / "General Kenobi" hook always play in a chorus. Filter the intro's arpeggio open over four bars. Keep a pulse through the outro and end on G# minor, not F# major. Roll the toms into the choruses and the key change wherever the path goes, never twice and never under a plain cut, and judge each transition on the section it enters. Tell Jev only what the music does: the energy steps, where the vocals are sung, which bars are up a tone, and a riser that swells." output: null # overwritten by rev 4 art: 0.63 artRuns: [0.64, 0.63, 0.63]
- rev: 4 date: 2026-09-26 model: claude-opus-5-5 harness: claude-code prompt: "Keep Jev from looping the key change: keyUp plays at most twice, so it lasts 16 bars at most before the outro, where it could run for 80." output: song.js art: 0.65 artRuns: [0.64, 0.65, 0.66]
SELECT * FROM JEV — spec
song.js is generated from this spec. Change the spec first, then the song.
Intent
Jev inside SQL — the user's own ~/postjevsql design and its neighbours.
Facts:
- postjevsql (
~/brains/personal/technology/artificial-intelligence/jev/postjevsql.md): a pgrx extension putting Jev behind a CustomScan node with a warm connection pool and a durable answer cache; Choice questions over more than 255 options use a label tree (255 is Jev's per-question option cap). - jevql (
ecosystem/jevql.md):WHERE jev(alias, 'condition')in vanilla PostgreSQL queries. - sqlite-jev (
ecosystem/sqlite-jev.md):jev_rows()batches up to 40 rows per call. - jev-orderby-bench: ORDER BY over a Jev probability passes on topic membership, fails four of six on graded product relevance, and 40-row batching fails the ranking gate that one row per request passes.
Style
- Synthwave, 90 bpm, F# minor: F#m – D – A – E, two bars per chord, so each vocoded line sits on one chord (the harmony cycles every 8 bars).
- Gated-reverb snare on 2 and 4. The gate is a flat tail cut dead at about
250 ms, not a room dying away: the snare (
sn:3) goes through a custom impulse response (samples/ssgate/, 250 ms of flat noise with a 5 ms fade at its end,.ir('ssgate')), and a high-passed noise burst holds for the same 250 ms and then cuts. Dirt-samples has no LinnDrum kit, solinnhatsare the hats and 808 toms the fills. The toms and the final snare use the same gate. - The crash is a real one,
hh27:1: dirt-samples'cris a ride. - Sixteenth-note arpeggios, a pulsing eighth-note bass, a bright saw lead in the choruses and instrumentals; no pad — the chords are arpeggiated.
Structure
64 bars (~2:51).
| Bars | Section | Contents |
|---|---|---|
| 1–8 | Intro | Arp alone for 4 bars, its low-pass opening a step a bar (700 → 1000 → 1400 → 1800 Hz, then 2.2 kHz); drums from bar 5 |
| 9–16 | Verse 1 | Vocoder lines 1–4 |
| 17–24 | Chorus | Vocoder "Select star from Jev" (17), "Where vibes are true" (19); the hook, "Hello there" (21) answered by "General Kenobi" (22); "Where vibes are true" again on E (23); the saw lead and the chorus lift (below) under it |
| 25–32 | Instrumental | Saw lead up front |
| 33–40 | Verse 2 | Vocoder lines 5–8 |
| 41–48 | Chorus | As before |
| 49–60 | Instrumental | Key change up a tone (G#m – E – B – F#); no vocals, so no line is stranded on a shifted chord |
| 61–64 | Outro | Arp in the new key, fading; the kick and bass pulse on through bar 63 under a low-pass closing bar by bar; bars 63–64 are G#m, so the song resolves on its tonic instead of stopping on F# (bVII); final gated snare and crash on 64 |
The chorus lift. What makes the chorus bigger than the verse, all of it
masked to the choruses: a clap (cp) on 2 and 4 doubling the gated snare,
sixteenth hats instead of eighths, the arp's low-pass opened from 2.2 to
3.6 kHz, a crash on its first bar, and the saw lead at its instrumental
level.
Mix
Measured as written with tools/measure (measured: above); set by
measurement, not by the numbers in the code.
- The master peaks at or under −1 dBFS; nothing clips. The whole song is
scaled by one
postgainat the end to get there. - The kick sits under the vocals.
- In the instrumentals the saw lead is level with the chorus vocals and a few dB under the drums; in the choruses it plays at that level too. (The brief for this mix asked for about 6 dB under the drums as well as at or above the chorus vocals; with the kick brought down under the vocals the two cannot both hold, and level with the vocals is the one a listener hears as the lead being up front. As measured on 2026-09-25: the lead −28.5 and the drums −25.9 dBFS in the instrumental, the vocals −28.5 in the chorus.)
- The arp is about 8–10 dB under the drums, louder in the intro and outro, where it carries the song.
- The final hit (snare, crash, noise tail) is left out of the energy scaling, and sits under the loudest chorus.
Vocals
- Vocoder, one line per 2 bars:
- "Select star from Jev" — F#m
- "Where vibes are true" — D
- "Custom scan" — A
- "Warm pool, cached answers" — E
- "Order by probability" — F#m
- "Forty rows a batch" — D
- "Two hundred fifty-five options" — A
- "Then a label tree" — E
- Vocoder chorus: "Select star from Jev" (F#m), "Where vibes are true" (D), then "Where vibes are true" again on E — a separate render, since each line is sung on the chord it lands on.
- "Select star from Jev" must transcribe as Jev (or Jeff) with whisper
small.enandmedium.en: the first render read "GIF" on both. It is spoken as "Jehv" with some of the dry voice mixed under the vocoder. - The hook, in each chorus: Obi-Wan's "Hello there", answered by General Grievous's "General Kenobi".
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.djJevasks, once that is decided, how much of each part plays this section (the arpeggio, the saw lead, the bass, the drums, vocals: each out, back or full, a score), 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 8 bars (.every(8, …)), and the answers are
composed in ordinary Strudel at the bottom: walk holds the form's rules,
each part plays at its level (part(name, pat)), the transition plays
over the last bar before each section, and energy.score scales the
velocity.
The form. Sections are 8-bar windows of the song as written, so
outro holds the last 4 bars of the key-change instrumental and the 4-bar
outro. A section may be followed only by these:
| Section | Bars as written | May be followed by | Plays at most |
|---|---|---|---|
intro | 1–8 | verse1 | |
verse1 | 9–16 | chorus1 | |
chorus1 | 17–24 | instrumental, verse2 | |
instrumental | 25–32 | verse2, chorus1 | |
verse2 | 33–40 | chorus2 | |
chorus2 | 41–48 | keyUp, instrumental | |
keyUp | 49–56 | outro, keyUp | twice |
outro | 57–64 | (the end) |
Loops end. Uncapped, the ways back let Jev repeat the key change until the cap: up to 80 bars of it in a row. So keyUp, which may follow itself, 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 the key change any path can now take is 16 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 key change is one way: once the song is up a tone it can only repeat
the key-change instrumental or end, so no vocoder line (rendered in F#
minor) ever sings against the shifted band. 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 final gated snare
always lands; at 16 sections the outro is forced.
The parts. Each question says what the part is and where it plays as
written, so Jev can drop parts to build tension or make space, pull them
back to let others speak, and bring them in full for the payoff. A part
that is out is silent for the whole section; otherwise its velocity is
scaled by its level (back is about half, full is as written), and it
keeps its own masks, so vocals still appear only in the verses and
choruses. Each part plays on its own orbit, named for its
question (.orbit('drums'), …), so the browser's meter hears each part
alone. The last gated snare, crash and noise tail always land. When Jev can't be reached, every part plays in full.
The "Hello there" / "General Kenobi" exchange is the hook and always plays in a chorus: it is not part of the vocals Jev levels (it plays on the vocals' orbit, but at its own level), so a chorus with the vocals out still has it. The SQL lines are Jev's to arrange.
Into the next section. Over the last bar of each section, the into
answer for the section being entered plays. Each transition is judged on
that section alone: the moves before it are no reason to repeat or avoid
one.
- as written: the song's own 808 toms roll down across the second half of the bar when the section being entered is chorus 1, chorus 2 or the key change, wherever the path goes (not at fixed bar numbers); into any other section, nothing.
- fill: the same tom roll, into any section.
- riser: white noise, one sustained note across the whole bar, its level and its high-pass both rising (400 Hz to about 8 kHz), so it swells.
- dropout: every part stops for the last beat.
The toms are written once, only here, so a roll is never doubled or cut in half, and nothing plays under a plain cut into a verse. The form's ending has no next section, so nothing plays over its last bar and its last beat is never cut. When Jev can't be reached, it plays as written.
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 that scales every part's velocity together, on top of each part's level, so the mix keeps its balance: held back 0.55, steady 0.70, driving 0.85, all out 1.0 (as written).
- Bars 1–7 always play as written; bar 8 carries the move into verse 1.
- Each request carries the song's state (subject, tempo, key, chords, lyrics), every answer so far, how loud each finished section measured in the browser, where the song is in the form and the sections left before the cap, and the listener's 🔥/😴 reactions.
- 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 in the verse and chorus; the intro, instrumentals and outro 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. Everything lands insamples/<sound>/with a provenance row insamples/README.md. - Samples load from
samples('jev-samples/strudel.json'); drums fromgithub:tidalcycles/dirt-samples.