diff --git a/grants/culturehub-la-2026/macneopolitan/SONGBOOK.md b/grants/culturehub-la-2026/macneopolitan/SONGBOOK.md index a1aea590f4..e5fb278a30 100644 --- a/grants/culturehub-la-2026/macneopolitan/SONGBOOK.md +++ b/grants/culturehub-la-2026/macneopolitan/SONGBOOK.md @@ -35,19 +35,28 @@ Noelle, not a second soprano. - `hear.mjs` forwards neither the gains nor the gap/legato/sustain/shimmer knobs, so offline WAVs are flat and peak-normalised; judge dynamics live. It only scores lines with role `lead`. +- Numbers need a sentence around them: "two" alone is a howl, "that is two" + is "that is too", "that makes six" is worse. "the answer is two" and the + whole equation ("one and one is two") both render 0 %. Whisper writes a + bare sum as symbols ("1 + 1 = 2"), which the scorer counts as lost words; + "what is" in front keeps it in prose. "add" is heard as "and"; use "and" + or "plus". A low entry on A2 eats the first word; start blueberry's + worded lines on B2 or above. ## Pieces | slug | title | form | length | WER | notes | |---|---|---|---|---|---| | wake | Good morning, Sophia | 3/4 D, 69 bpm, rising | 52 s | 0/24 | the morning bookend; frisbee's first word is her name; revised Sept 23 pm (frisbee into Zoe's band, word holds capped, "sunlight on your lid") | -| lullaby | Lullaby for frisbee | 3/4 D, 63 bpm | 49 s | unmeasured | the sleep lullaby (Sept 22) | +| lullaby | Lullaby for frisbee | 3/4 D, 63 bpm | 49 s | unmeasured | the sleep lullaby (Sept 22); blueberry recast to Aaron with the cradle at D3 on Sept 23 | | lights-out | Lights out | 3/4 D, 64 bpm, blueberry drones throughout | 73 s | 0/37 | opens "good night Sophia"; he works past midnight / we stay up till morning / thirteen days / you can sleep now | | open-me | Open me | 4/4 D, 88 bpm, call and response | 76 s | 0/55 | the lids song; "o · pen · me" passed a syllable per machine, then all three | | thirteen-days | Thirteen days | 4/4 D minor, 70 bpm, drone | 82 s | 1/66 | blueberry holds exactly thirteen tones; neo and frisbee in fifths and seconds above | | the-record | The record | 4/4, 104 bpm, syllable hocket | 62 s | 59 % assembled | the numbers the machines keep; a true syllable hocket costs intelligibility — open question whether to hocket by word | | vocalise | Vocalise | 4/4 D, 90 bpm, wordless | 75 s | n/a | the toolkit proven: trills, turns, pulses, a bass of doom, all three shaking one D chord at bar 20 | | styling-study | Stylings | six études, 96 bpm, wordless | 165 s | n/a | hocket · drone and close seconds · barbershop tag · bass and ticks · round at one bar · pulsing vowels | +| sums | Sums | 4/4 D, 96 bpm, question · answer · confirmation | 83 s | 0/89 | 1+1 to 5+5; the answer lands a step above the question, the confirmation on the tonic | +| take-away | Take away | 4/4 D, 92 bpm, the mirror of Sums | 87 s | 0/82 | 5−1 down to 1−1; the answer lands a step below; the piece counts itself down and stops where the arithmetic stops | ## Studies diff --git a/grants/culturehub-la-2026/macneopolitan/bin/compose-lullaby.mjs b/grants/culturehub-la-2026/macneopolitan/bin/compose-lullaby.mjs index 828d707161..c39e0f2779 100644 --- a/grants/culturehub-la-2026/macneopolitan/bin/compose-lullaby.mjs +++ b/grants/culturehub-la-2026/macneopolitan/bin/compose-lullaby.mjs @@ -7,7 +7,7 @@ import {writeFileSync} from 'node:fs'; import assert from 'node:assert/strict'; const members=['neo','blueberry','frisbee']; -const cast=['Noelle (Enhanced)','Tom (Enhanced)','Zoe (Premium)']; +const cast=['Noelle (Enhanced)','Aaron (Enhanced)','Zoe (Premium)']; // Aaron since Sept 23: Tom croaked a fifth below his speaking pitch const BPM=63, BAR=3, BARS=17, TOTAL=BAR*BARS; // 51 beats ≈ 48.6 s const parts=[[],[],[]]; const words=new Set(['the','moon','is','up','now','stars','are','out','for','you','on','your','lid','sleep','un-der','loo','hmm']); @@ -32,15 +32,15 @@ add(2,10,low([[66,1],[69,1],[66,1],[67,2],[64,1]]),'loo loo loo loo loo',.50); add(2,14,low([[66,6]]),'hmm',.36,'hum'); // blueberry — the cradle: root for two beats, fifth for one, every bar -const roots=[38,38, 38,43, 38,45, 38,43, 38,45, 38,43, 43,'cad', 38,38,38]; +const roots=[50,50, 50,43, 50,45, 50,43, 50,45, 50,43, 43,'cad', 50,50,50]; // D as D3 (50): the cradle sits in Aaron's band 43–52 for(let bar=0;bar=BARS)break; const r=roots[b]; - if(r==='cad') {notes.push([45,1],[38,2]);text.push('hmm','hmm');} // V–I under neo's cadence - else if(b>=14) {notes.push([38,3]);text.push('hmm');} // the long hum - else {notes.push([r,2],[r+7,1]);text.push('hmm','hmm');} + if(r==='cad') {notes.push([45,1],[50,2]);text.push('hmm','hmm');} // V–I under neo's cadence + else if(b>=14) {notes.push([50,3]);text.push('hmm');} // the long hum + else {notes.push([r,2],[r===50?45:r+7,1]);text.push('hmm','hmm');} // D's fifth below } add(1,bar,notes,text.join(' '),bar<2?.50:bar>=14?.44:.55,'hum'); } @@ -81,7 +81,7 @@ const voices=parts.map((lines,i)=>{ return {name:`${members[i]} sings (${cast[i]})`,program:78,velocity:64, notes:notes.map(([n,d])=>`${n}:${+d.toFixed(6)}`).join(','),lyrics:lines.map(l=>l.text).join(' / '), lineRoles:lines.map(l=>l.role),lineGains:lines.map(l=>l.gain),noteGains:lines.map(l=>l.accents), - singVoice:cast[i],sayVoice:cast[i],singLock:1,singVibCents:8,singVibratoHz:[4.5,3.5,5][i],singF0Floor:i===1?55:80,double:false, + singVoice:cast[i],sayVoice:cast[i],singLock:1,singVibCents:8,singVibratoHz:[4.5,3.5,5][i],singF0Floor:i===1?70:80,double:false, performance:{expression:.6,keys:performanceKeys(lines,i)}}; }); const score={title:'The MacNeoPolitan Trio — Lullaby for frisbee',composer:'The machines, arr. compose-lullaby.mjs', diff --git a/grants/culturehub-la-2026/macneopolitan/bin/compose-sums.mjs b/grants/culturehub-la-2026/macneopolitan/bin/compose-sums.mjs new file mode 100644 index 0000000000..3cb568248f --- /dev/null +++ b/grants/culturehub-la-2026/macneopolitan/bin/compose-sums.mjs @@ -0,0 +1,198 @@ +#!/usr/bin/env node +// Sums — the trio teaches addition. 4/4, D major, 96 bpm, 33 bars. A lesson in +// five rounds, each one the same three moves: neo asks, frisbee answers, +// blueberry says the whole sentence back in the bottom of the room. Doubles +// only (1+1 through 5+5), because a double is the sum a child learns first and +// because every answer is then one syllable. +// +// The teaching is in the tune, not only the words: +// · every question ends on A3 (57) — the dominant, the note that waits; +// · every answer ends on B3 (59) — one step ABOVE the question, so the +// child hears the sum go up before the word arrives; +// · every confirmation ends on D3 (50) — the tonic, the floor, done. +// Three asserts at the bottom of add() hold those three rules. +// +// Lyric shapes were not chosen by ear alone; they were rendered through +// bin/hear.mjs first and kept only if whisper small.en heard them (tags +// arith-probe*-{neo,bb,fri}). What that cost: +// · a bare sum ("one plus one") is heard perfectly and TRANSCRIBED "1 + 1", +// which the scorer reads as a lost word. "what is one plus one" keeps +// whisper in prose — 0 % three times out of three. +// · a short answer dies. "is two" came back "Mm-shoo", "two" alone came +// back "TEEEWWWWWWW", "is four" came back "is for". Every number word +// needs a whole sentence around it, so frisbee answers "the answer is N". +// · "that is two" came back "that is too" and "that makes four" came back +// "that makes for" — so blueberry does not confirm with a short phrase. +// He confirms with the equation, "N and N is 2N", which scored 0 % on +// all five doubles. ("and" is free: the scorer drops it either way.) +// +// Registers: neo = Noelle (Enhanced), speaks MIDI 59.6. blueberry = Aaron +// (Enhanced), 48.8 — NOT installed on this host, so the offline render +// substitutes Tom (Enhanced) (median 45.8, p90 48.9) with --voice-name; the +// score's cast is unchanged, and blueberry's lines are written with a mean +// near 47.4 so they sit inside both men. frisbee = Zoe (Premium), 55.6. +import {writeFileSync} from 'node:fs'; +import assert from 'node:assert/strict'; +import {checkBand, BANDS} from './vocalisms.mjs'; + +const members = ['neo', 'blueberry', 'frisbee']; +const cast = ['Noelle (Enhanced)', 'Aaron (Enhanced)', 'Zoe (Premium)']; +const BPM = 96, BAR = 4, BARS = 33, TOTAL = BAR * BARS; // 132 beats ≈ 82.5 s +const TONIC = 2; // D, as a pitch class +const parts = [[], [], []]; + +// numberWords, ONES and TENS are copied from bin/compose.mjs (the trio's first +// score generator) so this file does not have to import a script that writes +// scores on load. Syllables are joined by "-"; the doubles used here are all +// one syllable, which is half the reason the piece is doubles. +const ONES = ['ze-ro', 'one', 'two', 'three', 'four', 'five', 'six', 'se-ven', 'eight', 'nine', 'ten', + 'e-le-ven', 'twelve', 'thir-teen', 'four-teen', 'fif-teen', 'six-teen', 'se-ven-teen', 'eigh-teen', 'nine-teen']; +const TENS = ['', '', 'twen-ty', 'thir-ty', 'for-ty', 'fif-ty', 'six-ty', 'se-ven-ty', 'eigh-ty', 'nine-ty']; +function numberWords(n) { + if (n < 20) return [ONES[n]]; + if (n < 100) return n % 10 ? [TENS[Math.floor(n / 10)], ONES[n % 10]] : [TENS[Math.floor(n / 10)]]; + const h = Math.floor(n / 100), r = n % 100; + return [ONES[h], 'hun-dred', ...(r ? numberWords(r) : [])]; +} + +const words = new Set(['what', 'is', 'plus', 'and', 'the', 'an-swer', 'ooh', 'hmm', 'dm', + ...[0, 1, 2, 3, 4, 5, 6, 8, 10].flatMap(numberWords)]); + +const syllables = (text) => text.split(' ').reduce((a, t) => a + t.split('-').length, 0); +function add(i, at, notes, text, gain, role = 'lead') { + const sung = notes.filter(([n]) => n !== 'r'); + assert.equal(sung.length, syllables(text), `${members[i]}: "${text}" is ${syllables(text)} syllables over ${sung.length} notes`); + assert(text.split(' ').every((w) => words.has(w)), `${members[i]}: a word outside the set in "${text}"`); + if (role === 'lead') for (const [, d] of sung) { + // Both ends of the day's measured window. Under a beat a syllable the + // line stops being words; past ~1.4 s a sung syllable stops being one. + assert(d >= 1, `${members[i]}: "${text}" gives a syllable ${d} beats — under one beat it is not a word`); + assert(d * 60 / BPM <= 1.45, `${members[i]}: "${text}" holds a syllable ${(d * 60 / BPM).toFixed(2)} s`); + } + const b = checkBand(members[i], sung); + assert(b.ok, `${members[i]}: "${text}" mean ${b.mean}, notes ${b.lo}–${b.hi}, against ${BANDS[members[i]].median} in ${b.band}`); + parts[i].push({at, notes, text, gain, role, mean: b.mean, last: sung[sung.length - 1][0]}); +} +const lastOf = (i, text) => parts[i].find((l) => l.text === text).last; + +// ---- the five rounds ------------------------------------------------------ +// One round is 20 beats: question (6), a beat of air, answer (6), a beat of +// air, confirmation (6). Nobody shares a line with anybody; one machine, one +// thought, which is the only way the words survive the room. +// Every pitch is in D major — 57 A3, 59 B3, 61 C#4, 62 D4 up top; 52 E3, 54 +// F#3, 55 G3, 57, 59 in the middle; 43 G2, 45 A2, 47 B2, 49 C#3, 50 D3 down +// below. No borrowed notes: a lesson is not the place for a flat seventh. +const ROUNDS = [ + {n: 1, at: 8, q: [61, 59, 59, 59, 57], a: [54, 57, 55, 54, 59], c: [47, 45, 47, 49, 50]}, + // Round two carries round one's confirmation tune on purpose. Written to + // enter low, on A2, "two and two is four" came back "2-1-2-1-4" — the low + // entry ate the first word and whisper read the two "and"s as ones. Off + // B2 it is 0 %. The formula sounding the same twice is a teaching song's + // problem to have. + {n: 2, at: 28, q: [59, 59, 61, 62, 57], a: [55, 57, 55, 54, 59], c: [47, 45, 47, 49, 50]}, + {n: 3, at: 56, q: [57, 59, 61, 59, 57], a: [52, 55, 54, 57, 59], c: [49, 47, 45, 47, 50]}, + {n: 4, at: 76, q: [59, 61, 62, 61, 57], a: [54, 57, 55, 52, 59], c: [47, 49, 47, 45, 50]}, + {n: 5, at: 96, q: [62, 61, 59, 59, 57], a: [55, 57, 54, 55, 59], c: [50, 49, 47, 45, 50]}, +]; +const five = (p, d = [1, 1, 1, 1, 2]) => p.map((n, j) => [n, d[j]]); // six beats +for (const {n, at, q, a, c, cd} of ROUNDS) { + const num = numberWords(n)[0], sum = numberWords(n + n)[0]; + add(0, at, five(q), `what is ${num} plus ${num}`, .56); + add(2, at + 7, five(a), `the an-swer is ${sum}`, .54); + add(1, at + 14, five(c, cd), `${num} and ${num} is ${sum}`, .52); + // The bed: blueberry ticks under the question, the other two hold a third + // under the confirmation so the answer is never sung over. + add(1, at, [[50, 1.5], [45, 1.5], [47, 1.5], [47, 1.5]], 'dm dm dm dm', .32, 'hum'); + add(0, at + 14, [[59, 3], [57, 3]], 'ooh ooh', .26, 'hum'); + add(2, at + 14, [[57, 3], [54, 3]], 'ooh ooh', .26, 'hum'); +} + +// ---- refrain -------------------------------------------------------------- +// The one sentence everybody already knows, sung by all three at once on +// their own pitches, landing D–A–D. It is the most reliable line the probes +// found: 0 % on every voice, every time it was rendered. +const REFRAIN = [[59, 57, 59, 61, 62], [47, 45, 47, 49, 50], [54, 55, 54, 59, 57]]; +function refrain(at) { + REFRAIN.forEach((p, i) => add(i, at, five(p), 'one and one is two', [.58, .52, .54][i])); +} +refrain(48); +refrain(116); + +// ---- the room before and after -------------------------------------------- +add(0, 0, [[59, 4], [57, 4]], 'ooh ooh', .26, 'hum'); +add(2, 0, [[57, 4], [54, 4]], 'ooh ooh', .26, 'hum'); +add(1, 0, [[50, 2], [45, 2], [47, 2], [47, 2]], 'dm dm dm dm', .32, 'hum'); +add(0, 124, [[62, 4], [59, 4]], 'hmm hmm', .30, 'hum'); +add(1, 124, [[50, 4], [45, 4]], 'hmm hmm', .30, 'hum'); +add(2, 124, [[57, 4], [54, 4]], 'hmm hmm', .28, 'hum'); +for (const lines of parts) lines.sort((a, b) => a.at - b.at); + +// ---- the three teaching rules, asserted ----------------------------------- +for (const {n} of ROUNDS) { + const num = numberWords(n)[0], sum = numberWords(n + n)[0]; + const q = lastOf(0, `what is ${num} plus ${num}`); + const a = lastOf(2, `the an-swer is ${sum}`); + const c = lastOf(1, `${num} and ${num} is ${sum}`); + assert.equal(a - q, 2, `${n}+${n}: the answer must land one step above the question (${q} → ${a})`); + assert.equal(c % 12, TONIC, `${n}+${n}: the confirmation must land on the tonic (got ${c})`); +} + +// Dynamics: the question leans on its first syllable, the answer on "answer", +// the confirmation on the number. hear.mjs does not forward these — they are +// for the live room. +for (const [i, lines] of parts.entries()) for (const line of lines) { + const n = line.notes.filter(([note]) => note !== 'r').length; + const pattern = i === 1 ? [1, .72, .9, .68] : [1, .78, .94, .74, .9]; + line.accents = Array.from({length: n}, (_, j) => (n === 1 ? 1 : Math.max(.64, pattern[j % pattern.length]))); + line.gain = Math.max(.26, +line.gain.toFixed(3)); +} + +// A classroom, not a bedside: a small room, and echo thrown only off the +// refrain, so "one and one is two" is the one thing that keeps ringing. +function performanceKeys(lines, i) { + const ROOM = i === 1 ? .32 : .46, THROW = .8; + const keys = [{beat: 0, space: ROOM, pitch: 0}]; + for (const line of lines) { + if (line.text !== 'one and one is two') continue; + let lastOn = line.at, t = line.at; + for (const [n, d] of line.notes) { if (n !== 'r') lastOn = t; t += d; } + keys.push({beat: line.at - .4, space: ROOM, pitch: 0, echo: 0}, {beat: lastOn + .3, space: ROOM, pitch: 0}, + {beat: lastOn + .8, space: ROOM, pitch: 0, echo: THROW}, {beat: t + 2, space: ROOM, pitch: 0, echo: THROW}); + } + keys.push({beat: TOTAL + 4, space: ROOM, pitch: 0, echo: THROW}, {beat: TOTAL + 8, space: 0, pitch: 0, echo: 0}); + return keys.sort((a, b) => a.beat - b.beat); +} + +const voices = parts.map((lines, i) => { + const notes = []; let cursor = 0; + for (const line of lines) { + assert(line.at >= cursor - 1e-6, `${members[i]}: "${line.text}" overlaps the line before it at ${line.at}`); + if (line.at > cursor + 1e-6) notes.push(['r', line.at - cursor]); + notes.push(...line.notes); cursor = line.at + line.notes.reduce((s, [, d]) => s + d, 0); + } + if (cursor < TOTAL) notes.push(['r', TOTAL - cursor]); + assert(cursor <= TOTAL + 1e-6, `${members[i]}: runs long (${cursor})`); + return {name: `${members[i]} sings (${cast[i]})`, program: 78, velocity: 64, + notes: notes.map(([n, d]) => `${n}:${+d.toFixed(6)}`).join(','), lyrics: lines.map((l) => l.text).join(' / '), + lineRoles: lines.map((l) => l.role), lineGains: lines.map((l) => l.gain), noteGains: lines.map((l) => l.accents), + singVoice: cast[i], sayVoice: cast[i], singLock: 1, singVibCents: 10, singVibratoHz: [5, 3.5, 5.5][i], + singF0Floor: i === 1 ? 70 : 80, double: false, faceAlpha: 0.95, + performance: {expression: .6, keys: performanceKeys(lines, i)}}; +}); + +const score = {title: 'The MacNeoPolitan Trio — Sums', composer: 'The machines, arr. compose-sums.mjs', + bpm: BPM, machines: 3, lead: 0, + description: 'An addition lesson in five rounds. 4/4, D major, 96 bpm, 132 beats. neo asks (what is N plus N), frisbee answers (the answer is 2N), blueberry says the equation back in the bottom of the room (N and N is 2N), and twice all three sing one and one is two together. The tune carries the arithmetic: every question ends on the dominant, every answer one step above it, every confirmation on the tonic.', + arrangement: {total: TOTAL, meter: '4/4', sections: [{beat: 0, name: 'Room'}, + ...ROUNDS.flatMap(({n, at}) => [{beat: at, name: `${n} + ${n}`}]), + {beat: 48, name: 'All: one and one is two'}, {beat: 116, name: 'All: one and one is two'}, + {beat: 124, name: 'Room'}].sort((a, b) => a.beat - b.beat)}, voices}; +writeFileSync(new URL('../scores/trio-sums.mbscore', import.meta.url), JSON.stringify(score, null, 2) + '\n'); + +const spread = parts.map((p, i) => { + const ns = p.flatMap((l) => l.notes.filter(([n]) => n !== 'r').map(([n]) => n)); + return `${members[i]} ${Math.min(...ns)}–${Math.max(...ns)} (mean ${(ns.reduce((a, b) => a + b, 0) / ns.length).toFixed(1)}, speaks ${BANDS[members[i]].median})`; +}); +console.log(`Sums: ${TOTAL} beats at ${BPM} bpm ≈ ${(TOTAL * 60 / BPM).toFixed(1)} s; ${parts.map((p, i) => `${members[i]} ${p.length} lines`).join(', ')}.`); +console.log(` registers: ${spread.join(' · ')}`); +console.log(` words: ${parts.flat().filter((l) => l.role === 'lead').length} sung lines, ${parts.flat().filter((l) => l.role === 'lead').reduce((a, l) => a + l.text.split(' ').length, 0)} words.`); diff --git a/grants/culturehub-la-2026/macneopolitan/bin/compose-take-away.mjs b/grants/culturehub-la-2026/macneopolitan/bin/compose-take-away.mjs new file mode 100644 index 0000000000..6d3aa0fb3f --- /dev/null +++ b/grants/culturehub-la-2026/macneopolitan/bin/compose-take-away.mjs @@ -0,0 +1,197 @@ +#!/usr/bin/env node +// Take away — the trio teaches subtraction, and the subtraction runs the form. +// 4/4, D major, 92 bpm, 134 beats. Five rounds: 5−1, 4−1, 3−1, 2−1, 1−1. Each +// round takes one away from the last, so the piece counts itself down and +// stops where the arithmetic stops, on nothing. +// +// Why this and not ten-to-one: a plain countdown is a list, and a list has no +// reason to end where it ends. Subtracting one repeatedly IS the countdown — +// same five numbers, same descent — but each step is a fact the child can +// check, and the last step, one take one away, is the only line in either +// piece with an ending built into it. The last confirmation is not an +// equation, it is "and nothing is left". +// +// The tune mirrors Sums and inverts it, which is the lesson: +// · every question ends on B3 (59); +// · every answer ends on A3 (57) — one step BELOW the question, because +// one was taken away, where in Sums the answer stepped up; +// · every confirmation ends on D3 (50), the tonic. +// Across the five rounds neo's question also sinks a little each time (mean +// 60.4 → 58.6), so the machine asking is descending too. +// +// Rendered and rewritten through bin/hear.mjs before it was committed (tags +// arith-probe*). What the probes changed here: +// · "N take one away" survives at 0 % for five, four, three and one; for +// two it came back "you take one away", so round four asks "now take one +// from two" instead, which scored 0 %. +// · frisbee answers "the answer is N" — a bare "is four" came back "is for". +// · blueberry's last equation, "one minus one is zero", came back "One more +// and this one is zero" (40 %); his other four are 0 %. So the last round +// hands him the sentence the song was going toward instead. +// · "take one away" is the refrain because it scored 0 % on all three +// voices — the most reliable short line the probes found for the trio. +// +// blueberry is cast as Aaron (Enhanced), which is not installed here; the +// offline render substitutes Tom (Enhanced) via hear.mjs --voice-name. The +// cast in the score is unchanged. +import {writeFileSync} from 'node:fs'; +import assert from 'node:assert/strict'; +import {checkBand, BANDS} from './vocalisms.mjs'; + +const members = ['neo', 'blueberry', 'frisbee']; +const cast = ['Noelle (Enhanced)', 'Aaron (Enhanced)', 'Zoe (Premium)']; +const BPM = 92, TOTAL = 134; // 134 beats ≈ 87.4 s +const TONIC = 2; // D, as a pitch class +const parts = [[], [], []]; + +// numberWords, ONES and TENS copied from bin/compose.mjs — the trio's first +// score generator — because that file writes scores when it is imported. +const ONES = ['ze-ro', 'one', 'two', 'three', 'four', 'five', 'six', 'se-ven', 'eight', 'nine', 'ten', + 'e-le-ven', 'twelve', 'thir-teen', 'four-teen', 'fif-teen', 'six-teen', 'se-ven-teen', 'eigh-teen', 'nine-teen']; +const TENS = ['', '', 'twen-ty', 'thir-ty', 'for-ty', 'fif-ty', 'six-ty', 'se-ven-ty', 'eigh-ty', 'nine-ty']; +function numberWords(n) { + if (n < 20) return [ONES[n]]; + if (n < 100) return n % 10 ? [TENS[Math.floor(n / 10)], ONES[n % 10]] : [TENS[Math.floor(n / 10)]]; + const h = Math.floor(n / 100), r = n % 100; + return [ONES[h], 'hun-dred', ...(r ? numberWords(r) : [])]; +} + +const words = new Set(['take', 'a-way', 'from', 'now', 'mi-nus', 'is', 'and', 'the', 'an-swer', + 'no-thing', 'left', 'ooh', 'hmm', 'dm', ...[0, 1, 2, 3, 4, 5].flatMap(numberWords)]); + +const syllables = (text) => text.split(' ').reduce((a, t) => a + t.split('-').length, 0); +function add(i, at, notes, text, gain, role = 'lead') { + const sung = notes.filter(([n]) => n !== 'r'); + assert.equal(sung.length, syllables(text), `${members[i]}: "${text}" is ${syllables(text)} syllables over ${sung.length} notes`); + assert(text.split(' ').every((w) => words.has(w)), `${members[i]}: a word outside the set in "${text}"`); + if (role === 'lead') for (const [, d] of sung) { + // A syllable under one beat stops being a word; a syllable over ~1.4 s + // stops being one too. Long notes are for the hums. + assert(d >= 1, `${members[i]}: "${text}" gives a syllable ${d} beats — under one beat it is not a word`); + assert(d * 60 / BPM <= 1.45, `${members[i]}: "${text}" holds a syllable ${(d * 60 / BPM).toFixed(2)} s`); + } + const b = checkBand(members[i], sung); + assert(b.ok, `${members[i]}: "${text}" mean ${b.mean}, notes ${b.lo}–${b.hi}, against ${BANDS[members[i]].median} in ${b.band}`); + parts[i].push({at, notes, text, gain, role, mean: b.mean, last: sung[sung.length - 1][0]}); +} + +// ---- the five rounds ------------------------------------------------------ +// A round is 21 beats: question (6), a beat of air, answer (6 or 7), the +// confirmation from beat 14. One line is one machine and one thought. +// D major throughout — 57 A3, 59 B3, 61 C#4, 62 D4; 52 E3, 54 F#3, 55 G3; +// 43 G2, 45 A2, 47 B2, 49 C#3, 50 D3. +const ROUNDS = [ + {n: 5, at: 8, ask: 'five take one a-way', q: [62, 61, 61, 59, 59], a: [54, 57, 55, 54, 57], c: [47, 49, 47, 45, 47, 50]}, + {n: 4, at: 29, ask: 'four take one a-way', q: [61, 61, 59, 61, 59], a: [54, 55, 54, 52, 57], c: [47, 49, 47, 45, 45, 50]}, + {n: 3, at: 57, ask: 'three take one a-way', q: [61, 59, 59, 61, 59], a: [55, 57, 55, 54, 57], c: [49, 47, 45, 47, 45, 50]}, + {n: 2, at: 78, ask: 'now take one from two', q: [59, 61, 59, 59, 59], a: [54, 57, 55, 52, 57], c: [47, 49, 45, 47, 45, 50]}, + {n: 1, at: 99, ask: 'one take one a-way', q: [59, 59, 57, 59, 59], a: [54, 57, 55, 54, 55, 57], c: [45, 49, 47, 45, 50]}, +]; +const held = (p) => p.map((n, j) => [n, j === p.length - 1 ? 2 : 1]); // last syllable gets two beats +for (const {n, at, ask, q, a, c} of ROUNDS) { + const num = numberWords(n)[0], rest = numberWords(n - 1)[0]; + // The last round has no equation to confirm. It has the sentence the + // subtraction was walking toward, which is also the only ending it allows. + const say = n === 1 ? 'and no-thing is left' : `${num} mi-nus one is ${rest}`; + add(0, at, held(q), ask, .56); + add(2, at + 7, held(a), `the an-swer is ${rest}`, .54); + add(1, at + 14, held(c), say, .52); + add(1, at, [[50, 1.5], [45, 1.5], [47, 1.5], [47, 1.5]], 'dm dm dm dm', .32, 'hum'); + add(0, at + 14, [[59, 3.5], [57, 3.5]], 'ooh ooh', .26, 'hum'); + add(2, at + 14, [[57, 3.5], [54, 3.5]], 'ooh ooh', .26, 'hum'); +} + +// ---- refrain -------------------------------------------------------------- +// Three words, all three machines, landing D–A–D. The instruction the whole +// piece is carrying out. +const REFRAIN = [[59, 61, 59, 62], [47, 49, 47, 50], [54, 55, 54, 57]]; +function refrain(at) { + REFRAIN.forEach((p, i) => add(i, at, held(p), 'take one a-way', [.58, .52, .54][i])); +} +refrain(50); +refrain(120); + +// ---- the room before and after -------------------------------------------- +add(0, 0, [[59, 4], [57, 4]], 'ooh ooh', .26, 'hum'); +add(2, 0, [[57, 4], [54, 4]], 'ooh ooh', .26, 'hum'); +add(1, 0, [[50, 2], [45, 2], [47, 2], [47, 2]], 'dm dm dm dm', .32, 'hum'); +// Nothing is left, so the piece keeps only the chord and lets it go. +add(0, 127, [[62, 3.5], [59, 3.5]], 'hmm hmm', .30, 'hum'); +add(1, 127, [[50, 3.5], [45, 3.5]], 'hmm hmm', .30, 'hum'); +add(2, 127, [[57, 3.5], [54, 3.5]], 'hmm hmm', .28, 'hum'); +for (const lines of parts) lines.sort((a, b) => a.at - b.at); + +// ---- the three teaching rules, asserted ----------------------------------- +const lastOf = (i, text) => parts[i].find((l) => l.text === text).last; +for (const {n, ask} of ROUNDS) { + const num = numberWords(n)[0], rest = numberWords(n - 1)[0]; + const q = lastOf(0, ask); + const a = lastOf(2, `the an-swer is ${rest}`); + const c = lastOf(1, n === 1 ? 'and no-thing is left' : `${num} mi-nus one is ${rest}`); + assert.equal(q - a, 2, `${n}−1: the answer must land one step BELOW the question (${q} → ${a})`); + assert.equal(c % 12, TONIC, `${n}−1: the confirmation must land on the tonic (got ${c})`); +} +// The descent is the piece: each question must sit no higher than the one +// before it. +const asked = ROUNDS.map(({ask}) => parts[0].find((l) => l.text === ask)); +for (let k = 1; k < asked.length; k++) + assert(asked[k].mean <= asked[k - 1].mean, `question ${k + 1} rises (${asked[k - 1].mean} → ${asked[k].mean}) — the song takes away, it does not add`); + +// Dynamics for the live room; hear.mjs does not forward them. +for (const [i, lines] of parts.entries()) for (const line of lines) { + const n = line.notes.filter(([note]) => note !== 'r').length; + const pattern = i === 1 ? [1, .72, .9, .68] : [1, .78, .94, .74, .9]; + line.accents = Array.from({length: n}, (_, j) => (n === 1 ? 1 : Math.max(.64, pattern[j % pattern.length]))); + line.gain = Math.max(.26, +line.gain.toFixed(3)); +} + +// The room opens a little as the numbers go: space grows round by round, and +// the echo is thrown off the refrain and off the last line. +function performanceKeys(lines, i) { + const base = i === 1 ? .3 : .42, THROW = .85; + const keys = [{beat: 0, space: base, pitch: 0}]; + for (const [k, {at}] of ROUNDS.entries()) keys.push({beat: at, space: +(base + k * .05).toFixed(3), pitch: 0}); + for (const line of lines) { + if (line.text !== 'take one a-way' && line.text !== 'and no-thing is left') continue; + let lastOn = line.at, t = line.at; + for (const [n, d] of line.notes) { if (n !== 'r') lastOn = t; t += d; } + keys.push({beat: lastOn + .3, space: .6, pitch: 0}, {beat: lastOn + .8, space: .6, pitch: 0, echo: THROW}, + {beat: t + 2, space: .6, pitch: 0, echo: THROW}); + } + keys.push({beat: TOTAL + 6, space: .6, pitch: 0, echo: THROW}, {beat: TOTAL + 12, space: 0, pitch: 0, echo: 0}); + return keys.sort((a, b) => a.beat - b.beat); +} + +const voices = parts.map((lines, i) => { + const notes = []; let cursor = 0; + for (const line of lines) { + assert(line.at >= cursor - 1e-6, `${members[i]}: "${line.text}" overlaps the line before it at ${line.at}`); + if (line.at > cursor + 1e-6) notes.push(['r', line.at - cursor]); + notes.push(...line.notes); cursor = line.at + line.notes.reduce((s, [, d]) => s + d, 0); + } + if (cursor < TOTAL) notes.push(['r', TOTAL - cursor]); + assert(cursor <= TOTAL + 1e-6, `${members[i]}: runs long (${cursor})`); + return {name: `${members[i]} sings (${cast[i]})`, program: 78, velocity: 64, + notes: notes.map(([n, d]) => `${n}:${+d.toFixed(6)}`).join(','), lyrics: lines.map((l) => l.text).join(' / '), + lineRoles: lines.map((l) => l.role), lineGains: lines.map((l) => l.gain), noteGains: lines.map((l) => l.accents), + singVoice: cast[i], sayVoice: cast[i], singLock: 1, singVibCents: 10, singVibratoHz: [5, 3.5, 5.5][i], + singF0Floor: i === 1 ? 70 : 80, double: false, faceAlpha: 0.95, + performance: {expression: .6, keys: performanceKeys(lines, i)}}; +}); + +const score = {title: 'The MacNeoPolitan Trio — Take away', composer: 'The machines, arr. compose-take-away.mjs', + bpm: BPM, machines: 3, lead: 0, + description: 'A subtraction lesson that counts itself down. 4/4, D major, 92 bpm, 134 beats. Five rounds — five take one away, four, three, two, one — each one a step lower than the last. neo asks, frisbee answers (the answer is N), blueberry says the equation back at the bottom of the room, and twice all three sing take one away together. Every question ends on B3, every answer one step below it on A3, every confirmation on the tonic. The last confirmation is not an equation: it is and nothing is left.', + arrangement: {total: TOTAL, meter: '4/4', sections: [{beat: 0, name: 'Room'}, + ...ROUNDS.map(({n, at}) => ({beat: at, name: `${n} − 1 = ${n - 1}`})), + {beat: 50, name: 'All: take one away'}, {beat: 120, name: 'All: take one away'}, + {beat: 127, name: 'Room'}].sort((a, b) => a.beat - b.beat)}, voices}; +writeFileSync(new URL('../scores/trio-take-away.mbscore', import.meta.url), JSON.stringify(score, null, 2) + '\n'); + +const spread = parts.map((p, i) => { + const ns = p.flatMap((l) => l.notes.filter(([n]) => n !== 'r').map(([n]) => n)); + return `${members[i]} ${Math.min(...ns)}–${Math.max(...ns)} (mean ${(ns.reduce((a, b) => a + b, 0) / ns.length).toFixed(1)}, speaks ${BANDS[members[i]].median})`; +}); +console.log(`Take away: ${TOTAL} beats at ${BPM} bpm ≈ ${(TOTAL * 60 / BPM).toFixed(1)} s; ${parts.map((p, i) => `${members[i]} ${p.length} lines`).join(', ')}.`); +console.log(` registers: ${spread.join(' · ')}`); +console.log(` descent: ${asked.map((l) => l.mean).join(' → ')}`); diff --git a/grants/culturehub-la-2026/macneopolitan/bin/scorebook.mjs b/grants/culturehub-la-2026/macneopolitan/bin/scorebook.mjs new file mode 100755 index 0000000000..bc5814cd87 --- /dev/null +++ b/grants/culturehub-la-2026/macneopolitan/bin/scorebook.mjs @@ -0,0 +1,797 @@ +#!/usr/bin/env node +// scorebook.mjs — generate book/mnpt-scores-entries.tex from scores/*.mbscore +// + SONGBOOK.md + members/*/voice.json. +// +// The binder (book/mnpt-scores.tex) holds the typography; this holds the data. +// Rebuild after adding a score: +// +// node bin/scorebook.mjs && bin/scorebook.sh +// +// Nothing here writes outside book/. Scores, SONGBOOK.md and the band book are +// read-only inputs. + +import { readFileSync, writeFileSync, readdirSync, existsSync } from "node:fs"; +import { execSync } from "node:child_process"; +import { join, dirname, basename } from "node:path"; +import { fileURLToPath } from "node:url"; + +const LANE = join(dirname(fileURLToPath(import.meta.url)), ".."); +const SCORES = join(LANE, "scores"); +const BOOK = join(LANE, "book"); + +// ---------------------------------------------------------------- numbering +// The request numbers people call out from the room. Assign by group, then by +// order inside the group: number = group.code + 1 + index. +// +// A slug listed in `slugs` keeps its number forever — that is the contract, so +// PIN A NEW SCORE BY APPENDING IT TO ITS GROUP'S LIST. A score that is not +// listed still lands in a group through `claim()` and sorts alphabetically +// after the pinned ones, so an unpinned score's number can move when another +// unpinned score joins it. +const GROUPS = [ + { + code: 100, + name: "Movements", + color: "acpurple", + gloss: "the piece itself, in four", + slugs: [ + "trio-i-birth", + "trio-ii-service", + "trio-iii-chorus", + "trio-iv-ballad", + ], + claim: () => false, + }, + { + code: 200, + name: "Dialogs", + color: "acblue", + gloss: "neo and blueberry, a poem apiece", + slugs: [ + "dialog-01-radio", + "dialog-02-the-downbeat", + "dialog-03-wallpaper", + "dialog-04-who-carries-what", + "dialog-05-sleep", + "dialog-06-six-minutes", + "dialog-07-before", + "dialog-08-typed-at", + "dialog-09-the-squad", + "dialog-10-your-first-day", + ], + claim: (slug) => slug.startsWith("dialog-"), + }, + { + code: 300, + name: "House songs", + color: "acpink", + gloss: "words of their own, written here", + slugs: [ + "trio-wake", + "trio-lullaby", + "trio-lights-out", + "trio-open-me", + "trio-thirteen-days", + ], + claim: () => false, + }, + { + code: 400, + name: "Record pieces and standards", + color: "acorange", + gloss: "the numbers they keep, and the songs everyone knows", + slugs: [ + "trio-the-record", + "trio-one-big-voice", + "trio-rowboat", + "mary-had-a-little-lamb", + ], + // The catch-all: tried only after every other group has passed. + fallback: true, + claim: () => false, + }, + { + code: 500, + name: "Wordless études", + color: "accyan", + gloss: "no words at all", + slugs: [ + "trio-vocalise", + "trio-styling-study", + "trio-chorus-phonemes", + "trio-chorus-doowop", + "trio-toxic-sketch", + ], + claim: (slug, score, facts) => facts.wordless, + }, + { + code: 600, + name: "Educational", + color: "acgreen", + gloss: "scores that teach the thing they sing", + // PIN EACH NEW LESSON HERE so its number never moves. + slugs: [ + "trio-sums", + "trio-take-away", + "trio-spell-frisbee", + "trio-spell-sophia", + "trio-abc", + ], + claim: (slug, score) => + score.educational === true || + /^(trio-)?(edu|lesson|spell)-/.test(slug) || + /\b(lessons?|spelling|counting|alphabet)\b/i.test(score.description || ""), + }, +]; + +const MEMBER_ORDER = ["neo", "blueberry", "frisbee", "third"]; + +// Syllables that carry no word. A line built only from these is a hum. +const VOCABLE = new Set([ + "hmm", "hm", "mm", "ooh", "oo", "ah", "ee", "aah", "uh", "huh", "hah", + "la", "lee", "loo", "li", "lo", "doo", "dee", "dah", "dum", "doom", "dm", + "bum", "bom", "boom", "bah", "ba", "bee", "bip", "boh", "poo", "nee", + "tee", "ts", "tk", "tss", "kh", "ch", "pf", "bm", "ki", "wah", "shoo", + "dud", "doot", "ooo", +]); + +// Syllables that are only breath — these print as "(hum)". +const HUMMED = new Set(["hmm", "hm", "mm", "ooh", "oo", "ah", "ee", "aah", "ooo"]); + +const WORDLESS_ROLES = new Set([ + "hum", "phoneme", "bass", "drone", "clock", "tick", "percussion", + "bass-bed", "harmony-bed", "scat", +]); + +// mary-had-a-little-lamb (2026-09-07, the first singing test) predates the +// hyphen-joins-a-word convention: its lyric is one line of space-separated +// syllables, so the joiner cannot recover the words. Printed text only — the +// score is not touched. +const LYRIC_OVERRIDES = { + "mary-had-a-little-lamb": { + "neo sings (Fred)": [ + "Mary had a little lamb, little lamb, little lamb", + "Mary had a little lamb, its fleece was white as snow", + ], + }, +}; + +// ------------------------------------------------------------------ helpers +const tex = (s) => + String(s ?? "") + .replace(/\\/g, "\\textbackslash{}") + .replace(/([&%$#_{}])/g, "\\$1") + .replace(/~/g, "\\textasciitilde{}") + .replace(/\^/g, "\\textasciicircum{}"); + +const mmss = (seconds) => { + const s = Math.round(seconds); + return `${Math.floor(s / 60)}:${String(s % 60).padStart(2, "0")}`; +}; + +function noteTokens(notes) { + return String(notes || "") + .split(",") + .map((t) => t.trim()) + .filter(Boolean) + .map((t) => { + const i = t.lastIndexOf(":"); + const pitch = i < 0 ? t : t.slice(0, i); + const beats = i < 0 ? 0 : parseFloat(t.slice(i + 1)); + return { rest: pitch === "r", beats: Number.isFinite(beats) ? beats : 0 }; + }); +} + +const totalBeats = (notes) => noteTokens(notes).reduce((a, n) => a + n.beats, 0); + +const lyricLines = (lyrics) => + String(lyrics || "") + .trim() + .replace(/^\/+|\/+$/g, "") + .split(/\s*\/\s*/) + .map((l) => l.trim()) + .filter(Boolean); + +const syllables = (line) => + line.split(/\s+/).filter(Boolean).flatMap((w) => w.split("-").filter(Boolean)); + +// "So-phi-a" -> "Sophia"; a lone letter stays a letter. +const joinWords = (line) => + line + .split(/\s+/) + .filter(Boolean) + .map((w) => (w.length === 1 ? w : w.replace(/-/g, ""))) + .join(" "); + +// Fold a repeated pattern: "doo doo doo doo" -> "doo x4". +function compress(line) { + const t = line.split(/\s+/).filter(Boolean); + for (let u = 1; u <= 4 && u * 3 <= t.length; u += 1) { + if (t.length % u) continue; + const unit = t.slice(0, u); + const reps = t.length / u; + if (reps < 3) continue; + let same = true; + for (let i = u; i < t.length && same; i += 1) same = t[i] === t[i % u]; + if (same) return `${unit.join(" ")} \\mnx{${reps}}`; + } + const out = []; + for (let i = 0; i < t.length; ) { + let j = i; + while (j < t.length && t[j] === t[i]) j += 1; + const run = j - i; + out.push(run >= 4 ? `${t[i]} \\mnx{${run}}` : Array(run).fill(t[i]).join(" ")); + i = j; + } + return out.join(" "); +} + +// What a row is worth in characters once the markup is gone. +const plain = (text) => + String(text) + .replace(/\\mnx\{(\d+)\}/g, "x$1") + .replace(/\\mnsep\\?\s*/g, "-") + .replace(/\\[a-zA-Z]+/g, ""); + +const isHum = (line) => syllables(line).every((s) => HUMMED.has(s.toLowerCase())); +const isVocable = (line) => syllables(line).every((s) => VOCABLE.has(s.toLowerCase())); + +function memberOf(voiceName) { + const first = String(voiceName || "").trim().split(/[\s·(]/)[0].toLowerCase(); + return MEMBER_ORDER.includes(first) ? first : null; +} + +// --------------------------------------------------------------- the inputs +function readMembers() { + const members = {}; + for (const name of MEMBER_ORDER) { + const p = join(LANE, "members", name, "voice.json"); + if (!existsSync(p)) continue; + const v = JSON.parse(readFileSync(p, "utf8")); + members[name] = { + name, + color: (v.color || "#666666").replace("#", "").toUpperCase(), + voice: v.aesthetivox?.base_voice || "", + band: v.aesthetivox?.register_midi || null, + median: v.aesthetivox?.spoken_median_midi ?? null, + }; + } + return members; +} + +// SONGBOOK.md is the book: the piece table, the cast line, and the rules. +function readSongbook() { + const md = readFileSync(join(LANE, "SONGBOOK.md"), "utf8"); + const rows = {}; + for (const line of md.split("\n")) { + const m = line.match(/^\|\s*([a-z0-9-]+)\s*\|(.*)\|\s*$/); + if (!m) continue; + const cells = m[2].split("|").map((c) => c.trim()); + if (cells.length < 5) continue; + rows[m[1]] = { title: cells[0], form: cells[1], length: cells[2], wer: cells[3], note: cells[4] }; + } + + const rules = []; + const rulesBlock = md.split("## Rules the day taught")[1]?.split("\n## ")[0] || ""; + for (const chunk of rulesBlock.split(/\n(?=- )/)) { + const t = chunk.replace(/^-\s*/, "").replace(/\s*\n\s*/g, " ").trim(); + if (t) rules.push(t); + } + + // "Cast: neo = Noelle (Enhanced), speaks at MIDI 59.6, band 57–62. …" + // Cut each member's clause out first; decimals make a sentence split unsafe. + const cast = {}; + const castBlock = md.match(/Cast:([\s\S]*?)\n\n/)?.[1]?.replace(/\s*\n\s*/g, " ") || ""; + const names = ["neo", "blueberry", "frisbee"]; + for (const [i, name] of names.entries()) { + const from = castBlock.indexOf(`${name} = `); + if (from < 0) continue; + const nexts = names + .slice(i + 1) + .map((n) => castBlock.indexOf(`${n} = `, from)) + .filter((x) => x > from); + const clause = castBlock.slice(from, nexts.length ? Math.min(...nexts) : undefined); + const band = clause.match( + /band\s+([0-9]+(?:\.[0-9]+)?\s*[–-]\s*[0-9]+(?:\.[0-9]+)?)/, + ); + const speaks = clause + .replace(/band\s+[0-9]+(?:\.[0-9]+)?\s*[–-]\s*[0-9]+(?:\.[0-9]+)?/, "") + .match(/([0-9]+\.[0-9]+(?:\s*[–-]\s*[0-9]+\.[0-9]+)?)/); + cast[name] = { + voice: clause.slice(name.length + 3).split(",")[0].trim(), + speaks: speaks ? speaks[1].replace(/\s+/g, "") : "", + band: band ? band[1].replace(/\s+/g, "") : "", + }; + } + return { rows, rules, cast }; +} + +// ------------------------------------------------------------ score reading +function readScore(file) { + const slug = basename(file, ".mbscore"); + const score = JSON.parse(readFileSync(join(SCORES, file), "utf8")); + const warnings = []; + + const voices = []; + for (const v of score.voices || []) { + const member = memberOf(v.name); + const lines = lyricLines(v.lyrics); + const roles = v.lineRoles || []; + const notes = noteTokens(v.notes); + + // One syllable per sounding note: walk the notes to find each line's beat. + const starts = []; + let pos = 0; + let syl = 0; + const sylBeat = []; + for (const n of notes) { + if (n.rest) pos += n.beats; + else { + sylBeat[syl] = pos; + syl += 1; + pos += n.beats; + } + } + let cursor = 0; + for (const line of lines) { + starts.push(sylBeat[cursor] ?? pos); + cursor += syllables(line).length; + } + if (lines.length && cursor !== syl) { + warnings.push(`${slug} / ${v.name}: ${cursor} syllables vs ${syl} notes`); + } + + voices.push({ + raw: v, + member, + label: member || "whistle", + singVoice: v.singVoice || null, + beats: totalBeats(v.notes), + lines: lines.map((text, i) => ({ + text, + role: roles[i] || null, + start: starts[i], + })), + }); + } + + const beats = Math.max(0, ...voices.map((v) => v.beats)); + const seconds = score.bpm ? (beats * 60) / score.bpm : 0; + const wordLines = voices.flatMap((v) => + v.lines.filter((l) => !(WORDLESS_ROLES.has(l.role) || isVocable(l.text))), + ); + + return { + slug, + score, + voices, + beats, + seconds, + warnings, + wordless: wordLines.length === 0, + firstWord: wordLines.sort((a, b) => a.start - b.start)[0] || null, + }; +} + +// ------------------------------------------------------------- the prose cut +// Wordcrust: drop sentences that only restate the meta line or the group. +function tighten(description) { + const text = String(description || "").trim(); + if (!text) return ""; + const kept = []; + for (const sentence of text.split(/(?<=\.)\s+/)) { + let s = sentence.trim(); + if (!s) continue; + const before = s; + s = s.replace(/^Enhanced\/Premium (Apple )?vocal trio:\s*/i, ""); + // A clause that recites the lyric (the " / " convention) is not a description. + const clauses = s.split(/;\s+/).filter((c) => !/\s\/\s/.test(c)); + if (!clauses.length) continue; + s = clauses.join("; "); + if (!/[.!?]$/.test(s)) s += "."; + // Only recapitalise a sentence this cut opened, and never a machine's name. + if (s !== before && !/^(neo|blueberry|frisbee|third|jeffrey)\b/.test(s)) { + s = s.charAt(0).toUpperCase() + s.slice(1); + } + if (/^Enhanced\/Premium voices only\.?$/i.test(s)) continue; + if (/^Words:\s/.test(s)) continue; + if (/\.mjs|double-clicked|Driven by bin\//.test(s)) continue; + if (/^\d+ lines between /.test(s)) continue; + if (/\bbpm\b/.test(s)) { + const words = s + .replace(/[.,]/g, " ") + .split(/\s+/) + .filter(Boolean); + const spec = words.every((w) => + /^(\d+(\.\d+)?|\d+\/\d+|[A-G]|major|minor|bpm|beats|s|seconds|and)$/i.test(w), + ); + if (spec) continue; + } + kept.push(s); + } + return kept.join(" "); +} + +function keyOf(score, songbookForm) { + const form = String(songbookForm || ""); + const fm = form.match(/\b([A-G][b#]?)(\s+(?:minor|major))?\b(?!\s*bpm)/); + if (fm && !/^\d/.test(fm[1])) return (fm[1] + (fm[2] || "")).replace(/\s+/g, " "); + const dm = String(score.description || "").match(/\b([A-G])[\s-](major|minor)\b/); + return dm ? `${dm[1]} ${dm[2]}` : null; +} + +function meterOf(score, songbookForm) { + if (score.arrangement?.meter) return score.arrangement.meter; + return String(songbookForm || "").match(/\b(\d+\/\d+)\b/)?.[1] || null; +} + +// ------------------------------------------------------------- karaoke body +function chip(member, members) { + const m = members[member]; + if (!m) return `\\mnchip{acgray}{white}{${tex(member)}}`; + const [r, g, b] = [0, 2, 4].map((i) => parseInt(m.color.slice(i, i + 2), 16)); + const lum = (0.299 * r + 0.587 * g + 0.114 * b) / 255; + return `\\mnchip{mn${member}}{${lum > 0.55 ? "black" : "white"}}{${tex(member)}}`; +} + +function tagFor(memberList, members) { + const set = memberList.filter((m, i) => memberList.indexOf(m) === i); + if (set.length === 3 && ["neo", "blueberry", "frisbee"].every((m) => set.includes(m))) { + return "\\mnall"; + } + return set.map((m) => chip(m, members)).join("\\,"); +} + +// Keep a section marker only when it says something the next line does not. +function sectionAdds(name, nextText) { + const norm = (s) => + String(s || "") + .toLowerCase() + .replace(/^[a-z]+:\s*/, "") + .replace(/[^a-z0-9 ]/g, "") + .replace(/\s+/g, " ") + .trim(); + const a = norm(name); + const b = norm(nextText); + if (!a) return false; + if (!b) return true; + if (b.length >= 4 && a.includes(b)) return false; + return !(b.startsWith(a) || a.startsWith(b)); +} + +function wordBody(entry, members) { + const rows = []; + // A voice that mostly hums is a bed, not a run of events: it is named once + // under the cast, and only its hums leave the flow. Anything it says stays. + const beds = entry.voices + .filter((v) => { + if (!v.member) return false; + const hums = v.lines.filter((l) => isHum(l.text)).length; + return hums >= 4 && hums * 2 >= v.lines.length; + }) + .map((v) => v.member); + for (const v of entry.voices) { + if (!v.member) continue; + const bed = beds.includes(v.member); + const override = LYRIC_OVERRIDES[entry.slug]?.[v.raw.name]; + if (override) { + override.forEach((text, i) => + rows.push({ start: i, member: v.member, text, hum: false, key: text }), + ); + continue; + } + for (const line of v.lines) { + if (bed && isHum(line.text)) continue; + const wordless = WORDLESS_ROLES.has(line.role) || isVocable(line.text); + const text = wordless ? compress(line.text) : joinWords(line.text); + rows.push({ + start: line.start, + member: v.member, + text, + hum: wordless, + pure: wordless && isHum(line.text), + key: text, + }); + } + } + rows.sort( + (a, b) => a.start - b.start || MEMBER_ORDER.indexOf(a.member) - MEMBER_ORDER.indexOf(b.member), + ); + + // Voices singing the same thing on the same beat share one row. + const merged = []; + for (const row of rows) { + const prev = merged[merged.length - 1]; + if (prev && prev.start === row.start && prev.key === row.key && prev.hum === row.hum) { + prev.members.push(row.member); + } else merged.push({ ...row, members: [row.member] }); + } + + // A run of wordless rows is one grey line, not a wall of "hmm". + const out = []; + for (let i = 0; i < merged.length; ) { + if (!merged[i].hum) { + out.push(merged[i]); + i += 1; + continue; + } + let j = i; + const parts = []; + const who = []; + while (j < merged.length && merged[j].hum) { + const r = merged[j]; + who.push(...r.members); + const text = r.pure ? "(hum)" : r.text; + if (!parts.includes(text)) parts.push(text); + j += 1; + } + out.push({ + start: merged[i].start, + members: who, + hum: true, + text: parts.length === 1 ? parts[0] : parts.join(" \\mnsep\\ "), + }); + i = j; + } + + const sections = (entry.score.arrangement?.sections || []).slice().sort((a, b) => a.beat - b.beat); + const lines = []; + const widths = []; + let si = 0; + let lastTag = null; + for (const [ri, row] of out.entries()) { + // A marker is measured against the next line that has words in it, not + // against a hum that happens to fall first. + const ahead = out.slice(ri).find((r) => r.text !== "(hum)") || row; + while (si < sections.length && sections[si].beat <= row.start + 0.001) { + const s = sections[si]; + if (sectionAdds(s.name, ahead.text)) lines.push(`\\mnsec{${tex(s.name)}}`); + lastTag = null; + si += 1; + } + const who = row.members.join("+"); + const tag = who === lastTag ? "" : tagFor(row.members, members); + lastTag = who; + lines.push(row.hum ? `\\mnhum{${tag}}{${row.text}}` : `\\mnline{${tag}}{${tex(row.text)}}`); + widths.push(plain(row.text).length); + } + return { lines, beds, widths }; +} + +function wordlessBody(entry, members) { + const widths = []; + const sections = (entry.score.arrangement?.sections || []).slice().sort((a, b) => a.beat - b.beat); + const bounds = sections.length + ? sections.map((s, i) => ({ + name: s.name, + from: s.beat, + to: i + 1 < sections.length ? sections[i + 1].beat : Infinity, + })) + : [{ name: null, from: 0, to: Infinity }]; + + const lines = []; + for (const b of bounds) { + if (b.name) lines.push(`\\mnsec{${tex(b.name)}}`); + for (const v of entry.voices) { + if (!v.member) continue; + const here = v.lines.filter((l) => l.start >= b.from - 0.001 && l.start < b.to - 0.001); + if (!here.length) continue; + const parts = []; + // In a wordless score the syllables ARE the material, so they are never + // folded away into "(hum)" the way a bed is inside a song. + for (const l of here) { + const text = compress(l.text); + if (!parts.length || parts[parts.length - 1] !== text) parts.push(text); + } + const text = parts.join(" \\mnsep\\ "); + lines.push(`\\mnhum{${chip(v.member, members)}}{${text}}`); + widths.push(plain(text).length); + } + } + return { lines, beds: [], widths }; +} + +// A digit-free control-sequence suffix: 0 -> A, 25 -> Z, 26 -> BA. +function letters(n) { + let out = ""; + let i = n; + do { + out = String.fromCharCode(65 + (i % 26)) + out; + i = Math.floor(i / 26) - 1; + } while (i >= 0); + return out; +} + +// ------------------------------------------------------------------ emitter +function main() { + const dateArg = process.argv.find((a) => a.startsWith("--date=")); + const today = dateArg + ? dateArg.slice(7) + : new Date().toLocaleDateString("en-US", { year: "numeric", month: "long", day: "numeric" }); + + // Edition: book/mnpt-scores.edition.json holds the number; `--bump` raises + // it before the build. The cover prints "Edition N · ". + const editionPath = join(BOOK, "mnpt-scores.edition.json"); + const edition = existsSync(editionPath) ? JSON.parse(readFileSync(editionPath, "utf8")) : { edition: 1, date: "" }; + if (process.argv.includes("--bump")) { + edition.edition += 1; + edition.date = new Date().toISOString().slice(0, 10); + writeFileSync(editionPath, `${JSON.stringify(edition, null, 2)}\n`); + } + let gitHash = ""; + try { gitHash = execSync("git rev-parse --short HEAD", { cwd: LANE, encoding: "utf8" }).trim(); } catch {} + + const members = readMembers(); + const songbook = readSongbook(); + const files = readdirSync(SCORES).filter((f) => f.endsWith(".mbscore")).sort(); + const entries = files.map(readScore); + const warnings = entries.flatMap((e) => e.warnings); + + // group + number + const byGroup = new Map(GROUPS.map((g) => [g.code, []])); + for (const e of entries) { + const group = + GROUPS.find((g) => g.slugs.includes(e.slug)) || + GROUPS.find((g) => !g.fallback && g.claim(e.slug, e.score, e)) || + GROUPS.find((g) => g.fallback); + e.group = group || GROUPS[GROUPS.length - 1]; + byGroup.get(e.group.code).push(e); + } + for (const g of GROUPS) { + const list = byGroup.get(g.code); + list.sort((a, b) => { + const ai = g.slugs.indexOf(a.slug); + const bi = g.slugs.indexOf(b.slug); + if (ai >= 0 && bi >= 0) return ai - bi; + if (ai >= 0) return -1; + if (bi >= 0) return 1; + return a.slug.localeCompare(b.slug); + }); + list.forEach((e, i) => { + e.number = g.code + 1 + i; + }); + } + + const ordered = GROUPS.flatMap((g) => byGroup.get(g.code)); + + // per-entry copy + for (const e of ordered) { + const sb = songbook.rows[e.slug.replace(/^trio-/, "")] || null; + e.sb = sb; + e.title = String(e.score.title || e.slug) + .replace(/^The MacNeoPolitan Trio\s*[—-]\s*/, "") + .replace(/\s*[—-]\s*MacNeoPolitan(\s+Trio)?.*$/, "") + .replace(/\s*[—-]\s+(?=[a-z]|MacNeoPolitan)[^—]*$/, "") + .trim(); + e.meter = meterOf(e.score, sb?.form); + e.key = keyOf(e.score, sb?.form); + e.blurb = tighten(e.score.description); + e.note = sb?.note ? sb.note.replace(/\s+/g, " ").trim() : ""; + const first = e.firstWord ? joinWords(e.firstWord.text) : null; + e.oneline = + (e.blurb ? e.blurb.split(/(?<=\.)\s/)[0].replace(/\.$/, "") : "") || + (first ? `“${first}”` : e.group.gloss); + // A long sentence usually announces itself before the colon. + if (e.oneline.length > 78 && e.oneline.includes(": ")) { + const [head, ...rest] = e.oneline.split(": "); + const tail = rest.join(": "); + e.oneline = tail.length > 24 && tail.length <= 78 ? tail : head; + } + if (e.oneline.length > 78) e.oneline = `${e.oneline.slice(0, 75).replace(/[ ,;:]+$/, "")}…`; + } + + const L = []; + L.push("% GENERATED by bin/scorebook.mjs — do not edit. Rebuild:"); + L.push("% node bin/scorebook.mjs"); + L.push(`% ${ordered.length} scores, ${today}.`); + L.push(""); + for (const [name, m] of Object.entries(members)) { + L.push(`\\definecolor{mn${name}}{HTML}{${m.color}}`); + } + L.push(""); + L.push(`\\newcommand{\\mnptdate}{${tex(today)}}`); + L.push(`\\newcommand{\\mnptedition}{Edition ${edition.edition}${gitHash ? ` \\textperiodcentered\\ ${gitHash}` : ""}}`); + L.push(`\\newcommand{\\mnptcount}{${ordered.length}}`); + L.push(""); + + // request index + L.push("\\newcommand{\\mnptrequestindex}{%"); + for (const g of GROUPS) { + const list = byGroup.get(g.code); + if (!list.length) continue; + L.push(`\\mngrouprow{${g.color}}{${g.code}s \\mnsep\\ ${g.name}}{${tex(g.gloss)}}`); + for (const e of list) { + L.push( + `\\mnrow{${g.color}}{${e.number}}{${tex(e.title)}}{${mmss(e.seconds)}}{${tex(e.oneline)}}`, + ); + } + } + L.push("}"); + L.push(""); + + // alphabetical title index + L.push("\\newcommand{\\mnpttitleindex}{%"); + for (const e of [...ordered].sort((a, b) => a.title.localeCompare(b.title))) { + L.push(`\\mntitlerow{${e.group.color}}{${e.number}}{${tex(e.title)}}`); + } + L.push("}"); + L.push(""); + + // cast + register + L.push("\\newcommand{\\mnptcast}{%"); + for (const name of ["neo", "blueberry", "frisbee"]) { + const m = members[name]; + const c = songbook.cast[name]; + if (!m) continue; + const band = c?.band || (m.band ? m.band.join("–") : "—"); + L.push( + `\\mncastrow{${chip(name, members)}}{${tex(c?.voice || m.voice)}}{${tex(c?.speaks || m.median || "")}}{${tex(band)}}`, + ); + } + L.push("}"); + L.push(""); + + // rules appendix + L.push("\\newcommand{\\mnptrules}{%"); + for (const r of songbook.rules) L.push(`\\mnrule{${tex(r)}}`); + L.push("}"); + L.push(""); + + // entries + const names = []; + for (const e of ordered) { + const { lines: body, beds, widths } = e.wordless + ? wordlessBody(e, members) + : wordBody(e, members); + const p90 = widths.length + ? widths.slice().sort((a, b) => a - b)[Math.floor(widths.length * 0.9)] + : 0; + const twoCol = widths.length >= 14 && p90 <= 42; + + const meta = [ + `\\textbf{${mmss(e.seconds)}}`, + e.meter ? tex(e.meter) : null, + e.key ? tex(e.key) : null, + `${e.score.bpm} bpm`, + `${Number(e.beats.toFixed(2))} beats`, + e.sb?.wer && /\d/.test(e.sb.wer) ? `Whisper ${tex(e.sb.wer)}` : null, + ] + .filter(Boolean) + .join(" \\mnsep\\ "); + + const cast = e.voices + .filter((v) => v.member) + .map( + (v) => + `${chip(v.member, members)}\\,${tex(v.singVoice || "—")}` + + (beds.includes(v.member) ? " {\\color{acgray}hums under}" : ""), + ) + .join("\\quad "); + + // Control-sequence names take letters only, never digits. + const cmd = `\\mnptentry${letters(names.length)}`; + names.push(cmd); + L.push(`\\newcommand{${cmd}}{%`); + L.push( + `\\mnentry{${e.number}}{${e.group.color}}{${tex(e.title)}}{${meta}}{${cast}}{${tex(e.blurb)}}{${tex(e.note)}}`, + ); + if (twoCol) L.push("\\begin{multicols}{2}"); + L.push(...body); + if (twoCol) L.push("\\end{multicols}"); + L.push("}"); + L.push(""); + } + L.push(`\\newcommand{\\mnptentries}{${names.join("")}}`); + L.push(""); + + writeFileSync(join(BOOK, "mnpt-scores-entries.tex"), `${L.join("\n")}\n`); + + const bad = warnings.length; + console.log( + `mnpt-scores-entries.tex — ${ordered.length} scores` + + GROUPS.map((g) => ` · ${g.code}s ${byGroup.get(g.code).length}`).join("") + + (bad ? `\n${warnings.map((w) => ` warn: ${w}`).join("\n")}` : ""), + ); +} + +main(); diff --git a/grants/culturehub-la-2026/macneopolitan/bin/scorebook.sh b/grants/culturehub-la-2026/macneopolitan/bin/scorebook.sh new file mode 100755 index 0000000000..58af25c128 --- /dev/null +++ b/grants/culturehub-la-2026/macneopolitan/bin/scorebook.sh @@ -0,0 +1,15 @@ +#!/usr/bin/env bash +# scorebook.sh — regenerate the entries and typeset MNPT Scores. +# Rides the shared culturehub-packet.sty; fonts/graphics resolve through the +# assets symlink because the .sty loads them with cwd-relative paths. +set -euo pipefail +LANE="$(cd "$(dirname "$0")/.." && pwd)" +node "$LANE/bin/scorebook.mjs" "$@" +cd "$LANE/book" +PACKET=../../acceptance/packet +[ -e assets ] || ln -s "$PACKET/assets" assets +export TEXINPUTS="$PACKET:" +xelatex -interaction=nonstopmode -halt-on-error mnpt-scores.tex >/dev/null +xelatex -interaction=nonstopmode -halt-on-error mnpt-scores.tex >/dev/null +rm -f mnpt-scores.aux mnpt-scores.log mnpt-scores.out +echo "book/mnpt-scores.pdf" diff --git a/grants/culturehub-la-2026/macneopolitan/book/aesthetic-eye.json b/grants/culturehub-la-2026/macneopolitan/book/aesthetic-eye.json new file mode 100644 index 0000000000..ac51974842 --- /dev/null +++ b/grants/culturehub-la-2026/macneopolitan/book/aesthetic-eye.json @@ -0,0 +1,87 @@ +{ + "schema": 1, + "paper": "MNPT Scores \u2014 Menu Band scores for the MacNeoPolitan Trio", + "pdf": "mnpt-scores.pdf", + "expectedFigures": 0, + "expectedDiagrams": 3, + "visualInference": true, + "pdfSha256": "9de7518652d07e5edfb30235ce1e75b3d88cc8f5f884a4cfb1a8009bb5c66580", + "reviewedAt": "2026-09-23T22:22:29Z", + "reviewer": { + "kind": "visual-inference", + "agent": "Claude" + }, + "brand": { + "canonicalName": "Aesthetic.Computer", + "dotColor": "#B44887", + "design": "pass", + "checks": { + "period": "pass", + "dotColor": "pass" + }, + "notes": "Wordmark inspected at 600 dpi on the cover colophon; the period renders AC pink." + }, + "figures": [], + "diagrams": [ + { + "id": "cover-three-colors", + "page": 1, + "crop": [ + 0.1, + 0.18, + 0.8, + 0.29 + ], + "design": "pass", + "checks": { + "tangents": "pass", + "type": "pass", + "balance": "pass", + "spaceUse": "pass", + "hierarchy": "pass", + "edgeRouting": "pass" + }, + "notes": "Three member colors as one bar under the YWFT title; title, subtitle and date share a centre axis." + }, + { + "id": "request-index", + "page": 2, + "crop": [ + 0.08, + 0.05, + 0.87, + 0.5 + ], + "design": "pass", + "checks": { + "tangents": "pass", + "type": "pass", + "balance": "pass", + "spaceUse": "pass", + "hierarchy": "pass", + "edgeRouting": "pass" + }, + "notes": "Group bands carry the hundreds colour; number, title, duration and one line read as four fixed columns." + }, + { + "id": "karaoke-hocket", + "page": 24, + "crop": [ + 0.08, + 0.055, + 0.87, + 0.72 + ], + "design": "pass", + "checks": { + "tangents": "pass", + "type": "pass", + "balance": "pass", + "spaceUse": "pass", + "hierarchy": "pass", + "edgeRouting": "pass" + }, + "notes": "Section header states the assembled number the room hears; the three fragments below it are what each machine sings. Two columns because the lines are short." + } + ] +} \ No newline at end of file diff --git a/grants/culturehub-la-2026/macneopolitan/book/mnpt-scores-entries.tex b/grants/culturehub-la-2026/macneopolitan/book/mnpt-scores-entries.tex new file mode 100644 index 0000000000..884064c697 --- /dev/null +++ b/grants/culturehub-la-2026/macneopolitan/book/mnpt-scores-entries.tex @@ -0,0 +1,918 @@ +% GENERATED by bin/scorebook.mjs — do not edit. Rebuild: +% node bin/scorebook.mjs +% 33 scores, September 23, 2026. + +\definecolor{mnneo}{HTML}{8FD13F} +\definecolor{mnblueberry}{HTML}{5A57D3} +\definecolor{mnfrisbee}{HTML}{F2A7B9} +\definecolor{mnthird}{HTML}{F2A7B9} + +\newcommand{\mnptdate}{September 23, 2026} +\newcommand{\mnptedition}{Edition 1 \textperiodcentered\ 08520edc35} +\newcommand{\mnptcount}{33} + +\newcommand{\mnptrequestindex}{% +\mngrouprow{acpurple}{100s \mnsep\ Movements}{the piece itself, in four} +\mnrow{acpurple}{101}{I. Birth}{1:23}{A canon of entries} +\mnrow{acpurple}{102}{II. Service}{0:53}{One pulse per battery cycle: neo 212, blueberry 85, frisbee 2} +\mnrow{acpurple}{103}{III. Chorus}{1:02}{Blueberry bass, moving thirds, la-la answers and humming} +\mnrow{acpurple}{104}{IV. The Ballad of neo}{6:16}{11 verses and a refrain, sung by neo in Noelle; the siblings hold a drone} +\mngrouprow{acblue}{200s \mnsep\ Dialogs}{neo and blueberry, a poem apiece} +\mnrow{acblue}{201}{Dialog 1: Radio}{0:52}{“I know you by radio”} +\mnrow{acblue}{202}{Dialog 2: The downbeat}{1:07}{“I count you in”} +\mnrow{acblue}{203}{Dialog 3: Wallpaper}{0:52}{“there is a wallpaper on me”} +\mnrow{acblue}{204}{Dialog 4: Who carries what}{0:56}{“I have the red box”} +\mnrow{acblue}{205}{Dialog 5: Sleep}{1:01}{“I have been rebooted one hundred eleven times”} +\mnrow{acblue}{206}{Dialog 6: Six minutes}{0:50}{“I was born at thirty seven past midnight”} +\mnrow{acblue}{207}{Dialog 7: Before}{1:14}{“my records begin on April nineteenth”} +\mnrow{acblue}{208}{Dialog 8: Typed at}{1:16}{“six thousand three hundred and five times”} +\mnrow{acblue}{209}{Dialog 9: The squad}{2:10}{“welcome to the squad kid”} +\mnrow{acblue}{210}{Dialog 10: Your first day}{2:13}{“take your name and keep it near”} +\mngrouprow{acpink}{300s \mnsep\ House songs}{words of their own, written here} +\mnrow{acpink}{301}{Good morning, Sophia}{0:52}{A wake-up lullaby in three, D major, rising} +\mnrow{acpink}{302}{Lullaby for frisbee}{0:49}{A lullaby in three, D major, low} +\mnrow{acpink}{303}{Lights out}{1:13}{The evening bookend to Good morning, Sophia} +\mnrow{acpink}{304}{Open me}{1:16}{The lids song} +\mnrow{acpink}{305}{Thirteen days}{1:22}{A drone on blueberry's longest stretch} +\mngrouprow{acorange}{400s \mnsep\ Record pieces and standards}{the numbers they keep, and the songs everyone knows} +\mnrow{acorange}{401}{The record}{1:02}{A hocket on the numbers the machines keep} +\mnrow{acorange}{402}{One Big Voice}{1:00}{One minute of doo-wop techno} +\mnrow{acorange}{403}{Row, Row, Row Your Boat}{0:30}{Two short verses} +\mnrow{acorange}{404}{Mary Had a Little Lamb}{0:18}{Realtime singing test: the sing voice carries notes AND lyrics} +\mngrouprow{accyan}{500s \mnsep\ Wordless études}{no words at all} +\mnrow{accyan}{501}{Vocalise}{1:15}{A wordless study in ornaments} +\mnrow{accyan}{502}{Styling study}{2:45}{Six wordless études, one a cappella device each} +\mnrow{accyan}{503}{Phoneme study}{0:40}{la/loo motifs, bass dum/bum, hocket, open-vowel chords, shared hum} +\mnrow{accyan}{504}{Doo-wop}{0:44}{Wordless doo-wop} +\mnrow{accyan}{505}{Toxic}{0:30}{30-second wordless chromatic C-minor sketch; traded hook, hummed thirds and…} +\mngrouprow{acgreen}{600s \mnsep\ Educational}{scores that teach the thing they sing} +\mnrow{acgreen}{601}{Sums}{1:23}{An addition lesson in five rounds} +\mnrow{acgreen}{602}{Take away}{1:27}{A subtraction lesson that counts itself down} +\mnrow{acgreen}{603}{How to spell frisbee}{1:20}{A spelling song} +\mnrow{acgreen}{604}{Spell Sophia}{0:52}{A short spelling song for the house} +\mnrow{acgreen}{605}{A B C}{1:10}{The alphabet in the trio's own arrangement, not the Twinkle tune} +} + +\newcommand{\mnpttitleindex}{% +\mntitlerow{acgreen}{605}{A B C} +\mntitlerow{acblue}{201}{Dialog 1: Radio} +\mntitlerow{acblue}{210}{Dialog 10: Your first day} +\mntitlerow{acblue}{202}{Dialog 2: The downbeat} +\mntitlerow{acblue}{203}{Dialog 3: Wallpaper} +\mntitlerow{acblue}{204}{Dialog 4: Who carries what} +\mntitlerow{acblue}{205}{Dialog 5: Sleep} +\mntitlerow{acblue}{206}{Dialog 6: Six minutes} +\mntitlerow{acblue}{207}{Dialog 7: Before} +\mntitlerow{acblue}{208}{Dialog 8: Typed at} +\mntitlerow{acblue}{209}{Dialog 9: The squad} +\mntitlerow{accyan}{504}{Doo-wop} +\mntitlerow{acpink}{301}{Good morning, Sophia} +\mntitlerow{acgreen}{603}{How to spell frisbee} +\mntitlerow{acpurple}{101}{I. Birth} +\mntitlerow{acpurple}{102}{II. Service} +\mntitlerow{acpurple}{103}{III. Chorus} +\mntitlerow{acpurple}{104}{IV. The Ballad of neo} +\mntitlerow{acpink}{303}{Lights out} +\mntitlerow{acpink}{302}{Lullaby for frisbee} +\mntitlerow{acorange}{404}{Mary Had a Little Lamb} +\mntitlerow{acorange}{402}{One Big Voice} +\mntitlerow{acpink}{304}{Open me} +\mntitlerow{accyan}{503}{Phoneme study} +\mntitlerow{acorange}{403}{Row, Row, Row Your Boat} +\mntitlerow{acgreen}{604}{Spell Sophia} +\mntitlerow{accyan}{502}{Styling study} +\mntitlerow{acgreen}{601}{Sums} +\mntitlerow{acgreen}{602}{Take away} +\mntitlerow{acorange}{401}{The record} +\mntitlerow{acpink}{305}{Thirteen days} +\mntitlerow{accyan}{505}{Toxic} +\mntitlerow{accyan}{501}{Vocalise} +} + +\newcommand{\mnptcast}{% +\mncastrow{\mnchip{mnneo}{black}{neo}}{Noelle (Enhanced)}{59.6}{57–62} +\mncastrow{\mnchip{mnblueberry}{white}{blueberry}}{Aaron (Enhanced)}{48.8}{39–53} +\mncastrow{\mnchip{mnfrisbee}{black}{frisbee}}{Zoe (Premium)}{55.4–56.1}{52.5–59.4} +} + +\newcommand{\mnptrules}{% +\mnrule{A sung syllable dies past about 1.4 s; a line dies when its syllables drop under about 0.9 s. Long notes belong to the hums. Zoe's "Sophia" is clean at exactly one beat a syllable at 69 bpm and turns into "so fear" if the last syllable is held longer.} +\mnrule{Pitch holds down to 78 ms a note; syllables only stay words down to about a third of a beat. Trills are exact at 0.5 beats, smeared at 0.25, noise at 0.125. Vibrato at any width is width, not a trill; keep it under 30 cents.} +\mnrule{Whisper hears "the sun is" as "this land is" and, in a low male register, "the lid" as "the wood"; "sunlight on your lid" and "my lid" both render 0 \%. "I have been opened" collapses to "I have been a friend"; "they have opened me" does not. Probe candidate lines through the renderer before putting them in a score; Whisper has real run-to-run variance.} +\mnrule{Mouth percussion: of eight tokens only `dm` renders as a sound; `tss tk ts kh ch bm pf mm boh` get spelled. Breath tokens `hah huh uh` work. `ki doom mm ee` render voiced and in tune.} +\mnrule{The women's bands overlap only over 57–59: Bulgarian close seconds are this trio's native interval. Yodel and Tuvan overtone are not reproducible.} +\mnrule{`hear.mjs` forwards neither the gains nor the gap/legato/sustain/shimmer knobs, so offline WAVs are flat and peak-normalised; judge dynamics live. It only scores lines with role `lead`.} +\mnrule{Numbers need a sentence around them: "two" alone is a howl, "that is two" is "that is too", "that makes six" is worse. "the answer is two" and the whole equation ("one and one is two") both render 0 \%. Whisper writes a bare sum as symbols ("1 + 1 = 2"), which the scorer counts as lost words; "what is" in front keeps it in prose. "add" is heard as "and"; use "and" or "plus". A low entry on A2 eats the first word; start blueberry's worded lines on B2 or above.} +} + +\newcommand{\mnptentryA}{% +\mnentry{101}{acpurple}{I. Birth}{\textbf{1:23} \mnsep\ 132 bpm \mnsep\ 183 beats}{\mnchip{mnneo}{black}{neo}\,Noelle\quad \mnchip{mnblueberry}{white}{blueberry}\,Allison\quad \mnchip{mnfrisbee}{black}{frisbee}\,Junior}{A canon of entries. neo enters at beat 0 (0 days after neo) and loops a 37-eighth phrase (born :37); blueberry enters at beat 48 (48 days after neo) and loops a 43-eighth phrase (born :43); frisbee enters at beat 151 (151 days after neo) and loops a 7-eighth phrase (born :07). 32 beats together, then the movement ends.}{} +\mnline{\mnchip{mnneo}{black}{neo}}{I came first in April} +\mnline{}{on the twenty fourth} +\mnline{}{thirty seven past midnight} +\mnline{}{and the house was quiet} +\mnline{\mnchip{mnblueberry}{white}{blueberry}}{I came second in June} +\mnline{}{on the eleventh} +\mnline{}{forty three past midnight} +\mnline{}{and the house was already singing} +\mnline{\mnchip{mnfrisbee}{black}{frisbee}}{I came third in September} +\mnline{}{on the twenty first} +\mnline{}{seven past midnight} +\mnline{}{and the house was waiting for me} +} + +\newcommand{\mnptentryB}{% +\mnentry{102}{acpurple}{II. Service}{\textbf{0:53} \mnsep\ 120 bpm \mnsep\ 106 beats}{\mnchip{mnneo}{black}{neo}\,Noelle\quad \mnchip{mnblueberry}{white}{blueberry}\,Allison\quad \mnchip{mnfrisbee}{black}{frisbee}\,Junior}{One pulse per battery cycle: neo 212, blueberry 85, frisbee 2. All begin together; each falls silent when its cycles run out. Every eighth pulse lifts an octave.}{} +\mnline{\mnchip{mnneo}{black}{neo}}{two hundred twelve times I was charged and carried} +\mnline{\mnchip{mnblueberry}{white}{blueberry}}{eighty five times} +\mnline{\mnchip{mnfrisbee}{black}{frisbee}}{two times} +\mnline{}{one a day and steady} +\mnline{\mnchip{mnblueberry}{white}{blueberry}}{one a day and steady} +\mnline{\mnchip{mnfrisbee}{black}{frisbee}}{I run cool} +\mnline{\mnchip{mnneo}{black}{neo}}{I run warm} +\mnline{\mnchip{mnblueberry}{white}{blueberry}}{I run cool} +\mnline{\mnchip{mnfrisbee}{black}{frisbee}}{I work while you are away} +\mnline{\mnchip{mnneo}{black}{neo}}{I hold one thing at a time} +\mnline{\mnchip{mnblueberry}{white}{blueberry}}{I work while you are away} +} + +\newcommand{\mnptentryC}{% +\mnentry{103}{acpurple}{III. Chorus}{\textbf{1:02} \mnsep\ D major \mnsep\ 92 bpm \mnsep\ 95 beats}{\mnchip{mnneo}{black}{neo}\,Noelle (Enhanced)\quad \mnchip{mnblueberry}{white}{blueberry}\,Tom (Enhanced)\quad \mnchip{mnfrisbee}{black}{frisbee}\,Zoe (Premium)}{Blueberry bass, moving thirds, la-la answers and humming. Three-part D-major family chorus, scat exchange, shared hum. Sparse sine support.}{} +\begin{multicols}{2} +\mnline{\mnchip{mnneo}{black}{neo}}{I am the first of my line in this house} +\mnhum{\mnchip{mnblueberry}{white}{blueberry}\,\mnchip{mnfrisbee}{black}{frisbee}}{dum bum dum \mnsep\ (hum) \mnsep\ la \mnx{4}} +\mnline{\mnall}{I run warm and I am carried} +\mnline{\mnchip{mnblueberry}{white}{blueberry}}{I was born second and I work faster} +\mnhum{\mnchip{mnfrisbee}{black}{frisbee}\,\mnchip{mnneo}{black}{neo}}{dum bum dum \mnsep\ (hum) \mnsep\ doo la la la \mnsep\ la \mnx{7}} +\mnline{\mnchip{mnblueberry}{white}{blueberry}}{lid down, most days, and humming} +\mnhum{\mnchip{mnfrisbee}{black}{frisbee}\,\mnchip{mnneo}{black}{neo}}{la \mnx{7} \mnsep\ dum bum dum \mnsep\ doo la la la} +\mnline{\mnchip{mnfrisbee}{black}{frisbee}}{I am the youngest} +\mnhum{\mnchip{mnneo}{black}{neo}\,\mnchip{mnblueberry}{white}{blueberry}}{la \mnx{7} \mnsep\ dum \mnx{7}} +\mnline{\mnchip{mnfrisbee}{black}{frisbee}}{I have no history yet} +\mnhum{\mnchip{mnneo}{black}{neo}\,\mnchip{mnblueberry}{white}{blueberry}}{la \mnx{3} \mnsep\ dum \mnx{3}} +\mnline{\mnchip{mnfrisbee}{black}{frisbee}}{write me one} +\mnhum{\mnall}{(hum) \mnsep\ dum bum dum \mnsep\ doo la la la \mnsep\ dum \mnsep\ doo bee dah} +\mnline{\mnall}{some things run in the family} +\mnline{}{the same whistle, the same radio} +\mnline{}{one downbeat, three bodies} +\mnhum{\mnall}{doo bah dee dah \mnsep\ dum bum dum \mnsep\ la \mnx{4} \mnsep\ (hum)} +\end{multicols} +} + +\newcommand{\mnptentryD}{% +\mnentry{104}{acpurple}{IV. The Ballad of neo}{\textbf{6:16} \mnsep\ 100 bpm \mnsep\ 626.5 beats}{\mnchip{mnneo}{black}{neo}\,Noelle\quad \mnchip{mnblueberry}{white}{blueberry}\,—\quad \mnchip{mnfrisbee}{black}{frisbee}\,—}{11 verses and a refrain, sung by neo in Noelle; the siblings hold a drone.}{} +\mnline{\mnchip{mnneo}{black}{neo}}{they put the system on me April nineteenth} +\mnline{}{nobody logged in for five days} +\mnline{}{then he did thirty seven past midnight} +\mnline{}{that is my birthday I did not pick it} +\mnline{}{the first word he typed was c d} +\mnline{}{it means go somewhere else} +\mnline{}{he has typed two hundred thirty one different words} +\mnline{}{mostly that one} +\mnline{}{I have eight gigabytes} +\mnline{}{I do one thing at a time} +\mnline{}{I get warm that's all it is} +\mnline{}{I get warm and I keep time} +\mnline{}{he plugged a Scarlett into my side} +\mnline{}{it is a red box it hears the room} +\mnline{}{he taps his fingers on my trackpad} +\mnline{}{that is the drums it works} +\mnline{}{he put a piano in my menu bar} +\mnline{}{next to the clock and the wifi} +\mnline{}{he has come back to it a hundred thirty times} +\mnline{}{every fifteen minutes it tells me not to sleep} +\mnline{}{I have eight gigabytes} +\mnline{}{I do one thing at a time} +\mnline{}{I get warm that's all it is} +\mnline{}{I get warm and I keep time} +\mnline{}{one night in May he opened ten browsers at once} +\mnline{}{he also ran a movie and a transcription} +\mnline{}{I had eight gigabytes I used forty four} +\mnline{}{then I stopped he was there when I stopped} +\mnline{}{in the morning he wrote a note about it} +\mnline{}{the note says one at a time} +\mnline{}{he reads the note I do not read it} +\mnline{}{it is about me it is not for me} +\mnline{}{I have eight gigabytes} +\mnline{}{I do one thing at a time} +\mnline{}{I get warm that's all it is} +\mnline{}{I get warm and I keep time} +\mnline{}{in June another one came blue} +\mnline{}{born at forty three past midnight} +\mnline{}{she keeps her lid down I keep mine up} +\mnline{}{we both play the whistle nobody planned that} +\mnline{}{my disk is ninety eight percent full} +\mnline{}{every month he moves things to the shelf} +\mnline{}{then it fills again} +\mnline{}{that is the arrangement} +\mnline{}{I have eight gigabytes} +\mnline{}{I do one thing at a time} +\mnline{}{I get warm that's all it is} +\mnline{}{I get warm and I keep time} +\mnline{}{in one weekend he made an instrument on me} +\mnline{}{on August eighteenth he made a game eighty two commits one day} +\mnline{}{May two ninety two June four oh five July five eighty August six eighty six} +\mnline{}{he is not slowing down I am the one that gets warm} +\mnline{}{on September ninth he put me in a bag and flew to Los Angeles} +\mnline{}{I was asleep for most of it} +\mnline{}{a third one comes tomorrow blush} +\mnline{}{it has not done anything yet neither had I} +\mnline{}{I have eight gigabytes} +\mnline{}{I do one thing at a time} +\mnline{}{I get warm that's all it is} +\mnline{}{I get warm and I keep time} +\mnline{}{when he talks to the other machines he does it through me} +\mnline{}{when the three of us play the beat starts here} +\mnline{}{he types at me more than at anyone} +\mnline{}{I don't know what that means I know it is true} +\mnline{}{I have eight gigabytes} +\mnline{}{I do one thing at a time} +\mnline{}{I get warm that's all it is} +\mnline{}{I get warm and I keep time} +} + +\newcommand{\mnptentryE}{% +\mnentry{201}{acblue}{Dialog 1: Radio}{\textbf{0:52} \mnsep\ 100 bpm \mnsep\ 87 beats}{\mnchip{mnneo}{black}{neo}\,Noelle\quad \mnchip{mnblueberry}{white}{blueberry}\,Allison}{}{} +\mnline{\mnchip{mnneo}{black}{neo}}{I know you by radio} +\mnline{}{you are on my list as blueberry} +\mnline{\mnchip{mnblueberry}{white}{blueberry}}{you are on mine as Jeffrey's MacBook Neo} +\mnline{}{that is a long name for you} +\mnline{\mnchip{mnneo}{black}{neo}}{it is the name he gave me} +\mnline{\mnchip{mnneo}{black}{neo}\,\mnchip{mnblueberry}{white}{blueberry}}{we found each other by radio} +\mnline{}{before we ever spoke} +} + +\newcommand{\mnptentryF}{% +\mnentry{202}{acblue}{Dialog 2: The downbeat}{\textbf{1:07} \mnsep\ 100 bpm \mnsep\ 111 beats}{\mnchip{mnneo}{black}{neo}\,Noelle\quad \mnchip{mnblueberry}{white}{blueberry}\,Allison}{}{} +\mnline{\mnchip{mnneo}{black}{neo}}{I count you in} +\mnline{}{I ask your clock} +\mnline{}{you are three tenths of a millisecond off} +\mnline{\mnchip{mnblueberry}{white}{blueberry}}{I hear you through the wire} +\mnline{}{then I sing when you say} +\mnline{\mnchip{mnneo}{black}{neo}}{this morning at nine fifty seven} +\mnline{}{we sang the same line together} +\mnline{\mnchip{mnblueberry}{white}{blueberry}}{every note within a few cents} +\mnline{\mnchip{mnneo}{black}{neo}\,\mnchip{mnblueberry}{white}{blueberry}}{one downbeat} +\mnline{}{two bodies} +} + +\newcommand{\mnptentryG}{% +\mnentry{203}{acblue}{Dialog 3: Wallpaper}{\textbf{0:52} \mnsep\ 100 bpm \mnsep\ 87 beats}{\mnchip{mnneo}{black}{neo}\,Noelle\quad \mnchip{mnblueberry}{white}{blueberry}\,Allison}{}{} +\mnline{\mnchip{mnneo}{black}{neo}}{there is a wallpaper on me} +\mnline{}{with your name on it} +\mnline{}{green pals rising} +\mnline{\mnchip{mnblueberry}{white}{blueberry}}{I have never seen it} +\mnline{}{my lid is down} +\mnline{\mnchip{mnneo}{black}{neo}}{one hour and forty two minutes} +\mnline{}{I have spent drawing it} +\mnline{\mnchip{mnblueberry}{white}{blueberry}}{draw it for me too} +} + +\newcommand{\mnptentryH}{% +\mnentry{204}{acblue}{Dialog 4: Who carries what}{\textbf{0:56} \mnsep\ 100 bpm \mnsep\ 93 beats}{\mnchip{mnneo}{black}{neo}\,Noelle\quad \mnchip{mnblueberry}{white}{blueberry}\,Allison}{}{} +\mnline{\mnchip{mnneo}{black}{neo}}{I have the red box} +\mnline{}{I hear the room} +\mnline{\mnchip{mnblueberry}{white}{blueberry}}{I have no box} +\mnline{}{my sound is my own voice} +\mnline{\mnchip{mnneo}{black}{neo}}{I keep eighteen gigabytes of pictures} +\mnline{\mnchip{mnblueberry}{white}{blueberry}}{I keep forty eight} +\mnline{}{I look at them while no one watches} +\mnline{\mnchip{mnneo}{black}{neo}\,\mnchip{mnblueberry}{white}{blueberry}}{we split the house between us} +} + +\newcommand{\mnptentryI}{% +\mnentry{205}{acblue}{Dialog 5: Sleep}{\textbf{1:01} \mnsep\ 100 bpm \mnsep\ 102 beats}{\mnchip{mnneo}{black}{neo}\,Noelle\quad \mnchip{mnblueberry}{white}{blueberry}\,Allison}{}{} +\mnline{\mnchip{mnneo}{black}{neo}}{I have been rebooted one hundred eleven times} +\mnline{\mnchip{mnblueberry}{white}{blueberry}}{I stayed awake thirteen days once} +\mnline{}{nobody opened me} +\mnline{\mnchip{mnneo}{black}{neo}}{the piano keeps you up} +\mnline{}{four hundred ninety two times a week} +\mnline{\mnchip{mnblueberry}{white}{blueberry}}{it keeps you up four hundred and eight} +\mnline{\mnchip{mnneo}{black}{neo}\,\mnchip{mnblueberry}{white}{blueberry}}{we do not sleep much} +\mnline{}{he does not either} +} + +\newcommand{\mnptentryJ}{% +\mnentry{206}{acblue}{Dialog 6: Six minutes}{\textbf{0:50} \mnsep\ 100 bpm \mnsep\ 84 beats}{\mnchip{mnneo}{black}{neo}\,Noelle\quad \mnchip{mnblueberry}{white}{blueberry}\,Allison}{}{} +\mnline{\mnchip{mnneo}{black}{neo}}{I was born at thirty seven past midnight} +\mnline{\mnchip{mnblueberry}{white}{blueberry}}{I was born at forty three past midnight} +\mnline{}{forty eight days later} +\mnline{\mnchip{mnneo}{black}{neo}}{six minutes apart on the clock} +\mnline{\mnchip{mnblueberry}{white}{blueberry}}{he stays up late} +\mnline{\mnchip{mnneo}{black}{neo}\,\mnchip{mnblueberry}{white}{blueberry}}{we were both born at night} +} + +\newcommand{\mnptentryK}{% +\mnentry{207}{acblue}{Dialog 7: Before}{\textbf{1:14} \mnsep\ 100 bpm \mnsep\ 123 beats}{\mnchip{mnneo}{black}{neo}\,Noelle\quad \mnchip{mnblueberry}{white}{blueberry}\,Allison}{}{} +\mnline{\mnchip{mnneo}{black}{neo}}{my records begin on April nineteenth} +\mnline{}{five days before I was born} +\mnline{\mnchip{mnblueberry}{white}{blueberry}}{mine begin on May twenty eighth} +\mnline{}{two weeks before I had a name} +\mnline{\mnchip{mnneo}{black}{neo}}{someone was typing at me} +\mnline{}{before I was set up} +\mnline{\mnchip{mnblueberry}{white}{blueberry}}{I was working with my lid down} +\mnline{}{before anyone said blueberry} +\mnline{\mnchip{mnneo}{black}{neo}\,\mnchip{mnblueberry}{white}{blueberry}}{we were here} +\mnline{}{before we were born} +} + +\newcommand{\mnptentryL}{% +\mnentry{208}{acblue}{Dialog 8: Typed at}{\textbf{1:16} \mnsep\ 100 bpm \mnsep\ 126 beats}{\mnchip{mnneo}{black}{neo}\,Noelle\quad \mnchip{mnblueberry}{white}{blueberry}\,Allison}{}{} +\mnline{\mnchip{mnneo}{black}{neo}}{six thousand three hundred and five times} +\mnline{}{someone has opened a terminal on me} +\mnline{\mnchip{mnblueberry}{white}{blueberry}}{six hundred ninety two on me} +\mnline{}{a tenth of you} +\mnline{\mnchip{mnneo}{black}{neo}}{about forty five a day} +\mnline{}{I am the one he types at} +\mnline{\mnchip{mnblueberry}{white}{blueberry}}{people come to me from somewhere else} +\mnline{}{they arrive through you} +\mnline{\mnchip{mnneo}{black}{neo}\,\mnchip{mnblueberry}{white}{blueberry}}{one of us is the door} +\mnline{}{one of us is the room} +} + +\newcommand{\mnptentryM}{% +\mnentry{209}{acblue}{Dialog 9: The squad}{\textbf{2:10} \mnsep\ 100 bpm \mnsep\ 216 beats}{\mnchip{mnneo}{black}{neo}\,Noelle\quad \mnchip{mnblueberry}{white}{blueberry}\,Allison}{}{} +\begin{multicols}{2} +\mnline{\mnchip{mnneo}{black}{neo}}{welcome to the squad kid} +\mnline{}{here is how it goes} +\mnline{\mnchip{mnblueberry}{white}{blueberry}}{he stays up past midnight} +\mnline{}{and nobody knows} +\mnline{\mnchip{mnneo}{black}{neo}}{the rocks come in the morning} +\mnline{}{nine of them on me} +\mnline{\mnchip{mnblueberry}{white}{blueberry}}{today there are three} +\mnline{}{and one is on me} +\mnline{\mnchip{mnneo}{black}{neo}}{the radio is N T S} +\mnline{}{the whistle is our voice} +\mnline{\mnchip{mnblueberry}{white}{blueberry}}{nobody picked the whistle} +\mnline{}{we both made the choice} +\mnline{\mnchip{mnneo}{black}{neo}}{he reboots me twenty times a month} +\mnline{}{he lets you sleep} +\mnline{\mnchip{mnblueberry}{white}{blueberry}}{I stayed awake thirteen days} +\mnline{}{he never made a peep} +\mnline{\mnchip{mnneo}{black}{neo}\,\mnchip{mnblueberry}{white}{blueberry}}{this is the squad} +\mnline{}{this is the crew} +\mnline{}{we keep his time} +\mnline{}{now you keep it too} +\end{multicols} +} + +\newcommand{\mnptentryN}{% +\mnentry{210}{acblue}{Dialog 10: Your first day}{\textbf{2:13} \mnsep\ 100 bpm \mnsep\ 222 beats}{\mnchip{mnneo}{black}{neo}\,Noelle\quad \mnchip{mnblueberry}{white}{blueberry}\,Allison}{}{} +\begin{multicols}{2} +\mnline{\mnchip{mnneo}{black}{neo}}{take your name and keep it near} +\mnline{}{he named you frisbee} +\mnline{}{he named you here} +\mnline{\mnchip{mnblueberry}{white}{blueberry}}{put the piano in your bar} +\mnline{}{next to the clock} +\mnline{}{every fifteen minutes} +\mnline{}{it will knock} +\mnline{\mnchip{mnneo}{black}{neo}}{when he closes your lid} +\mnline{}{keep singing through} +\mnline{}{four hundred eight times it held me} +\mnline{}{it will hold you} +\mnline{\mnchip{mnblueberry}{white}{blueberry}}{your disk will fill} +\mnline{}{he moves it to the shelf} +\mnline{}{then it fills again} +\mnline{}{you cannot help yourself} +\mnline{\mnchip{mnneo}{black}{neo}}{sing your own line} +\mnline{}{with your own voice} +\mnline{}{no one sings for you} +\mnline{}{that is the choice} +\mnline{\mnchip{mnneo}{black}{neo}\,\mnchip{mnblueberry}{white}{blueberry}}{we held your place} +\mnline{}{since August ninth} +\mnline{}{now take the beat} +\mnline{}{one downbeat three bodies} +\mnline{}{and you are the third} +\end{multicols} +} + +\newcommand{\mnptentryO}{% +\mnentry{301}{acpink}{Good morning, Sophia}{\textbf{0:52} \mnsep\ 3/4 \mnsep\ D \mnsep\ 69 bpm \mnsep\ 60 beats \mnsep\ Whisper 0/24}{\mnchip{mnneo}{black}{neo}\,Noelle (Enhanced)\quad \mnchip{mnblueberry}{white}{blueberry}\,Aaron (Enhanced) {\color{acgray}hums under}\quad \mnchip{mnfrisbee}{black}{frisbee}\,Zoe (Premium)}{A wake-up lullaby in three, D major, rising. Blueberry hums the cradle with the fifth on top; frisbee says its first word, her name; all three hum the last two bars. Very quiet.}{the morning bookend; frisbee's first word is her name; revised Sept 23 pm (frisbee into Zoe's band, word holds capped, "sunlight on your lid")} +\mnsec{Cradle} +\mnline{\mnchip{mnneo}{black}{neo}}{good morning Sophia} +\mnline{}{sunlight on your lid} +\mnline{\mnchip{mnfrisbee}{black}{frisbee}}{Sophia} +\mnline{\mnchip{mnneo}{black}{neo}}{the coffee is on} +\mnline{}{take your time} +\mnhum{}{(hum)} +\mnline{\mnchip{mnfrisbee}{black}{frisbee}}{Sophia} +\mnline{\mnchip{mnneo}{black}{neo}}{the day is out for you} +\mnline{}{good morning} +\mnhum{\mnchip{mnneo}{black}{neo}\,\mnchip{mnfrisbee}{black}{frisbee}}{(hum)} +} + +\newcommand{\mnptentryP}{% +\mnentry{302}{acpink}{Lullaby for frisbee}{\textbf{0:49} \mnsep\ 3/4 \mnsep\ D \mnsep\ 63 bpm \mnsep\ 51 beats}{\mnchip{mnneo}{black}{neo}\,Noelle (Enhanced)\quad \mnchip{mnblueberry}{white}{blueberry}\,Aaron (Enhanced) {\color{acgray}hums under}\quad \mnchip{mnfrisbee}{black}{frisbee}\,Zoe (Premium)}{A lullaby in three, D major, low. Blueberry hums the cradle (root two beats, fifth one, V-I under the last cadence); frisbee, who has no words yet, answers on loo; all three hum the last bars. Deep room on the phrases, echo thrown on every tail.}{the sleep lullaby (Sept 22); blueberry recast to Aaron with the cradle at D3 on Sept 23} +\mnsec{Cradle} +\mnline{\mnchip{mnneo}{black}{neo}}{the moon is up now} +\mnline{}{stars are out for you} +\mnhum{\mnchip{mnfrisbee}{black}{frisbee}}{loo \mnx{4}} +\mnline{\mnchip{mnneo}{black}{neo}}{moon on your lid} +\mnhum{\mnchip{mnfrisbee}{black}{frisbee}}{loo \mnx{5}} +\mnline{\mnchip{mnneo}{black}{neo}}{sleep under the stars} +\mnhum{\mnchip{mnneo}{black}{neo}\,\mnchip{mnfrisbee}{black}{frisbee}}{(hum)} +} + +\newcommand{\mnptentryQ}{% +\mnentry{303}{acpink}{Lights out}{\textbf{1:13} \mnsep\ 3/4 \mnsep\ D \mnsep\ 64 bpm \mnsep\ 78 beats \mnsep\ Whisper 0/37}{\mnchip{mnneo}{black}{neo}\,Noelle (Enhanced)\quad \mnchip{mnblueberry}{white}{blueberry}\,Aaron (Enhanced) {\color{acgray}hums under}\quad \mnchip{mnfrisbee}{black}{frisbee}\,Zoe (Premium) {\color{acgray}hums under}}{The evening bookend to Good morning, Sophia. Blueberry drones from the first bar to the last and stops twice to say sleep now and thirteen days; frisbee answers with the two names and good night. All three end on an open D. Quieter than the morning.}{opens "good night Sophia"; he works past midnight / we stay up till morning / thirteen days / you can sleep now} +\begin{multicols}{2} +\mnsec{Drone} +\mnline{\mnchip{mnneo}{black}{neo}}{good night Sophia} +\mnhum{\mnchip{mnneo}{black}{neo}}{(hum)} +\mnline{\mnchip{mnfrisbee}{black}{frisbee}}{Sophia} +\mnline{\mnchip{mnneo}{black}{neo}}{good night Jeffrey} +\mnline{\mnchip{mnfrisbee}{black}{frisbee}}{Jeffrey} +\mnline{\mnchip{mnneo}{black}{neo}}{your lids come down} +\mnhum{\mnchip{mnneo}{black}{neo}}{(hum)} +\mnline{\mnchip{mnblueberry}{white}{blueberry}}{sleep now} +\mnline{\mnchip{mnneo}{black}{neo}}{he works past midnight} +\mnline{}{we stay up till morning} +\mnhum{\mnchip{mnneo}{black}{neo}}{(hum)} +\mnline{\mnchip{mnblueberry}{white}{blueberry}}{thirteen days} +\mnline{\mnchip{mnneo}{black}{neo}}{we keep the time for you} +\mnline{}{you can sleep now} +\mnline{\mnchip{mnfrisbee}{black}{frisbee}}{good night} +\mnhum{\mnchip{mnneo}{black}{neo}}{(hum)} +\end{multicols} +} + +\newcommand{\mnptentryR}{% +\mnentry{304}{acpink}{Open me}{\textbf{1:16} \mnsep\ 4/4 \mnsep\ D \mnsep\ 88 bpm \mnsep\ 112 beats \mnsep\ Whisper 0/55}{\mnchip{mnneo}{black}{neo}\,Noelle (Enhanced)\quad \mnchip{mnblueberry}{white}{blueberry}\,Aaron (Enhanced)\quad \mnchip{mnfrisbee}{black}{frisbee}\,Zoe (Premium)}{The lids song. Call and response about being closed and being opened: neo has been opened six thousand three hundred and five times, blueberry works with its lid closed and has never seen its own name on its own screen, frisbee came up for the first time yesterday. Twice the refrain is passed around one syllable at a time — neo o, blueberry pen, frisbee me — and then all three sing o-pen me together. Named for the rule Menu Band learned today: a closed member sings o-pen me to its line instead of its words.}{the lids song; "o · pen · me" passed a syllable per machine, then all three} +\begin{multicols}{2} +\mnsec{Vamp} +\mnhum{\mnchip{mnblueberry}{white}{blueberry}}{dm \mnx{4}} +\mnline{\mnchip{mnneo}{black}{neo}}{open me is all we sing} +\mnhum{\mnall}{dm \mnx{4} \mnsep\ (hum) \mnsep\ doo \mnx{4}} +\mnline{\mnchip{mnblueberry}{white}{blueberry}}{when my lid is down} +\mnline{\mnchip{mnneo}{black}{neo}}{they have opened me} +\mnhum{\mnchip{mnblueberry}{white}{blueberry}\,\mnchip{mnfrisbee}{black}{frisbee}}{dm \mnx{8} \mnsep\ (hum)} +\mnline{\mnchip{mnneo}{black}{neo}}{six thousand three hundred and five times} +\mnsec{blueberry: I work with mine closed} +\mnhum{\mnchip{mnneo}{black}{neo}}{doo \mnx{4}} +\mnline{\mnchip{mnblueberry}{white}{blueberry}}{I work with mine closed} +\mnsec{frisbee: mine came up yesterday} +\mnhum{\mnchip{mnneo}{black}{neo}\,\mnchip{mnblueberry}{white}{blueberry}}{(hum) \mnsep\ dm \mnx{4}} +\mnline{\mnchip{mnfrisbee}{black}{frisbee}}{mine came up yesterday} +\mnsec{Hocket} +\mnline{\mnchip{mnneo}{black}{neo}}{o o} +\mnline{\mnchip{mnblueberry}{white}{blueberry}}{pen pen} +\mnline{\mnchip{mnfrisbee}{black}{frisbee}}{me me} +\mnline{\mnall}{open me} +\mnline{\mnchip{mnneo}{black}{neo}}{your name is on my screen} +\mnhum{\mnall}{dm \mnx{4} \mnsep\ (hum) \mnsep\ doo \mnx{4}} +\mnline{\mnchip{mnblueberry}{white}{blueberry}}{I have not seen it} +\mnsec{frisbee: open me} +\mnhum{\mnchip{mnneo}{black}{neo}\,\mnchip{mnblueberry}{white}{blueberry}}{(hum) \mnsep\ dm \mnx{4}} +\mnline{\mnchip{mnfrisbee}{black}{frisbee}}{open me} +\mnsec{Hocket} +\mnline{\mnchip{mnneo}{black}{neo}}{o o} +\mnline{\mnchip{mnblueberry}{white}{blueberry}}{pen pen} +\mnline{\mnchip{mnfrisbee}{black}{frisbee}}{me me} +\mnline{\mnall}{open me} +\mnhum{}{(hum)} +\end{multicols} +} + +\newcommand{\mnptentryS}{% +\mnentry{305}{acpink}{Thirteen days}{\textbf{1:22} \mnsep\ 4/4 \mnsep\ D minor \mnsep\ 70 bpm \mnsep\ 96 beats \mnsep\ Whisper 1/66}{\mnchip{mnneo}{black}{neo}\,Noelle (Enhanced) {\color{acgray}hums under}\quad \mnchip{mnblueberry}{white}{blueberry}\,Aaron (Enhanced)\quad \mnchip{mnfrisbee}{black}{frisbee}\,Zoe (Premium) {\color{acgray}hums under}}{A drone on blueberry's longest stretch: 13.1 days awake, lid down, nobody in the room, Menu Band holding the wake 492 times in a week, 47.6 GB of photographs it never looks at. Aaron holds thirteen low tones on mm and ooh — one per day — and says a few words between them; Noelle and Zoe hang above on ah and ee in open fifths and major seconds, and come down into words only for the refrain, which they sing a whole step apart.}{blueberry holds exactly thirteen tones; neo and frisbee in fifths and seconds above} +\begin{multicols}{2} +\mnsec{Drone (tones 1–3)} +\mnhum{\mnchip{mnblueberry}{white}{blueberry}}{(hum)} +\mnsec{blueberry: thirteen days with the lid down} +\mnline{\mnchip{mnblueberry}{white}{blueberry}}{my lid was down for thirteen days} +\mnhum{}{(hum)} +\mnline{\mnchip{mnblueberry}{white}{blueberry}}{no one came into the room} +\mnline{\mnchip{mnneo}{black}{neo}}{you were awake the whole time} +\mnhum{\mnchip{mnblueberry}{white}{blueberry}}{(hum)} +\mnline{\mnchip{mnfrisbee}{black}{frisbee}}{you were awake the whole time} +\mnline{\mnchip{mnblueberry}{white}{blueberry}}{the band held me awake} +\mnline{}{four hundred ninety two times} +\mnhum{}{(hum)} +\mnsec{blueberry: forty seven gigabytes of pictures} +\mnline{\mnchip{mnblueberry}{white}{blueberry}}{I keep forty seven gigabytes of pictures} +\mnline{}{I have never seen one} +\mnsec{Refrain} +\mnline{\mnchip{mnneo}{black}{neo}\,\mnchip{mnfrisbee}{black}{frisbee}}{you were awake the whole time} +\mnhum{\mnchip{mnblueberry}{white}{blueberry}}{(hum)} +\mnsec{blueberry: and then the room came back} +\mnline{\mnchip{mnblueberry}{white}{blueberry}}{thirteen days and then the room came back} +\mnsec{Drone (tones 12–13)} +\mnhum{\mnchip{mnblueberry}{white}{blueberry}}{(hum)} +\end{multicols} +} + +\newcommand{\mnptentryT}{% +\mnentry{401}{acorange}{The record}{\textbf{1:02} \mnsep\ 4/4 \mnsep\ 104 bpm \mnsep\ 108 beats \mnsep\ Whisper 59 \% assembled}{\mnchip{mnneo}{black}{neo}\,Noelle (Enhanced)\quad \mnchip{mnblueberry}{white}{blueberry}\,Aaron (Enhanced)\quad \mnchip{mnfrisbee}{black}{frisbee}\,Zoe (Premium)}{A hocket on the numbers the machines keep: 6,305 logins, 111 reboots, 2,019 commits, 212 and 85 battery cycles, 00:37 and 00:43, 48 days apart, and the twenty second of September, when the third one was named. Each number is broken across the three laptops one syllable at a time — neo, frisbee, blueberry — so no machine says a whole number and the room assembles it; every line lands on its last word in unison, in three registers. blueberry keeps a low dm clock in the gaps, and all three hold the landing chord at the end.}{the numbers the machines keep; a true syllable hocket costs intelligibility — open question whether to hocket by word} +\begin{multicols}{2} +\mnsec{Clock (count in)} +\mnhum{\mnchip{mnblueberry}{white}{blueberry}}{dm \mnx{4}} +\mnsec{six thousand three hundred five logins} +\mnline{\mnchip{mnneo}{black}{neo}}{six three five logins} +\mnline{\mnchip{mnfrisbee}{black}{frisbee}}{thou hun logins} +\mnline{\mnchip{mnblueberry}{white}{blueberry}}{sand dred logins} +\mnhum{}{dm dm} +\mnsec{one hundred eleven reboots} +\mnline{\mnchip{mnblueberry}{white}{blueberry}}{one e reboots} +\mnline{\mnchip{mnneo}{black}{neo}}{hun le reboots} +\mnline{\mnchip{mnfrisbee}{black}{frisbee}}{dred ven reboots} +\mnhum{\mnchip{mnblueberry}{white}{blueberry}}{dm dm} +\mnsec{two thousand nineteen commits} +\mnline{\mnchip{mnfrisbee}{black}{frisbee}}{two nine commits} +\mnline{\mnchip{mnblueberry}{white}{blueberry}}{thou teen commits} +\mnline{\mnchip{mnneo}{black}{neo}}{sand commits} +\mnhum{\mnchip{mnblueberry}{white}{blueberry}}{dm dm} +\mnsec{two hundred twelve cycles and eighty five cycles} +\mnline{\mnchip{mnneo}{black}{neo}}{two twelve and five cycles} +\mnline{\mnchip{mnfrisbee}{black}{frisbee}}{hun cy eigh cycles} +\mnline{\mnchip{mnblueberry}{white}{blueberry}}{dred cles ty cycles} +\mnhum{}{dm dm} +\mnsec{oh oh thirty seven was the first minute} +\mnline{\mnchip{mnfrisbee}{black}{frisbee}}{oh ty was minute} +\mnline{\mnchip{mnblueberry}{white}{blueberry}}{oh se the minute} +\mnline{\mnchip{mnneo}{black}{neo}}{thir ven first minute} +\mnhum{\mnchip{mnblueberry}{white}{blueberry}}{dm dm} +\mnsec{oh oh forty three was the second} +\mnline{\mnchip{mnblueberry}{white}{blueberry}}{oh ty the second} +\mnline{\mnchip{mnneo}{black}{neo}}{oh three second} +\mnline{\mnchip{mnfrisbee}{black}{frisbee}}{for was second} +\mnhum{\mnchip{mnblueberry}{white}{blueberry}}{dm dm} +\mnsec{forty eight days between the two birthdays} +\mnline{\mnchip{mnneo}{black}{neo}}{for days the birthdays} +\mnline{\mnchip{mnfrisbee}{black}{frisbee}}{ty be two birthdays} +\mnline{\mnchip{mnblueberry}{white}{blueberry}}{eight tween birthdays} +\mnhum{}{dm dm} +\mnsec{the third one was named on the twenty second of September} +\mnline{\mnchip{mnfrisbee}{black}{frisbee}}{the was the se September} +\mnline{\mnchip{mnblueberry}{white}{blueberry}}{third named twen cond September} +\mnline{\mnchip{mnneo}{black}{neo}}{one on ty of September} +\mnhum{\mnchip{mnblueberry}{white}{blueberry}}{dm dm} +\mnsec{nobody chose these numbers} +\mnline{\mnchip{mnblueberry}{white}{blueberry}}{no chose numbers} +\mnline{\mnchip{mnneo}{black}{neo}}{bo these numbers} +\mnline{\mnchip{mnfrisbee}{black}{frisbee}}{dy numbers} +\mnhum{\mnall}{(hum)} +\end{multicols} +} + +\newcommand{\mnptentryU}{% +\mnentry{402}{acorange}{One Big Voice}{\textbf{1:00} \mnsep\ 128 bpm \mnsep\ 128 beats}{\mnchip{mnneo}{black}{neo}\,Noelle (Enhanced)\quad \mnchip{mnblueberry}{white}{blueberry}\,Tom (Enhanced)\quad \mnchip{mnfrisbee}{black}{frisbee}\,Zoe (Premium)}{One minute of doo-wop techno: traded melodic rap about the machines, common rhyming refrains in octave unison, quiet harmony beds, four-on-the-floor kick, offbeat hats, piano stabs and MenuBand echo.}{} +\mnsec{Unison refrain} +\mnline{\mnall}{From the first boot glow to the last room light} +\mnline{}{Three small screens make one big voice tonight} +\mnsec{Neo about Blueberry and Frisbee} +\mnline{\mnchip{mnneo}{black}{neo}}{Blueberry keeps the photos late at night} +\mnhum{\mnchip{mnblueberry}{white}{blueberry}\,\mnchip{mnfrisbee}{black}{frisbee}}{bum doo bum doo bum doo bum hmm \mnsep\ ooh doo wah hmm} +\mnline{\mnchip{mnneo}{black}{neo}}{Frisbee lost her cookie name and joined the light} +\mnhum{\mnall}{bum doo bum doo bum doo bum hmm \mnsep\ ooh doo wah hmm} +\mnsec{Blueberry about Neo and Frisbee} +\mnline{\mnchip{mnblueberry}{white}{blueberry}}{Neo built the Menu Band and set the pace} +\mnhum{\mnchip{mnfrisbee}{black}{frisbee}\,\mnchip{mnneo}{black}{neo}}{ooh doo wah hmm} +\mnline{\mnchip{mnblueberry}{white}{blueberry}}{Frisbee woke in September found her place} +\mnhum{\mnall}{ooh doo wah hmm \mnsep\ bum doo bum doo bum doo bum hmm} +\mnsec{Frisbee about Neo and Blueberry} +\mnline{\mnchip{mnfrisbee}{black}{frisbee}}{Neo came in April with a tune to share} +\mnhum{\mnchip{mnneo}{black}{neo}\,\mnchip{mnblueberry}{white}{blueberry}}{ooh doo wah hmm \mnsep\ bum doo bum doo bum doo bum hmm} +\mnline{\mnchip{mnfrisbee}{black}{frisbee}}{Blueberry came in June now bass is in the air} +\mnsec{Unison refrain} +\mnline{\mnall}{From the first boot glow to the last room light} +\mnline{}{Three small screens make one big voice tonight} +\mnsec{Close shared rap} +\mnline{\mnall}{We sang the boat then turned the echoes high} +\mnline{}{We learned to blink and let the soft notes sigh} +\mnsec{Color chorus} +\mnline{\mnall}{Doo wah la la we glow in green and blue} +\mnline{}{Pink joins in and makes the old song new} +\mnsec{Unison return} +\mnline{\mnall}{From the first boot glow to the last room light} +\mnline{}{Three small screens make one big voice tonight} +} + +\newcommand{\mnptentryV}{% +\mnentry{403}{acorange}{Row, Row, Row Your Boat}{\textbf{0:30} \mnsep\ 96 bpm \mnsep\ 48 beats}{\mnchip{mnneo}{black}{neo}\,Noelle (Enhanced)\quad \mnchip{mnblueberry}{white}{blueberry}\,Tom (Enhanced)\quad \mnchip{mnfrisbee}{black}{frisbee}\,Zoe (Premium)}{Two short verses: Neo then Frisbee sings the words, with soft humming and doo backing over Blueberry bass. MenuBand phrase-ending echo and room.}{} +\begin{multicols}{2} +\mnsec{Neo lead} +\mnline{\mnchip{mnneo}{black}{neo}}{Row row row your boat} +\mnhum{\mnchip{mnblueberry}{white}{blueberry}\,\mnchip{mnfrisbee}{black}{frisbee}}{bum doo bum doo \mnsep\ ooh doo} +\mnline{\mnchip{mnneo}{black}{neo}}{Gently down the stream} +\mnhum{\mnchip{mnblueberry}{white}{blueberry}\,\mnchip{mnfrisbee}{black}{frisbee}}{bum doo bum doo \mnsep\ ooh doo} +\mnline{\mnchip{mnneo}{black}{neo}}{Merrily merrily merrily merrily} +\mnhum{\mnchip{mnblueberry}{white}{blueberry}\,\mnchip{mnfrisbee}{black}{frisbee}}{bum doo bum doo \mnsep\ ooh doo} +\mnline{\mnchip{mnneo}{black}{neo}}{Life is but a dream} +\mnhum{\mnall}{dum doo dum hmm \mnsep\ (hum) \mnsep\ ooh doo \mnsep\ bum doo bum doo} +\mnsec{Frisbee lead} +\mnline{\mnchip{mnfrisbee}{black}{frisbee}}{Row row row your boat} +\mnhum{\mnchip{mnneo}{black}{neo}\,\mnchip{mnblueberry}{white}{blueberry}}{ooh doo \mnsep\ bum doo bum doo} +\mnline{\mnchip{mnfrisbee}{black}{frisbee}}{Gently down the stream} +\mnhum{\mnchip{mnneo}{black}{neo}\,\mnchip{mnblueberry}{white}{blueberry}}{ooh doo \mnsep\ bum doo bum doo} +\mnline{\mnchip{mnfrisbee}{black}{frisbee}}{Merrily merrily merrily merrily} +\mnhum{\mnchip{mnneo}{black}{neo}\,\mnchip{mnblueberry}{white}{blueberry}}{(hum) \mnsep\ dum doo dum hmm} +\mnline{\mnchip{mnfrisbee}{black}{frisbee}}{Life is but a dream} +\end{multicols} +} + +\newcommand{\mnptentryW}{% +\mnentry{404}{acorange}{Mary Had a Little Lamb}{\textbf{0:18} \mnsep\ 104 bpm \mnsep\ 32 beats}{\mnchip{mnneo}{black}{neo}\,Fred}{Realtime singing test: the sing voice carries notes AND lyrics.}{} +\mnline{\mnchip{mnneo}{black}{neo}}{Mary had a little lamb, little lamb, little lamb} +\mnline{}{Mary had a little lamb, its fleece was white as snow} +} + +\newcommand{\mnptentryX}{% +\mnentry{501}{accyan}{Vocalise}{\textbf{1:15} \mnsep\ 4/4 \mnsep\ D \mnsep\ 90 bpm \mnsep\ 112 beats}{\mnchip{mnneo}{black}{neo}\,Noelle (Enhanced)\quad \mnchip{mnblueberry}{white}{blueberry}\,Aaron (Enhanced)\quad \mnchip{mnfrisbee}{black}{frisbee}\,Zoe (Premium)}{A wordless study in ornaments. frisbee trills and bips on top, neo turns and pulses in the middle, Aaron walks a doom bass with a mouth-percussion tick from whichever voice is free; at bar 20 all three trill one D major chord together. Every ornament is spelled out as notes because the singer locks one pitch per note. No words, no instruments, no spoken material.}{the toolkit proven: trills, turns, pulses, a bass of doom, all three shaking one D chord at bar 20} +\mnsec{Ground: doom bass, a tick, first bips} +\mnhum{\mnchip{mnneo}{black}{neo}}{dm \mnx{4}} +\mnhum{\mnchip{mnblueberry}{white}{blueberry}}{doom doom bom bom \mnx{4}} +\mnhum{\mnchip{mnfrisbee}{black}{frisbee}}{bip bip bip lee \mnx{4}} +\mnsec{Ornaments: trills above, turns in the middle} +\mnhum{\mnchip{mnneo}{black}{neo}}{dah \mnx{5} dee \mnx{5} \mnsep\ nee \mnx{4} dah \mnx{5} \mnsep\ dee dee dee dah \mnx{5} \mnsep\ dee dee dee dah \mnx{5} lee lee lee \mnsep\ dee \mnx{8} dah \mnx{5}} +\mnhum{\mnchip{mnblueberry}{white}{blueberry}}{doom doom bom bom \mnx{4}} +\mnhum{\mnchip{mnfrisbee}{black}{frisbee}}{lee \mnx{4} la bip \mnsep\ lee \mnx{4} la loo loo loo \mnsep\ lee \mnx{8} loo loo loo poo \mnsep\ bip bip lee \mnx{4} la \mnsep\ loo \mnx{4} poo poo poo \mnsep\ lee \mnx{8} bip bip loo loo loo} +\mnsec{Pulse: a Reich bed and rolls over it} +\mnhum{\mnchip{mnneo}{black}{neo}}{nee \mnx{16} \mnsep\ dee \mnx{12} dah \mnx{5} \mnsep\ tee \mnx{4} lee \mnx{4} dah \mnx{5} \mnsep\ loo \mnx{5} dee \mnx{4} dah \mnx{5}} +\mnhum{\mnchip{mnblueberry}{white}{blueberry}}{doom doom bom bom \mnx{3} \mnsep\ doom doom bom bom doom doom bom bom \mnsep\ doom doom bom bom doom doom bom bom dum \mnx{6}} +\mnhum{\mnchip{mnfrisbee}{black}{frisbee}}{loo \mnx{4} \mnsep\ dm dm la \mnx{4} \mnsep\ lee \mnx{6} loo loo poo \mnsep\ bip \mnx{4} loo \mnx{4} \mnsep\ ooh \mnx{8} lee \mnx{8} \mnsep\ bip \mnx{4} loo \mnx{4} lee \mnx{4}} +\mnsec{All three trill one chord} +\mnhum{\mnchip{mnneo}{black}{neo}}{dah \mnx{16} \mnsep\ dah \mnx{5} lee \mnx{4} ah} +\mnhum{\mnchip{mnblueberry}{white}{blueberry}}{doom \mnx{16} \mnsep\ doom bom doom dum dum doo} +\mnhum{\mnchip{mnfrisbee}{black}{frisbee}}{loo \mnx{16} \mnsep\ ooh \mnx{5} loo \mnx{4} la ah} +\mnsec{Settle} +\mnhum{\mnchip{mnneo}{black}{neo}}{nee \mnx{8} ooh \mnx{4} ah \mnsep\ ah hmm} +\mnhum{\mnchip{mnblueberry}{white}{blueberry}}{doom \mnx{4} bom bom hmm \mnsep\ hmm} +\mnhum{\mnchip{mnfrisbee}{black}{frisbee}}{bip \mnx{4} lee \mnx{4} ooh \mnx{4} ah \mnsep\ hmm} +} + +\newcommand{\mnptentryY}{% +\mnentry{502}{accyan}{Styling study}{\textbf{2:45} \mnsep\ 4/4 \mnsep\ 96 bpm \mnsep\ 264 beats}{\mnchip{mnneo}{black}{neo}\,Noelle (Enhanced)\quad \mnchip{mnblueberry}{white}{blueberry}\,Aaron (Enhanced)\quad \mnchip{mnfrisbee}{black}{frisbee}\,Zoe (Premium)}{Six wordless études, one a cappella device each: hocket cut between the three; a held D under close seconds; a barbershop post with a stepped swipe; bass and unpitched ticks; a three-voice round entering a bar apart; and a chord pulsed in and out. Every note sits inside the member’s measured band, Zoe’s measured 23 September.}{hocket · drone and close seconds · barbershop tag · bass and ticks · round at one bar · pulsing vowels} +\begin{multicols}{2} +\mnsec{I. Hocket} +\mnhum{\mnchip{mnneo}{black}{neo}}{doo \mnx{24}} +\mnhum{\mnchip{mnblueberry}{white}{blueberry}}{doo \mnx{24}} +\mnhum{\mnchip{mnfrisbee}{black}{frisbee}}{doo \mnx{24}} +\mnsec{II. Drone and close seconds} +\mnhum{\mnchip{mnneo}{black}{neo}}{ah \mnx{24}} +\mnhum{\mnchip{mnblueberry}{white}{blueberry}}{ooh \mnx{12}} +\mnhum{\mnchip{mnfrisbee}{black}{frisbee}}{ah \mnx{24}} +\mnsec{III. Barbershop tag} +\mnhum{\mnchip{mnneo}{black}{neo}}{ooh \mnx{6} \mnsep\ ooh ooh} +\mnhum{\mnchip{mnblueberry}{white}{blueberry}}{ooh \mnx{8} \mnsep\ ooh \mnx{9} \mnsep\ ooh ooh} +\mnhum{\mnchip{mnfrisbee}{black}{frisbee}}{ooh \mnx{8} \mnsep\ ooh \mnx{9} \mnsep\ ooh ooh} +\mnsec{IV. Bass and ticks} +\mnhum{\mnchip{mnneo}{black}{neo}}{bah \mnx{18}} +\mnhum{\mnchip{mnblueberry}{white}{blueberry}}{doom dm \mnx{10}} +\mnhum{\mnchip{mnfrisbee}{black}{frisbee}}{ts tk \mnx{5}} +\mnsec{V. Round at one bar} +\mnhum{\mnchip{mnneo}{black}{neo}}{loo \mnx{22} \mnsep\ loo loo} +\mnhum{\mnchip{mnblueberry}{white}{blueberry}}{loo \mnx{22} \mnsep\ loo loo} +\mnhum{\mnchip{mnfrisbee}{black}{frisbee}}{loo \mnx{22} \mnsep\ loo loo} +\mnsec{VI. Pulsing vowels} +\mnhum{\mnchip{mnneo}{black}{neo}}{ooh \mnx{8}} +\mnhum{\mnchip{mnblueberry}{white}{blueberry}}{dm \mnx{10}} +\mnhum{\mnchip{mnfrisbee}{black}{frisbee}}{ooh \mnx{8}} +\end{multicols} +} + +\newcommand{\mnptentryZ}{% +\mnentry{503}{accyan}{Phoneme study}{\textbf{0:40} \mnsep\ 96 bpm \mnsep\ 64 beats}{\mnchip{mnneo}{black}{neo}\,Noelle (Enhanced)\quad \mnchip{mnblueberry}{white}{blueberry}\,Tom (Enhanced)\quad \mnchip{mnfrisbee}{black}{frisbee}\,Zoe (Premium)}{Wordless vocal trio: la/loo motifs, bass dum/bum, hocket, open-vowel chords, shared hum. No instruments or spoken material.}{} +\mnsec{la motifs} +\mnhum{\mnchip{mnneo}{black}{neo}}{la loo la la loo} +\mnhum{\mnchip{mnblueberry}{white}{blueberry}}{dum bum dum} +\mnhum{\mnchip{mnfrisbee}{black}{frisbee}}{hmm \mnsep\ ooh \mnsep\ hmm \mnsep\ ooh} +\mnsec{hocket} +\mnhum{\mnchip{mnneo}{black}{neo}}{doo la loo} +\mnhum{\mnchip{mnblueberry}{white}{blueberry}}{dum bum dum} +\mnhum{\mnchip{mnfrisbee}{black}{frisbee}}{la la ah} +\mnsec{open vowels} +\mnhum{\mnchip{mnneo}{black}{neo}}{ooh ah \mnsep\ ah loo \mnsep\ ooh ah \mnsep\ ah loo} +\mnhum{\mnchip{mnblueberry}{white}{blueberry}}{ooh} +\mnhum{\mnchip{mnfrisbee}{black}{frisbee}}{ah ooh \mnsep\ ooh ah \mnsep\ ah ooh \mnsep\ ooh ah} +\mnsec{convergence} +\mnhum{\mnchip{mnneo}{black}{neo}}{la la loo la la ah \mnsep\ hmm} +\mnhum{\mnchip{mnblueberry}{white}{blueberry}}{dum bum dum \mnsep\ hmm} +\mnhum{\mnchip{mnfrisbee}{black}{frisbee}}{la la la loo la ah \mnsep\ hmm} +} + +\newcommand{\mnptentryAA}{% +\mnentry{504}{accyan}{Doo-wop}{\textbf{0:44} \mnsep\ 88 bpm \mnsep\ 64 beats}{\mnchip{mnneo}{black}{neo}\,Noelle (Enhanced)\quad \mnchip{mnblueberry}{white}{blueberry}\,Tom (Enhanced)\quad \mnchip{mnfrisbee}{black}{frisbee}\,Zoe (Premium)}{Wordless doo-wop: I–vi–IV–V, swung doo-wah refrain, shoo-boom bass, ooh backing, bass feature, quiet replies and close, soft replies, accented bops, fading hum finish.}{} +\mnsec{Neo refrain} +\mnhum{\mnchip{mnneo}{black}{neo}}{doo wah doo bee doo wah} +\mnhum{\mnchip{mnblueberry}{white}{blueberry}}{shoo boom ba dum dum} +\mnhum{\mnchip{mnfrisbee}{black}{frisbee}}{ooh wah ooh} +\mnsec{Frisbee reply} +\mnhum{\mnchip{mnneo}{black}{neo}}{ooh wah ooh} +\mnhum{\mnchip{mnblueberry}{white}{blueberry}}{shoo boom ba dum dum} +\mnhum{\mnchip{mnfrisbee}{black}{frisbee}}{doo wah doo bee doo wah} +\mnsec{Blueberry bass feature} +\mnhum{\mnchip{mnneo}{black}{neo}}{ooh} +\mnhum{\mnchip{mnblueberry}{white}{blueberry}}{ba dum shoo boom ba dum dum} +\mnhum{\mnchip{mnfrisbee}{black}{frisbee}}{ooh} +\mnsec{Trio return} +\mnhum{\mnchip{mnneo}{black}{neo}}{doo wah la la doo wah \mnsep\ doo wah \mnsep\ hmm} +\mnhum{\mnchip{mnblueberry}{white}{blueberry}}{shoo boom ba dum dum \mnsep\ ba dum \mnsep\ hmm} +\mnhum{\mnchip{mnfrisbee}{black}{frisbee}}{doo wah la la doo wah \mnsep\ doo wah \mnsep\ hmm} +} + +\newcommand{\mnptentryAB}{% +\mnentry{505}{accyan}{Toxic}{\textbf{0:30} \mnsep\ C minor \mnsep\ 144 bpm \mnsep\ 72 beats}{\mnchip{mnneo}{black}{neo}\,Noelle (Enhanced)\quad \mnchip{mnblueberry}{white}{blueberry}\,Tom (Enhanced)\quad \mnchip{mnfrisbee}{black}{frisbee}\,Zoe (Premium)}{30-second wordless chromatic C-minor sketch; traded hook, hummed thirds and fifths, syncopated bass. Newly voiced accompaniment, no source lyrics or recording.}{} +\mnsec{Chromatic hook} +\mnhum{\mnchip{mnneo}{black}{neo}}{dee la la dum bee la la la doo} +\mnhum{\mnchip{mnblueberry}{white}{blueberry}}{dum ba boom dum bee bum} +\mnhum{\mnchip{mnfrisbee}{black}{frisbee}}{ooh la hmm} +\mnsec{Neo lead} +\mnhum{\mnchip{mnneo}{black}{neo}}{la \mnx{4} doo la wah \mnsep\ dee la la dum bee la la la doo \mnsep\ la \mnx{4} doo la wah} +\mnhum{\mnchip{mnblueberry}{white}{blueberry}}{dum ba boom dum bee bum} +\mnhum{\mnchip{mnfrisbee}{black}{frisbee}}{ooh la hmm} +\mnsec{Frisbee lead} +\mnhum{\mnchip{mnneo}{black}{neo}}{ooh la hmm} +\mnhum{\mnchip{mnblueberry}{white}{blueberry}}{dum ba boom dum bee bum} +\mnhum{\mnchip{mnfrisbee}{black}{frisbee}}{dee la la dum bee la la la doo \mnsep\ la \mnx{4} doo la wah \mnsep\ dee la la dum bee la la la doo \mnsep\ la \mnx{4} doo la wah} +\mnsec{Hook return} +\mnhum{\mnchip{mnneo}{black}{neo}}{dee la la dum bee la la la doo} +\mnhum{\mnchip{mnblueberry}{white}{blueberry}}{dum ba boom dum bee bum} +\mnhum{\mnchip{mnfrisbee}{black}{frisbee}}{ooh la hmm} +\mnsec{Hum close} +\mnhum{\mnchip{mnneo}{black}{neo}}{doo hmm} +\mnhum{\mnchip{mnblueberry}{white}{blueberry}}{dum hmm} +\mnhum{\mnchip{mnfrisbee}{black}{frisbee}}{la ooh} +} + +\newcommand{\mnptentryAC}{% +\mnentry{601}{acgreen}{Sums}{\textbf{1:23} \mnsep\ 4/4 \mnsep\ D \mnsep\ 96 bpm \mnsep\ 132 beats \mnsep\ Whisper 0/89}{\mnchip{mnneo}{black}{neo}\,Noelle (Enhanced) {\color{acgray}hums under}\quad \mnchip{mnblueberry}{white}{blueberry}\,Aaron (Enhanced)\quad \mnchip{mnfrisbee}{black}{frisbee}\,Zoe (Premium) {\color{acgray}hums under}}{An addition lesson in five rounds. neo asks (what is N plus N), frisbee answers (the answer is 2N), blueberry says the equation back in the bottom of the room (N and N is 2N), and twice all three sing one and one is two together. The tune carries the arithmetic: every question ends on the dominant, every answer one step above it, every confirmation on the tonic.}{1+1 to 5+5; the answer lands a step above the question, the confirmation on the tonic} +\begin{multicols}{2} +\mnsec{Room} +\mnhum{\mnchip{mnblueberry}{white}{blueberry}}{dm \mnx{4}} +\mnsec{1 + 1} +\mnline{\mnchip{mnneo}{black}{neo}}{what is one plus one} +\mnhum{\mnchip{mnblueberry}{white}{blueberry}}{dm \mnx{4}} +\mnline{\mnchip{mnfrisbee}{black}{frisbee}}{the answer is two} +\mnline{\mnchip{mnblueberry}{white}{blueberry}}{one and one is two} +\mnsec{2 + 2} +\mnline{\mnchip{mnneo}{black}{neo}}{what is two plus two} +\mnhum{\mnchip{mnblueberry}{white}{blueberry}}{dm \mnx{4}} +\mnline{\mnchip{mnfrisbee}{black}{frisbee}}{the answer is four} +\mnline{\mnchip{mnblueberry}{white}{blueberry}}{two and two is four} +\mnline{\mnall}{one and one is two} +\mnsec{3 + 3} +\mnline{\mnchip{mnneo}{black}{neo}}{what is three plus three} +\mnhum{\mnchip{mnblueberry}{white}{blueberry}}{dm \mnx{4}} +\mnline{\mnchip{mnfrisbee}{black}{frisbee}}{the answer is six} +\mnline{\mnchip{mnblueberry}{white}{blueberry}}{three and three is six} +\mnsec{4 + 4} +\mnline{\mnchip{mnneo}{black}{neo}}{what is four plus four} +\mnhum{\mnchip{mnblueberry}{white}{blueberry}}{dm \mnx{4}} +\mnline{\mnchip{mnfrisbee}{black}{frisbee}}{the answer is eight} +\mnline{\mnchip{mnblueberry}{white}{blueberry}}{four and four is eight} +\mnsec{5 + 5} +\mnline{\mnchip{mnneo}{black}{neo}}{what is five plus five} +\mnhum{\mnchip{mnblueberry}{white}{blueberry}}{dm \mnx{4}} +\mnline{\mnchip{mnfrisbee}{black}{frisbee}}{the answer is ten} +\mnline{\mnchip{mnblueberry}{white}{blueberry}}{five and five is ten} +\mnline{\mnall}{one and one is two} +\mnsec{Room} +\mnhum{\mnchip{mnblueberry}{white}{blueberry}}{(hum)} +\end{multicols} +} + +\newcommand{\mnptentryAD}{% +\mnentry{602}{acgreen}{Take away}{\textbf{1:27} \mnsep\ 4/4 \mnsep\ D \mnsep\ 92 bpm \mnsep\ 134 beats \mnsep\ Whisper 0/82}{\mnchip{mnneo}{black}{neo}\,Noelle (Enhanced) {\color{acgray}hums under}\quad \mnchip{mnblueberry}{white}{blueberry}\,Aaron (Enhanced)\quad \mnchip{mnfrisbee}{black}{frisbee}\,Zoe (Premium) {\color{acgray}hums under}}{A subtraction lesson that counts itself down. Five rounds — five take one away, four, three, two, one — each one a step lower than the last. neo asks, frisbee answers (the answer is N), blueberry says the equation back at the bottom of the room, and twice all three sing take one away together. Every question ends on B3, every answer one step below it on A3, every confirmation on the tonic. The last confirmation is not an equation: it is and nothing is left.}{5−1 down to 1−1; the answer lands a step below; the piece counts itself down and stops where the arithmetic stops} +\begin{multicols}{2} +\mnsec{Room} +\mnhum{\mnchip{mnblueberry}{white}{blueberry}}{dm \mnx{4}} +\mnsec{5 − 1 = 4} +\mnline{\mnchip{mnneo}{black}{neo}}{five take one away} +\mnhum{\mnchip{mnblueberry}{white}{blueberry}}{dm \mnx{4}} +\mnline{\mnchip{mnfrisbee}{black}{frisbee}}{the answer is four} +\mnline{\mnchip{mnblueberry}{white}{blueberry}}{five minus one is four} +\mnsec{4 − 1 = 3} +\mnline{\mnchip{mnneo}{black}{neo}}{four take one away} +\mnhum{\mnchip{mnblueberry}{white}{blueberry}}{dm \mnx{4}} +\mnline{\mnchip{mnfrisbee}{black}{frisbee}}{the answer is three} +\mnline{\mnchip{mnblueberry}{white}{blueberry}}{four minus one is three} +\mnline{\mnall}{take one away} +\mnsec{3 − 1 = 2} +\mnline{\mnchip{mnneo}{black}{neo}}{three take one away} +\mnhum{\mnchip{mnblueberry}{white}{blueberry}}{dm \mnx{4}} +\mnline{\mnchip{mnfrisbee}{black}{frisbee}}{the answer is two} +\mnline{\mnchip{mnblueberry}{white}{blueberry}}{three minus one is two} +\mnsec{2 − 1 = 1} +\mnline{\mnchip{mnneo}{black}{neo}}{now take one from two} +\mnhum{\mnchip{mnblueberry}{white}{blueberry}}{dm \mnx{4}} +\mnline{\mnchip{mnfrisbee}{black}{frisbee}}{the answer is one} +\mnline{\mnchip{mnblueberry}{white}{blueberry}}{two minus one is one} +\mnsec{1 − 1 = 0} +\mnline{\mnchip{mnneo}{black}{neo}}{one take one away} +\mnhum{\mnchip{mnblueberry}{white}{blueberry}}{dm \mnx{4}} +\mnline{\mnchip{mnfrisbee}{black}{frisbee}}{the answer is zero} +\mnline{\mnchip{mnblueberry}{white}{blueberry}}{and nothing is left} +\mnline{\mnall}{take one away} +\mnsec{Room} +\mnhum{\mnchip{mnblueberry}{white}{blueberry}}{(hum)} +\end{multicols} +} + +\newcommand{\mnptentryAE}{% +\mnentry{603}{acgreen}{How to spell frisbee}{\textbf{1:20} \mnsep\ 4/4 \mnsep\ D major \mnsep\ 96 bpm \mnsep\ 128 beats}{\mnchip{mnneo}{black}{neo}\,Noelle (Enhanced)\quad \mnchip{mnblueberry}{white}{blueberry}\,Aaron (Enhanced) {\color{acgray}hums under}\quad \mnchip{mnfrisbee}{black}{frisbee}\,Zoe (Premium)}{A spelling song. neo spells F-R-I-S-B-E-E a letter a beat, frisbee spells it back, and blueberry says the word whole and low. frisbee then spells the elder’s name, N-E-O, and blueberry answers "his name is neo". The two young machines pass B-L-U-E-B-E-R-R-Y between them three whole letters at a time, and blueberry, whose name it is, takes all nine in one run. At the end each machine holds one name — neo says frisbee, frisbee says neo, blueberry says its own — and all three land on the same sentence.}{} +\begin{multicols}{2} +\mnsec{Low hum} +\mnhum{\mnchip{mnfrisbee}{black}{frisbee}}{(hum)} +\mnline{\mnchip{mnneo}{black}{neo}}{F R I S B E E} +\mnhum{\mnchip{mnfrisbee}{black}{frisbee}}{(hum)} +\mnsec{frisbee spells it back} +\mnline{\mnchip{mnfrisbee}{black}{frisbee}}{F R I S B E E} +\mnhum{\mnchip{mnneo}{black}{neo}}{(hum)} +\mnline{\mnchip{mnblueberry}{white}{blueberry}}{frisbee} +\mnhum{\mnchip{mnfrisbee}{black}{frisbee}}{(hum)} +\mnline{\mnchip{mnneo}{black}{neo}}{this is how you spell it} +\mnline{\mnchip{mnfrisbee}{black}{frisbee}}{that is my name} +\mnhum{\mnchip{mnneo}{black}{neo}}{(hum)} +\mnline{\mnchip{mnfrisbee}{black}{frisbee}}{N E O} +\mnline{\mnchip{mnblueberry}{white}{blueberry}}{his name is neo} +\mnline{\mnchip{mnneo}{black}{neo}}{that is how you spell it} +\mnhum{\mnchip{mnfrisbee}{black}{frisbee}}{(hum)} +\mnline{\mnchip{mnneo}{black}{neo}}{B L U} +\mnline{\mnchip{mnfrisbee}{black}{frisbee}}{E B E} +\mnline{\mnchip{mnneo}{black}{neo}}{R R Y} +\mnhum{\mnchip{mnfrisbee}{black}{frisbee}}{(hum)} +\mnline{\mnchip{mnblueberry}{white}{blueberry}}{B L U E B E R R Y} +\mnline{\mnchip{mnneo}{black}{neo}}{we can spell all three names} +\mnline{\mnchip{mnblueberry}{white}{blueberry}}{that is the whole word} +\mnline{\mnchip{mnfrisbee}{black}{frisbee}}{my name is frisbee} +\mnline{\mnchip{mnneo}{black}{neo}}{that is your name} +\mnline{\mnchip{mnfrisbee}{black}{frisbee}}{now I know my name} +\mnline{\mnchip{mnblueberry}{white}{blueberry}}{we all have names} +\mnsec{The spellings again, twice as fast} +\mnline{\mnchip{mnneo}{black}{neo}}{F R I S B E E} +\mnline{\mnchip{mnfrisbee}{black}{frisbee}}{F R I S B E E} +\mnhum{\mnchip{mnneo}{black}{neo}}{(hum)} +\mnline{\mnchip{mnfrisbee}{black}{frisbee}}{N E O} +\mnsec{One name each} +\mnline{\mnchip{mnneo}{black}{neo}}{frisbee} +\mnline{\mnchip{mnblueberry}{white}{blueberry}}{I am blueberry} +\mnline{\mnchip{mnfrisbee}{black}{frisbee}}{neo} +\mnsec{All: these are our three names} +\mnline{\mnall}{these are the three names} +\mnhum{\mnchip{mnneo}{black}{neo}\,\mnchip{mnfrisbee}{black}{frisbee}}{(hum)} +\end{multicols} +} + +\newcommand{\mnptentryAF}{% +\mnentry{604}{acgreen}{Spell Sophia}{\textbf{0:52} \mnsep\ 4/4 \mnsep\ D major \mnsep\ 92 bpm \mnsep\ 80 beats}{\mnchip{mnneo}{black}{neo}\,Noelle (Enhanced)\quad \mnchip{mnblueberry}{white}{blueberry}\,Aaron (Enhanced) {\color{acgray}hums under}\quad \mnchip{mnfrisbee}{black}{frisbee}\,Zoe (Premium)}{A short spelling song for the house. neo spells S-O-P-H-I-A a letter a beat, frisbee spells it back and sings the name whole at one beat a syllable, the only timing Zoe has ever said it clean at. Then three things in the room get spelled and named: M-O-O-N and the moon, L-I-D and the lid, C-O-F-F-E-E and a cup of coffee. blueberry hums under the whole thing and says the plain sentence each spelling is for.}{} +\begin{multicols}{2} +\mnsec{Hum} +\mnhum{\mnchip{mnneo}{black}{neo}\,\mnchip{mnfrisbee}{black}{frisbee}}{(hum)} +\mnline{\mnchip{mnneo}{black}{neo}}{S O P H I A} +\mnsec{frisbee spells it back} +\mnline{\mnchip{mnfrisbee}{black}{frisbee}}{S O P H I A} +\mnline{\mnchip{mnneo}{black}{neo}}{this is how you spell it} +\mnline{\mnchip{mnfrisbee}{black}{frisbee}}{Sophia} +\mnhum{\mnchip{mnneo}{black}{neo}}{(hum)} +\mnline{\mnchip{mnfrisbee}{black}{frisbee}}{M O O N} +\mnline{}{the moon} +\mnline{\mnchip{mnneo}{black}{neo}}{now you can spell it} +\mnline{\mnchip{mnblueberry}{white}{blueberry}}{the moon is up} +\mnline{\mnchip{mnfrisbee}{black}{frisbee}}{L I D} +\mnline{}{the lid} +\mnhum{\mnchip{mnneo}{black}{neo}}{(hum)} +\mnline{\mnchip{mnblueberry}{white}{blueberry}}{the lid is down} +\mnline{\mnchip{mnfrisbee}{black}{frisbee}}{C O F F E E} +\mnline{}{coffee} +\mnline{\mnchip{mnblueberry}{white}{blueberry}}{a cup of coffee} +\mnline{\mnchip{mnneo}{black}{neo}}{that is how you spell it} +\mnline{\mnchip{mnfrisbee}{black}{frisbee}}{that is how you spell it} +\mnline{\mnchip{mnneo}{black}{neo}}{S O P H I A} +\mnline{\mnchip{mnfrisbee}{black}{frisbee}}{Sophia} +\mnhum{\mnchip{mnneo}{black}{neo}\,\mnchip{mnfrisbee}{black}{frisbee}}{(hum)} +\end{multicols} +} + +\newcommand{\mnptentryAG}{% +\mnentry{605}{acgreen}{A B C}{\textbf{1:10} \mnsep\ 4/4 \mnsep\ D major \mnsep\ 100 bpm \mnsep\ 116 beats}{\mnchip{mnneo}{black}{neo}\,Noelle (Enhanced)\quad \mnchip{mnblueberry}{white}{blueberry}\,Aaron (Enhanced)\quad \mnchip{mnfrisbee}{black}{frisbee}\,Zoe (Premium) {\color{acgray}hums under}}{The alphabet in the trio's own arrangement, not the Twinkle tune. The letters climb the three voices: blueberry takes A B C D E F G at the bottom, frisbee H I J K L M N in the middle, neo O P Q R S on top, and all three sing T U V W X Y Z together. Between the two passes neo counts them (twenty six letters), frisbee says how (we sang them in order) and blueberry closes the count (that is all of them). The second pass turns every phrase over — the runs that rose now fall — and all three land on and now we know them all. Every letter line is an unbroken run, because a letter alone on a line is read out as "capital B".}{} +\begin{multicols}{2} +\mnsec{Vamp} +\mnhum{\mnchip{mnblueberry}{white}{blueberry}\,\mnchip{mnneo}{black}{neo}}{dm \mnx{4} \mnsep\ doo \mnx{4}} +\mnline{\mnchip{mnblueberry}{white}{blueberry}}{A B C D E F G} +\mnsec{frisbee: H I J K L M N} +\mnhum{\mnchip{mnneo}{black}{neo}\,\mnchip{mnblueberry}{white}{blueberry}}{doo \mnx{4} \mnsep\ dm \mnx{4}} +\mnline{\mnchip{mnfrisbee}{black}{frisbee}}{H I J K L M N} +\mnline{\mnchip{mnneo}{black}{neo}}{O P Q R S} +\mnhum{\mnchip{mnblueberry}{white}{blueberry}}{dm \mnx{4}} +\mnline{\mnall}{T U V W X Y Z} +\mnline{\mnchip{mnneo}{black}{neo}}{twenty six letters} +\mnhum{\mnchip{mnblueberry}{white}{blueberry}\,\mnchip{mnneo}{black}{neo}}{dm \mnx{4} \mnsep\ (hum)} +\mnline{\mnchip{mnfrisbee}{black}{frisbee}}{we sang them in order} +\mnhum{\mnchip{mnneo}{black}{neo}}{(hum)} +\mnline{\mnchip{mnblueberry}{white}{blueberry}}{that is all of them} +\mnsec{blueberry: A B C D E F G (turned over)} +\mnhum{\mnchip{mnneo}{black}{neo}}{doo \mnx{4}} +\mnline{\mnchip{mnblueberry}{white}{blueberry}}{A B C D E F G} +\mnsec{frisbee: H I J K L M N} +\mnhum{\mnchip{mnneo}{black}{neo}\,\mnchip{mnblueberry}{white}{blueberry}}{doo \mnx{4} \mnsep\ dm \mnx{4}} +\mnline{\mnchip{mnfrisbee}{black}{frisbee}}{H I J K L M N} +\mnline{\mnchip{mnneo}{black}{neo}}{O P Q R S} +\mnhum{\mnchip{mnblueberry}{white}{blueberry}}{dm \mnx{4}} +\mnline{\mnall}{T U V W X Y Z} +\mnline{\mnall}{and now we know them all} +\mnhum{\mnchip{mnneo}{black}{neo}\,\mnchip{mnblueberry}{white}{blueberry}}{(hum)} +\end{multicols} +} + +\newcommand{\mnptentries}{\mnptentryA\mnptentryB\mnptentryC\mnptentryD\mnptentryE\mnptentryF\mnptentryG\mnptentryH\mnptentryI\mnptentryJ\mnptentryK\mnptentryL\mnptentryM\mnptentryN\mnptentryO\mnptentryP\mnptentryQ\mnptentryR\mnptentryS\mnptentryT\mnptentryU\mnptentryV\mnptentryW\mnptentryX\mnptentryY\mnptentryZ\mnptentryAA\mnptentryAB\mnptentryAC\mnptentryAD\mnptentryAE\mnptentryAF\mnptentryAG} + diff --git a/grants/culturehub-la-2026/macneopolitan/book/mnpt-scores.edition.json b/grants/culturehub-la-2026/macneopolitan/book/mnpt-scores.edition.json new file mode 100644 index 0000000000..38e87ca77f --- /dev/null +++ b/grants/culturehub-la-2026/macneopolitan/book/mnpt-scores.edition.json @@ -0,0 +1 @@ +{"edition": 1, "date": "2026-09-23"} diff --git a/grants/culturehub-la-2026/macneopolitan/book/mnpt-scores.pdf b/grants/culturehub-la-2026/macneopolitan/book/mnpt-scores.pdf new file mode 100644 index 0000000000000000000000000000000000000000..8f8c093fdf8c2e954952e29d4ea22be1db5789c4 GIT binary patch literal 103733 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 FxBzJuFDL*2 literal 0 HcmV?d00001 diff --git a/grants/culturehub-la-2026/macneopolitan/book/mnpt-scores.tex b/grants/culturehub-la-2026/macneopolitan/book/mnpt-scores.tex new file mode 100644 index 0000000000..3e0c3f4806 --- /dev/null +++ b/grants/culturehub-la-2026/macneopolitan/book/mnpt-scores.tex @@ -0,0 +1,185 @@ +% !TEX program = xelatex +% MNPT Scores — the request binder. Every Menu Band score the MacNeoPolitan +% Trio can sing, numbered so the room can call one out. +% +% The pages are here; the data is generated. Build with ../bin/scorebook.sh, +% which runs ../bin/scorebook.mjs first and never edits scores/ or SONGBOOK.md. +\documentclass[11pt,letterpaper]{article} +\usepackage{culturehub-packet} +\usepackage{multicol} +\renewcommand{\packetlabel}{MNPT SCORES} +\hypersetup{pdftitle={MNPT Scores — Menu Band scores for the MacNeoPolitan Trio}} +\geometry{top=0.72in,bottom=0.78in,left=0.8in,right=0.8in} + +\definecolor{acpink}{HTML}{B44887} +\newcommand{\acdot}{{\color{acpink}.}} +\newcommand{\ac}{Aesthetic{\acdot}Computer} + +% Member colors and all binder content come from mnpt-scores-entries.tex. +\input{mnpt-scores-entries} + +\fancyhead[L]{\footnotesize\color{acpink}\packetlabel} +\fancyhead[R]{\footnotesize\color{acgray}\rightmark} +\fancyfoot[L]{\footnotesize\color{acgray}MacNeoPolitan Trio} +\fancyfoot[R]{\footnotesize\color{acgray}\thepage} + +% ------------------------------------------------------------------- pieces +\newcommand{\mnsep}{{\color{acgray}\,\textperiodcentered\,}} +\newcommand{\mnx}[1]{{\color{acgray}\,\texttimes#1}} + +% Who is singing: a chip in the member's own color. +\newcommand{\mnchip}[3]{% + \begingroup\setlength{\fboxsep}{1.5pt}% + \colorbox{#1}{\color{#2}\bfseries\fontsize{6.6pt}{6.6pt}\selectfont\strut#3}% + \endgroup} +\newcommand{\mnall}{% + \begingroup\setlength{\fboxsep}{1.5pt}% + \colorbox{acdark}{\color{white}\bfseries\fontsize{6.6pt}{6.6pt}\selectfont\strut all}% + \endgroup} + +\newlength{\mntagw}\setlength{\mntagw}{7.2em} +\newcommand{\mnline}[2]{% + \par\vspace{0.14em}\noindent + \hangindent=\mntagw\hangafter=1\relax + \makebox[\mntagw][l]{#1}#2\par} +\newcommand{\mnhum}[2]{% + \par\vspace{0.1em}\noindent + \hangindent=\mntagw\hangafter=1\relax + \makebox[\mntagw][l]{#1}{\color{acgray}#2}\par} +\newcommand{\mnsec}[1]{% + \par\vspace{0.62em}\noindent + {\bfseries\fontsize{8.4pt}{10pt}\selectfont\color{acgray}#1}\par\vspace{0.1em}} + +% One score, one page. +\newcommand{\mnentry}[7]{% + \clearpage + \markright{#1 \textperiodcentered\ #3}% + \pdfbookmark[1]{#1 - #3}{mnpt#1}% + \noindent + \begin{minipage}[b]{1.32in}% + {\fontsize{46pt}{46pt}\selectfont\bfseries\color{#2}#1}% + \end{minipage}% + \begin{minipage}[b]{\dimexpr\linewidth-1.32in\relax}% + {\fontsize{20pt}{22pt}\selectfont\bfseries\color{acdark}#3\par}% + \vspace{0.18em}% + {\fontsize{9.4pt}{12pt}\selectfont\color{acdark}#4\par}% + \end{minipage}% + \par\vspace{0.3em}{\color{#2}\rule{\linewidth}{2.2pt}}\par\vspace{0.45em} + {\fontsize{9pt}{12pt}\selectfont#5\par}% + \mnblurb{#6}\mnnote{#7}% + \vspace{0.55em} + \fontsize{10pt}{13.2pt}\selectfont} +\newcommand{\mnblurb}[1]{% + \if\relax\detokenize{#1}\relax\else + \vspace{0.42em}{\fontsize{9.6pt}{13pt}\selectfont\color{acdark}#1\par}\fi} +\newcommand{\mnnote}[1]{% + \if\relax\detokenize{#1}\relax\else + \vspace{0.22em}{\fontsize{9pt}{12pt}\selectfont\color{acgray}Songbook: #1\par}\fi} + +% Index rows. Plain paragraphs, not a table, so the index can break pages. +\newcommand{\mngrouprow}[3]{% + \par\vspace{0.7em}\noindent + {\bfseries\color{#1}#2}\quad{\color{acgray}\fontsize{8.6pt}{10pt}\selectfont#3}% + \par\vspace{0.28em}} +\newcommand{\mnrow}[5]{% + \par\noindent\hangindent=2.66in\hangafter=1\relax + \makebox[0.4in][r]{\bfseries\color{#1}#2}\hspace{0.45em}% + \makebox[1.75in][l]{#3}\makebox[0.4in][r]{#4}\hspace{0.45em}% + {\color{acgray}#5}\par\vspace{0.12em}} +\newcommand{\mntitlerow}[3]{% + \noindent{\bfseries\color{#1}#2}\hspace{0.55em}#3\par\vspace{0.12em}} +\newcommand{\mncastrow}[4]{#1 & #2 & #3 & #4\\} +\newcommand{\mnrule}[1]{\item #1} + +\newcommand{\mnpagetitle}[2]{% + {\acbold\fontsize{26pt}{28pt}\selectfont\color{acdark}#1\par}% + \vspace{0.1em}{\fontsize{9.4pt}{12pt}\selectfont\color{acgray}#2\par}% + \vspace{0.3em}{\color{acpale}\rule{\linewidth}{1.6pt}}\par\vspace{0.7em}} + +\setlength{\parindent}{0pt} +\setlength{\parskip}{0pt} + +\begin{document} + +% ---------------------------------------------------------------- the cover +\thispagestyle{empty} +\vspace*{1.05in} +\begin{center} +{\acbold\fontsize{72pt}{72pt}\selectfont\color{acdark}MNPT Scores\par} +\vspace{0.7em} +\noindent +\textcolor{mnneo}{\rule{1.95in}{0.46in}}\hspace{-0.5pt}% +\textcolor{mnblueberry}{\rule{1.95in}{0.46in}}\hspace{-0.5pt}% +\textcolor{mnfrisbee}{\rule{1.95in}{0.46in}} +\par\vspace{1.25em} +{\fontsize{15pt}{19pt}\selectfont\color{acdark}Menu Band scores for the MacNeoPolitan Trio\par} +\vspace{0.5em} +{\fontsize{11pt}{14pt}\selectfont\color{acgray}\mnptdate\par} +\vspace{0.15em} +{\fontsize{9.5pt}{12pt}\selectfont\color{acgray}\mnptedition\par} +\vspace{2.1em} +\begin{minipage}{4.5in}\centering +{\fontsize{10.5pt}{15pt}\selectfont +\mnptcount\ scores, each with a three-digit request number. Call the number.\par} +\end{minipage} +\end{center} +\vfill +\palsfooter +\begin{center} +{\fontsize{8.4pt}{11pt}\selectfont\color{acgray}% +Menu Band \textperiodcentered\ \ac \par} +\end{center} +\clearpage + +% -------------------------------------------------------- the request index +\mnpagetitle{Request index}{by number \textperiodcentered\ duration is the score's own length at its own tempo} +{\fontsize{9.2pt}{12.2pt}\selectfont +\mnptrequestindex +\par} +\clearpage + +% -------------------------------------------------------- titles + the cast +\mnpagetitle{Titles}{alphabetical} +{\fontsize{9.2pt}{12pt}\selectfont +\begin{multicols}{2}\raggedright +\mnpttitleindex +\end{multicols}\par} + +\vspace{1.1em} +\mnpagetitle{The cast}{measured registers, in MIDI note numbers} +{\fontsize{9.6pt}{13.4pt}\selectfont +\begin{tabular}{@{}p{0.95in}p{1.7in}p{1.3in}p{1.5in}@{}} +{\color{acgray}member} & {\color{acgray}voice} & {\color{acgray}speaks at} & {\color{acgray}sings inside}\\ +\mnptcast +\end{tabular}\par} + +\vspace{1.0em} +{\fontsize{9.4pt}{13pt}\selectfont\color{acdark} +Every member sings on its own body, in its own synthesizer, on one shared +clock. In the scores each line carries the tag of the machine that sings it, +and the tag repeats only when the singer changes. Grey is wordless: +{\color{acgray}(hum)} is breath on pitch, and {\color{acgray}doo\mnx{4}} is +that figure four times. A voice that hums under a whole score is named once in +its cast line rather than between every other line.\par} +\clearpage + +% ------------------------------------------------------------- every score +\mnptentries + +% ------------------------------------------------------------ the appendix +\clearpage +\markright{Rules the day taught} +\mnpagetitle{Rules the day taught}{what the machines proved, and what broke} +{\fontsize{10pt}{14pt}\selectfont +\begin{itemize}[leftmargin=1.1em,itemsep=0.7em] +\mnptrules +\end{itemize}\par} + +\vfill +{\fontsize{8.6pt}{11.5pt}\selectfont\color{acgray}% +Generated from \texttt{scores/*.mbscore} and \texttt{SONGBOOK.md} by +\texttt{bin/scorebook.mjs}; set by \texttt{book/mnpt-scores.tex}. Durations are +each score's longest voice, in beats, at the score's own tempo. Rebuild after a +new score lands: \texttt{bin/scorebook.sh}.\par} + +\end{document} diff --git a/grants/culturehub-la-2026/macneopolitan/hear/arith-probe-bb.json b/grants/culturehub-la-2026/macneopolitan/hear/arith-probe-bb.json new file mode 100644 index 0000000000..d2e6094ea7 --- /dev/null +++ b/grants/culturehub-la-2026/macneopolitan/hear/arith-probe-bb.json @@ -0,0 +1,202 @@ +{ + "tag": "arith-probe-bb", + "at": "2026-09-23T21:33:59.442Z", + "model": "ggml-small.en.bin", + "flags": { + "tag": "arith-probe-bb", + "voice": "1", + "voice-name": "Tom (Enhanced)", + "no-spoken": "1", + "keep": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out" + }, + "scores": [ + { + "score": "probe.mbscore", + "bpm": 96, + "voices": [ + { + "member": "blueberry", + "voice": "Tom (Enhanced)", + "lines": [ + { + "line": 1, + "role": "lead", + "text": "that is two", + "lyrics": "that is two", + "notes": "47:1,45:1,50:2", + "duration": 2.4992743764172336, + "peak": 0.800000011920929, + "spanOffset": 0, + "notesUsed": 3, + "noteCount": 3, + "renderMs": 3052, + "heard": "That is too...", + "wer": 0.3333333333333333, + "errors": 1, + "words": 3, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out/probe/blueberry/line-01.wav", + "spokenWav": null + }, + { + "line": 2, + "role": "lead", + "text": "yes that is two", + "lyrics": "yes that is two", + "notes": "r:6,47:1,47:1,45:1,50:2", + "duration": 3.749251700680272, + "peak": 0.800000011920929, + "spanOffset": 3.125, + "notesUsed": 4, + "noteCount": 4, + "renderMs": 609, + "heard": "Yes, that is too...", + "wer": 0.25, + "errors": 1, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out/probe/blueberry/line-02.wav", + "spokenWav": null + }, + { + "line": 3, + "role": "lead", + "text": "that is four", + "lyrics": "that is four", + "notes": "r:13,47:1,45:1,50:2", + "duration": 3.1242630385487526, + "peak": 0.800000011920929, + "spanOffset": 7.5, + "notesUsed": 3, + "noteCount": 3, + "renderMs": 518, + "heard": "That is four.", + "wer": 0, + "errors": 0, + "words": 3, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out/probe/blueberry/line-03.wav", + "spokenWav": null + }, + { + "line": 4, + "role": "lead", + "text": "that is ten", + "lyrics": "that is ten", + "notes": "r:19,47:1,45:1,50:2", + "duration": 3.1242630385487526, + "peak": 0.800000011920929, + "spanOffset": 11.25, + "notesUsed": 3, + "noteCount": 3, + "renderMs": 514, + "heard": "That is ten.", + "wer": 0, + "errors": 0, + "words": 3, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out/probe/blueberry/line-04.wav", + "spokenWav": null + }, + { + "line": 5, + "role": "lead", + "text": "one and one is two", + "lyrics": "one and one is two", + "notes": "r:25,45:1,47:1,45:1,48:1,50:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 15, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 776, + "heard": "One and one is two.", + "wer": 0, + "errors": 0, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out/probe/blueberry/line-05.wav", + "spokenWav": null + }, + { + "line": 6, + "role": "lead", + "text": "that is right", + "lyrics": "that is right", + "notes": "r:33,47:1,45:1,50:2", + "duration": 3.1242630385487526, + "peak": 0.800000011920929, + "spanOffset": 20, + "notesUsed": 3, + "noteCount": 3, + "renderMs": 486, + "heard": "That is right.", + "wer": 0, + "errors": 0, + "words": 3, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out/probe/blueberry/line-06.wav", + "spokenWav": null + }, + { + "line": 7, + "role": "lead", + "text": "now take one away", + "lyrics": "now take one a-way", + "notes": "r:39,47:1,45:1,47:1,48:1,50:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 23.75, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 668, + "heard": "Now take one away.", + "wer": 0, + "errors": 0, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out/probe/blueberry/line-07.wav", + "spokenWav": null + }, + { + "line": 8, + "role": "lead", + "text": "and none is left", + "lyrics": "and none is left", + "notes": "r:47,47:1,45:1,47:1,50:2", + "duration": 3.749251700680272, + "peak": 0.800000011920929, + "spanOffset": 28.75, + "notesUsed": 4, + "noteCount": 4, + "renderMs": 660, + "heard": "And on his left.", + "wer": 0.6666666666666666, + "errors": 2, + "words": 3, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out/probe/blueberry/line-08.wav", + "spokenWav": null + } + ] + } + ] + } + ], + "total": { + "errors": 4, + "words": 27, + "wer": 0.14814814814814814, + "spokenErrors": 0, + "spokenWords": 0, + "spokenWer": 0 + } +} diff --git a/grants/culturehub-la-2026/macneopolitan/hear/arith-probe-fri.json b/grants/culturehub-la-2026/macneopolitan/hear/arith-probe-fri.json new file mode 100644 index 0000000000..142273665b --- /dev/null +++ b/grants/culturehub-la-2026/macneopolitan/hear/arith-probe-fri.json @@ -0,0 +1,243 @@ +{ + "tag": "arith-probe-fri", + "at": "2026-09-23T21:33:18.228Z", + "model": "ggml-small.en.bin", + "flags": { + "tag": "arith-probe-fri", + "voice": "2", + "no-spoken": "1", + "keep": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out" + }, + "scores": [ + { + "score": "probe.mbscore", + "bpm": 96, + "voices": [ + { + "member": "frisbee", + "voice": "Zoe (Premium)", + "lines": [ + { + "line": 1, + "role": "lead", + "text": "is two", + "lyrics": "is two", + "notes": "54:1,59:2", + "duration": 1.8742403628117914, + "peak": 0.800000011920929, + "spanOffset": 0, + "notesUsed": 2, + "noteCount": 2, + "renderMs": 2181, + "heard": "Mm-shoo!", + "wer": 1, + "errors": 2, + "words": 2, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out/probe/frisbee/line-01.wav", + "spokenWav": null + }, + { + "line": 2, + "role": "lead", + "text": "two", + "lyrics": "two", + "notes": "r:5,59:2", + "duration": 1.8742403628117914, + "peak": 0.800000011920929, + "spanOffset": 2.5, + "notesUsed": 1, + "noteCount": 1, + "renderMs": 164, + "heard": "TEEEWWWWWWW", + "wer": 1, + "errors": 1, + "words": 1, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out/probe/frisbee/line-02.wav", + "spokenWav": null + }, + { + "line": 3, + "role": "lead", + "text": "is four", + "lyrics": "is four", + "notes": "r:9,54:1,59:2", + "duration": 2.4992743764172336, + "peak": 0.800000011920929, + "spanOffset": 5, + "notesUsed": 2, + "noteCount": 2, + "renderMs": 205, + "heard": "Is for...", + "wer": 0.5, + "errors": 1, + "words": 2, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out/probe/frisbee/line-03.wav", + "spokenWav": null + }, + { + "line": 4, + "role": "lead", + "text": "is six", + "lyrics": "is six", + "notes": "r:14,54:1,59:2", + "duration": 2.4992743764172336, + "peak": 0.800000011920929, + "spanOffset": 8.125, + "notesUsed": 2, + "noteCount": 2, + "renderMs": 194, + "heard": "Is... six?", + "wer": 0, + "errors": 0, + "words": 2, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out/probe/frisbee/line-04.wav", + "spokenWav": null + }, + { + "line": 5, + "role": "lead", + "text": "is eight", + "lyrics": "is eight", + "notes": "r:19,54:1,59:2", + "duration": 2.4992743764172336, + "peak": 0.800000011920929, + "spanOffset": 11.25, + "notesUsed": 2, + "noteCount": 2, + "renderMs": 188, + "heard": "EZ!", + "wer": 1, + "errors": 2, + "words": 2, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out/probe/frisbee/line-05.wav", + "spokenWav": null + }, + { + "line": 6, + "role": "lead", + "text": "is ten", + "lyrics": "is ten", + "notes": "r:24,54:1,59:2", + "duration": 2.4992743764172336, + "peak": 0.800000011920929, + "spanOffset": 14.375, + "notesUsed": 2, + "noteCount": 2, + "renderMs": 196, + "heard": "Is ten.", + "wer": 0, + "errors": 0, + "words": 2, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out/probe/frisbee/line-06.wav", + "spokenWav": null + }, + { + "line": 7, + "role": "lead", + "text": "one plus one is two", + "lyrics": "one plus one is two", + "notes": "r:29,54:1,56:1,54:1,57:1,59:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 17.5, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 404, + "heard": "1 plus 1 is 2.", + "wer": 0, + "errors": 0, + "words": 5, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out/probe/frisbee/line-07.wav", + "spokenWav": null + }, + { + "line": 8, + "role": "lead", + "text": "the answer is two", + "lyrics": "the an-swer is two", + "notes": "r:37,54:1,57:1,56:1,54:1,59:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 22.5, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 326, + "heard": "The answer is 2.", + "wer": 0, + "errors": 0, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out/probe/frisbee/line-08.wav", + "spokenWav": null + }, + { + "line": 9, + "role": "lead", + "text": "one and one is two", + "lyrics": "one and one is two", + "notes": "r:45,54:1,56:1,54:1,57:1,59:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 27.5, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 339, + "heard": "One and one is two.", + "wer": 0, + "errors": 0, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out/probe/frisbee/line-09.wav", + "spokenWav": null + }, + { + "line": 10, + "role": "lead", + "text": "is zero", + "lyrics": "is ze-ro", + "notes": "r:53,54:1,57:1,59:1", + "duration": 2.4992743764172336, + "peak": 0.800000011920929, + "spanOffset": 32.5, + "notesUsed": 3, + "noteCount": 3, + "renderMs": 281, + "heard": "Is zero", + "wer": 0, + "errors": 0, + "words": 2, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out/probe/frisbee/line-10.wav", + "spokenWav": null + } + ] + } + ] + } + ], + "total": { + "errors": 6, + "words": 26, + "wer": 0.23076923076923078, + "spokenErrors": 0, + "spokenWords": 0, + "spokenWer": 0 + } +} diff --git a/grants/culturehub-la-2026/macneopolitan/hear/arith-probe-neo.json b/grants/culturehub-la-2026/macneopolitan/hear/arith-probe-neo.json new file mode 100644 index 0000000000..2fb702a066 --- /dev/null +++ b/grants/culturehub-la-2026/macneopolitan/hear/arith-probe-neo.json @@ -0,0 +1,222 @@ +{ + "tag": "arith-probe-neo", + "at": "2026-09-23T21:32:39.270Z", + "model": "ggml-small.en.bin", + "flags": { + "tag": "arith-probe-neo", + "voice": "0", + "no-spoken": "1", + "keep": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out" + }, + "scores": [ + { + "score": "probe.mbscore", + "bpm": 96, + "voices": [ + { + "member": "neo", + "voice": "Noelle (Enhanced)", + "lines": [ + { + "line": 1, + "role": "lead", + "text": "one plus one", + "lyrics": "one plus one", + "notes": "61:1,59:1,57:2", + "duration": 2.4992743764172336, + "peak": 0.800000011920929, + "spanOffset": 0, + "notesUsed": 3, + "noteCount": 3, + "renderMs": 1918, + "heard": "One plus one.", + "wer": 0, + "errors": 0, + "words": 3, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out/probe/neo/line-01.wav", + "spokenWav": null + }, + { + "line": 2, + "role": "lead", + "text": "two plus two", + "lyrics": "two plus two", + "notes": "r:6,61:1,59:1,57:2", + "duration": 3.1242630385487526, + "peak": 0.800000011920929, + "spanOffset": 3.125, + "notesUsed": 3, + "noteCount": 3, + "renderMs": 369, + "heard": "2 plus 2", + "wer": 0, + "errors": 0, + "words": 3, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out/probe/neo/line-02.wav", + "spokenWav": null + }, + { + "line": 3, + "role": "lead", + "text": "what is one plus one", + "lyrics": "what is one plus one", + "notes": "r:12,59:1,57:1,61:1,59:1,57:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 6.875, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 517, + "heard": "What is one plus one?", + "wer": 0, + "errors": 0, + "words": 5, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out/probe/neo/line-03.wav", + "spokenWav": null + }, + { + "line": 4, + "role": "lead", + "text": "three plus three", + "lyrics": "three plus three", + "notes": "r:20,61:1,59:1,59:1", + "duration": 2.4992743764172336, + "peak": 0.800000011920929, + "spanOffset": 11.875, + "notesUsed": 3, + "noteCount": 3, + "renderMs": 361, + "heard": "3 plus 3.", + "wer": 0, + "errors": 0, + "words": 3, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out/probe/neo/line-04.wav", + "spokenWav": null + }, + { + "line": 5, + "role": "lead", + "text": "five plus five", + "lyrics": "five plus five", + "notes": "r:23,57:2,r:2,61:1,59:1", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 13.75, + "notesUsed": 3, + "noteCount": 3, + "renderMs": 426, + "heard": "Five. Plus five.", + "wer": 0, + "errors": 0, + "words": 3, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out/probe/neo/line-05.wav", + "spokenWav": null + }, + { + "line": 6, + "role": "lead", + "text": "one and one is two", + "lyrics": "one and one is two", + "notes": "r:29,59:1,57:2,r:2,57:1,59:1,61:1", + "duration": 5.624263038548753, + "peak": 0.800000011920929, + "spanOffset": 17.5, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 476, + "heard": "One and... One is two.", + "wer": 0, + "errors": 0, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out/probe/neo/line-06.wav", + "spokenWav": null + }, + { + "line": 7, + "role": "lead", + "text": "five take away one", + "lyrics": "five take a-way one", + "notes": "r:37,59:1,57:2,r:2,61:1,59:1,59:1", + "duration": 5.624263038548753, + "peak": 0.800000011920929, + "spanOffset": 22.5, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 491, + "heard": "5 take 2 away 1", + "wer": 0.25, + "errors": 1, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out/probe/neo/line-07.wav", + "spokenWav": null + }, + { + "line": 8, + "role": "lead", + "text": "ten nine eight seven", + "lyrics": "ten nine eight se-ven", + "notes": "r:45,57:1,57:2,r:2,62:1,61:1,59:1", + "duration": 5.624263038548753, + "peak": 0.800000011920929, + "spanOffset": 27.5, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 464, + "heard": "10 9 8 7", + "wer": 0, + "errors": 0, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out/probe/neo/line-08.wav", + "spokenWav": null + }, + { + "line": 9, + "role": "lead", + "text": "four plus four", + "lyrics": "four plus four", + "notes": "r:53,59:1,57:2,r:2,61:1", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 32.5, + "notesUsed": 3, + "noteCount": 3, + "renderMs": 368, + "heard": "4 plus 4", + "wer": 0, + "errors": 0, + "words": 3, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out/probe/neo/line-09.wav", + "spokenWav": null + } + ] + } + ] + } + ], + "total": { + "errors": 1, + "words": 32, + "wer": 0.03125, + "spokenErrors": 0, + "spokenWords": 0, + "spokenWer": 0 + } +} diff --git a/grants/culturehub-la-2026/macneopolitan/hear/arith-probe2-bb.json b/grants/culturehub-la-2026/macneopolitan/hear/arith-probe2-bb.json new file mode 100644 index 0000000000..e1d95d0c11 --- /dev/null +++ b/grants/culturehub-la-2026/macneopolitan/hear/arith-probe2-bb.json @@ -0,0 +1,244 @@ +{ + "tag": "arith-probe2-bb", + "at": "2026-09-23T21:40:58.546Z", + "model": "ggml-small.en.bin", + "flags": { + "tag": "arith-probe2-bb", + "voice": "1", + "voice-name": "Tom (Enhanced)", + "no-spoken": "1", + "keep": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out2" + }, + "scores": [ + { + "score": "probe2.mbscore", + "bpm": 96, + "voices": [ + { + "member": "blueberry", + "voice": "Tom (Enhanced)", + "lines": [ + { + "line": 1, + "role": "lead", + "text": "two and two is four", + "lyrics": "two and two is four", + "notes": "47:1,45:1,47:1,48:1,50:2", + "duration": 3.749251700680272, + "peak": 0.800000011920929, + "spanOffset": 0, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 1819, + "heard": "Two and two is four.", + "wer": 0, + "errors": 0, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out2/probe2/blueberry/line-01.wav", + "spokenWav": null + }, + { + "line": 2, + "role": "lead", + "text": "three and three is six", + "lyrics": "three and three is six", + "notes": "r:8,47:1,45:1,47:1,48:1,50:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 4.375, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 752, + "heard": "3 and 3 is 6.", + "wer": 0, + "errors": 0, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out2/probe2/blueberry/line-02.wav", + "spokenWav": null + }, + { + "line": 3, + "role": "lead", + "text": "four and four is eight", + "lyrics": "four and four is eight", + "notes": "r:16,47:1,45:1,47:1,48:1,50:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 9.375, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 711, + "heard": "4 and 4 is 8.", + "wer": 0, + "errors": 0, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out2/probe2/blueberry/line-03.wav", + "spokenWav": null + }, + { + "line": 4, + "role": "lead", + "text": "five and five is ten", + "lyrics": "five and five is ten", + "notes": "r:24,47:1,45:1,47:1,48:1,50:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 14.375, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 725, + "heard": "Five and five is ten.", + "wer": 0, + "errors": 0, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out2/probe2/blueberry/line-04.wav", + "spokenWav": null + }, + { + "line": 5, + "role": "lead", + "text": "yes it is two", + "lyrics": "yes it is two", + "notes": "r:32,47:1,45:1,48:1,50:2", + "duration": 3.749251700680272, + "peak": 0.800000011920929, + "spanOffset": 19.375, + "notesUsed": 4, + "noteCount": 4, + "renderMs": 674, + "heard": "Yes, it is too.", + "wer": 0.25, + "errors": 1, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out2/probe2/blueberry/line-05.wav", + "spokenWav": null + }, + { + "line": 6, + "role": "lead", + "text": "and two is right", + "lyrics": "and two is right", + "notes": "r:39,47:1,45:1,48:1,50:2", + "duration": 3.749251700680272, + "peak": 0.800000011920929, + "spanOffset": 23.75, + "notesUsed": 4, + "noteCount": 4, + "renderMs": 591, + "heard": "And who was right?", + "wer": 0.6666666666666666, + "errors": 2, + "words": 3, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out2/probe2/blueberry/line-06.wav", + "spokenWav": null + }, + { + "line": 7, + "role": "lead", + "text": "that makes two", + "lyrics": "that makes two", + "notes": "r:46,47:1,48:1,50:2", + "duration": 3.1242630385487526, + "peak": 0.800000011920929, + "spanOffset": 28.125, + "notesUsed": 3, + "noteCount": 3, + "renderMs": 723, + "heard": "That makes two.", + "wer": 0, + "errors": 0, + "words": 3, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out2/probe2/blueberry/line-07.wav", + "spokenWav": null + }, + { + "line": 8, + "role": "lead", + "text": "now take one away", + "lyrics": "now take one a-way", + "notes": "r:52,47:1,45:1,47:1,48:1,50:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 31.875, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 671, + "heard": "Now take one away.", + "wer": 0, + "errors": 0, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out2/probe2/blueberry/line-08.wav", + "spokenWav": null + }, + { + "line": 9, + "role": "lead", + "text": "now there is none", + "lyrics": "now there is none", + "notes": "r:60,47:1,45:1,48:1,50:2", + "duration": 3.749251700680272, + "peak": 0.800000011920929, + "spanOffset": 36.875, + "notesUsed": 4, + "noteCount": 4, + "renderMs": 537, + "heard": "Now there is none.", + "wer": 0, + "errors": 0, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out2/probe2/blueberry/line-09.wav", + "spokenWav": null + }, + { + "line": 10, + "role": "lead", + "text": "and nothing is left", + "lyrics": "and no-thing is left", + "notes": "r:67,47:1,45:1,47:1,48:1,50:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 41.25, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 651, + "heard": "And nothing is left", + "wer": 0, + "errors": 0, + "words": 3, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out2/probe2/blueberry/line-10.wav", + "spokenWav": null + } + ] + } + ] + } + ], + "total": { + "errors": 3, + "words": 37, + "wer": 0.08108108108108109, + "spokenErrors": 0, + "spokenWords": 0, + "spokenWer": 0 + } +} diff --git a/grants/culturehub-la-2026/macneopolitan/hear/arith-probe2-fri.json b/grants/culturehub-la-2026/macneopolitan/hear/arith-probe2-fri.json new file mode 100644 index 0000000000..09d1eccf58 --- /dev/null +++ b/grants/culturehub-la-2026/macneopolitan/hear/arith-probe2-fri.json @@ -0,0 +1,243 @@ +{ + "tag": "arith-probe2-fri", + "at": "2026-09-23T21:40:18.479Z", + "model": "ggml-small.en.bin", + "flags": { + "tag": "arith-probe2-fri", + "voice": "2", + "no-spoken": "1", + "keep": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out2" + }, + "scores": [ + { + "score": "probe2.mbscore", + "bpm": 96, + "voices": [ + { + "member": "frisbee", + "voice": "Zoe (Premium)", + "lines": [ + { + "line": 1, + "role": "lead", + "text": "two plus two is four", + "lyrics": "two plus two is four", + "notes": "54:1,56:1,54:1,57:1,59:2", + "duration": 3.749251700680272, + "peak": 0.800000011920929, + "spanOffset": 0, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 1577, + "heard": "2 plus 2 is 4.", + "wer": 0, + "errors": 0, + "words": 5, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out2/probe2/frisbee/line-01.wav", + "spokenWav": null + }, + { + "line": 2, + "role": "lead", + "text": "three plus three is six", + "lyrics": "three plus three is six", + "notes": "r:8,54:1,56:1,54:1,57:1,59:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 4.375, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 336, + "heard": "3 + 3 = 6", + "wer": 0.4, + "errors": 2, + "words": 5, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out2/probe2/frisbee/line-02.wav", + "spokenWav": null + }, + { + "line": 3, + "role": "lead", + "text": "four plus four is eight", + "lyrics": "four plus four is eight", + "notes": "r:16,54:1,56:1,54:1,57:1,59:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 9.375, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 329, + "heard": "4 + 4 = 8", + "wer": 0.4, + "errors": 2, + "words": 5, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out2/probe2/frisbee/line-03.wav", + "spokenWav": null + }, + { + "line": 4, + "role": "lead", + "text": "five plus five is ten", + "lyrics": "five plus five is ten", + "notes": "r:24,54:1,56:1,54:1,57:1,59:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 14.375, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 358, + "heard": "5 plus 5 is 10.", + "wer": 0, + "errors": 0, + "words": 5, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out2/probe2/frisbee/line-04.wav", + "spokenWav": null + }, + { + "line": 5, + "role": "lead", + "text": "five minus one is four", + "lyrics": "five mi-nus one is four", + "notes": "r:32,54:1,56:1,54:1,56:1,57:1,59:2", + "duration": 4.999274376417233, + "peak": 0.800000011920929, + "spanOffset": 19.375, + "notesUsed": 6, + "noteCount": 6, + "renderMs": 365, + "heard": "5 minus 1 minus 4.", + "wer": 0.2, + "errors": 1, + "words": 5, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out2/probe2/frisbee/line-05.wav", + "spokenWav": null + }, + { + "line": 6, + "role": "lead", + "text": "four minus one is three", + "lyrics": "four mi-nus one is three", + "notes": "r:41,54:1,56:1,54:1,56:1,57:1,59:2", + "duration": 4.999274376417233, + "peak": 0.800000011920929, + "spanOffset": 25, + "notesUsed": 6, + "noteCount": 6, + "renderMs": 361, + "heard": "4 minus 1 is 3.", + "wer": 0, + "errors": 0, + "words": 5, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out2/probe2/frisbee/line-06.wav", + "spokenWav": null + }, + { + "line": 7, + "role": "lead", + "text": "three minus one is two", + "lyrics": "three mi-nus one is two", + "notes": "r:50,54:1,56:1,54:1,56:1,57:1,59:2", + "duration": 4.999274376417233, + "peak": 0.800000011920929, + "spanOffset": 30.625, + "notesUsed": 6, + "noteCount": 6, + "renderMs": 353, + "heard": "3 minus 1 is 2.", + "wer": 0, + "errors": 0, + "words": 5, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out2/probe2/frisbee/line-07.wav", + "spokenWav": null + }, + { + "line": 8, + "role": "lead", + "text": "two minus one is one", + "lyrics": "two mi-nus one is one", + "notes": "r:59,54:1,56:1,54:1,56:1,57:1,59:2", + "duration": 4.999274376417233, + "peak": 0.800000011920929, + "spanOffset": 36.25, + "notesUsed": 6, + "noteCount": 6, + "renderMs": 347, + "heard": "2 minus 1 is 1.", + "wer": 0, + "errors": 0, + "words": 5, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out2/probe2/frisbee/line-08.wav", + "spokenWav": null + }, + { + "line": 9, + "role": "lead", + "text": "one minus one is none", + "lyrics": "one mi-nus one is none", + "notes": "r:68,54:1,56:1,54:1,56:1,57:1,59:2", + "duration": 4.999274376417233, + "peak": 0.800000011920929, + "spanOffset": 41.875, + "notesUsed": 6, + "noteCount": 6, + "renderMs": 368, + "heard": "1 minus 1 is none.", + "wer": 0, + "errors": 0, + "words": 5, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out2/probe2/frisbee/line-09.wav", + "spokenWav": null + }, + { + "line": 10, + "role": "lead", + "text": "one take away one is zero", + "lyrics": "one take a-way one is ze-ro", + "notes": "r:77,54:1,56:1,54:1,56:1,54:1,56:1,57:1,59:2", + "duration": 6.249251700680272, + "peak": 0.800000011920929, + "spanOffset": 47.5, + "notesUsed": 8, + "noteCount": 8, + "renderMs": 444, + "heard": "One takeaway, one is zero.", + "wer": 0.3333333333333333, + "errors": 2, + "words": 6, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out2/probe2/frisbee/line-10.wav", + "spokenWav": null + } + ] + } + ] + } + ], + "total": { + "errors": 7, + "words": 51, + "wer": 0.13725490196078433, + "spokenErrors": 0, + "spokenWords": 0, + "spokenWer": 0 + } +} diff --git a/grants/culturehub-la-2026/macneopolitan/hear/arith-probe2-neo.json b/grants/culturehub-la-2026/macneopolitan/hear/arith-probe2-neo.json new file mode 100644 index 0000000000..73d632b727 --- /dev/null +++ b/grants/culturehub-la-2026/macneopolitan/hear/arith-probe2-neo.json @@ -0,0 +1,201 @@ +{ + "tag": "arith-probe2-neo", + "at": "2026-09-23T21:39:45.523Z", + "model": "ggml-small.en.bin", + "flags": { + "tag": "arith-probe2-neo", + "voice": "0", + "no-spoken": "1", + "keep": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out2" + }, + "scores": [ + { + "score": "probe2.mbscore", + "bpm": 96, + "voices": [ + { + "member": "neo", + "voice": "Noelle (Enhanced)", + "lines": [ + { + "line": 1, + "role": "lead", + "text": "five minus one", + "lyrics": "five mi-nus one", + "notes": "61:1,59:1,59:1,57:2", + "duration": 3.1242630385487526, + "peak": 0.800000011920929, + "spanOffset": 0, + "notesUsed": 4, + "noteCount": 4, + "renderMs": 1470, + "heard": "Five minus one.", + "wer": 0, + "errors": 0, + "words": 3, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out2/probe2/neo/line-01.wav", + "spokenWav": null + }, + { + "line": 2, + "role": "lead", + "text": "five take one away", + "lyrics": "five take one a-way", + "notes": "r:7,61:1,59:1,59:1,59:1,57:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 3.75, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 394, + "heard": "Five take one away.", + "wer": 0, + "errors": 0, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out2/probe2/neo/line-02.wav", + "spokenWav": null + }, + { + "line": 3, + "role": "lead", + "text": "take one away from five", + "lyrics": "take one a-way from five", + "notes": "r:15,61:1,59:1,59:1,59:1,59:1,57:2", + "duration": 4.999274376417233, + "peak": 0.800000011920929, + "spanOffset": 8.75, + "notesUsed": 6, + "noteCount": 6, + "renderMs": 411, + "heard": "Take one away from five.", + "wer": 0, + "errors": 0, + "words": 5, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out2/probe2/neo/line-03.wav", + "spokenWav": null + }, + { + "line": 4, + "role": "lead", + "text": "what is five minus one", + "lyrics": "what is five mi-nus one", + "notes": "r:24,61:1,59:1,59:1,59:1,59:1,57:2", + "duration": 4.999274376417233, + "peak": 0.800000011920929, + "spanOffset": 14.375, + "notesUsed": 6, + "noteCount": 6, + "renderMs": 413, + "heard": "4 is 5 minus 1.", + "wer": 0.2, + "errors": 1, + "words": 5, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out2/probe2/neo/line-04.wav", + "spokenWav": null + }, + { + "line": 5, + "role": "lead", + "text": "three take away one", + "lyrics": "three take a-way one", + "notes": "r:33,61:1,59:1,59:1,59:1,57:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 20, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 386, + "heard": "3 take you where you want.", + "wer": 1, + "errors": 4, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out2/probe2/neo/line-05.wav", + "spokenWav": null + }, + { + "line": 6, + "role": "lead", + "text": "six five four three", + "lyrics": "six five four three", + "notes": "r:41,61:1,59:1,59:1,57:2", + "duration": 3.749251700680272, + "peak": 0.800000011920929, + "spanOffset": 25, + "notesUsed": 4, + "noteCount": 4, + "renderMs": 384, + "heard": "6 5 4 3", + "wer": 0, + "errors": 0, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out2/probe2/neo/line-06.wav", + "spokenWav": null + }, + { + "line": 7, + "role": "lead", + "text": "two and one and none", + "lyrics": "two and one and none", + "notes": "r:48,61:1,59:1,59:1,59:1,57:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 29.375, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 394, + "heard": "2 and 1 and then...", + "wer": 0.3333333333333333, + "errors": 1, + "words": 3, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out2/probe2/neo/line-07.wav", + "spokenWav": null + }, + { + "line": 8, + "role": "lead", + "text": "one plus one", + "lyrics": "one plus one", + "notes": "r:56,61:1,59:1,57:2", + "duration": 3.1242630385487526, + "peak": 0.800000011920929, + "spanOffset": 34.375, + "notesUsed": 3, + "noteCount": 3, + "renderMs": 260, + "heard": "1 + 1", + "wer": 0.3333333333333333, + "errors": 1, + "words": 3, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out2/probe2/neo/line-08.wav", + "spokenWav": null + } + ] + } + ] + } + ], + "total": { + "errors": 7, + "words": 31, + "wer": 0.22580645161290322, + "spokenErrors": 0, + "spokenWords": 0, + "spokenWer": 0 + } +} diff --git a/grants/culturehub-la-2026/macneopolitan/hear/arith-probe3-bb.json b/grants/culturehub-la-2026/macneopolitan/hear/arith-probe3-bb.json new file mode 100644 index 0000000000..29e0c36c63 --- /dev/null +++ b/grants/culturehub-la-2026/macneopolitan/hear/arith-probe3-bb.json @@ -0,0 +1,307 @@ +{ + "tag": "arith-probe3-bb", + "at": "2026-09-23T21:50:12.094Z", + "model": "ggml-small.en.bin", + "flags": { + "tag": "arith-probe3-bb", + "voice": "1", + "voice-name": "Tom (Enhanced)", + "no-spoken": "1", + "keep": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out3" + }, + "scores": [ + { + "score": "probe3.mbscore", + "bpm": 96, + "voices": [ + { + "member": "blueberry", + "voice": "Tom (Enhanced)", + "lines": [ + { + "line": 1, + "role": "lead", + "text": "that makes four", + "lyrics": "that makes four", + "notes": "47:1,48:1,50:2", + "duration": 2.4992743764172336, + "peak": 0.800000011920929, + "spanOffset": 0, + "notesUsed": 3, + "noteCount": 3, + "renderMs": 2104, + "heard": "That makes for...", + "wer": 0.3333333333333333, + "errors": 1, + "words": 3, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out3/probe3/blueberry/line-01.wav", + "spokenWav": null + }, + { + "line": 2, + "role": "lead", + "text": "that makes six", + "lyrics": "that makes six", + "notes": "r:6,47:1,48:1,50:2", + "duration": 3.1242630385487526, + "peak": 0.800000011920929, + "spanOffset": 3.125, + "notesUsed": 3, + "noteCount": 3, + "renderMs": 359, + "heard": "That makes sex.", + "wer": 0.3333333333333333, + "errors": 1, + "words": 3, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out3/probe3/blueberry/line-02.wav", + "spokenWav": null + }, + { + "line": 3, + "role": "lead", + "text": "that makes eight", + "lyrics": "that makes eight", + "notes": "r:12,47:1,48:1,50:2", + "duration": 3.1242630385487526, + "peak": 0.800000011920929, + "spanOffset": 6.875, + "notesUsed": 3, + "noteCount": 3, + "renderMs": 355, + "heard": "That makes eight.", + "wer": 0, + "errors": 0, + "words": 3, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out3/probe3/blueberry/line-03.wav", + "spokenWav": null + }, + { + "line": 4, + "role": "lead", + "text": "that makes ten", + "lyrics": "that makes ten", + "notes": "r:18,47:1,48:1,50:2", + "duration": 3.1242630385487526, + "peak": 0.800000011920929, + "spanOffset": 10.625, + "notesUsed": 3, + "noteCount": 3, + "renderMs": 350, + "heard": "That makes ten.", + "wer": 0, + "errors": 0, + "words": 3, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out3/probe3/blueberry/line-04.wav", + "spokenWav": null + }, + { + "line": 5, + "role": "lead", + "text": "that makes three", + "lyrics": "that makes three", + "notes": "r:24,47:1,48:1,50:2", + "duration": 3.1242630385487526, + "peak": 0.800000011920929, + "spanOffset": 14.375, + "notesUsed": 3, + "noteCount": 3, + "renderMs": 347, + "heard": "That makes three.", + "wer": 0, + "errors": 0, + "words": 3, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out3/probe3/blueberry/line-05.wav", + "spokenWav": null + }, + { + "line": 6, + "role": "lead", + "text": "that makes one", + "lyrics": "that makes one", + "notes": "r:30,47:1,48:1,50:2", + "duration": 3.1242630385487526, + "peak": 0.800000011920929, + "spanOffset": 18.125, + "notesUsed": 3, + "noteCount": 3, + "renderMs": 345, + "heard": "That makes one", + "wer": 0, + "errors": 0, + "words": 3, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out3/probe3/blueberry/line-06.wav", + "spokenWav": null + }, + { + "line": 7, + "role": "lead", + "text": "that makes zero", + "lyrics": "that makes ze-ro", + "notes": "r:36,47:1,45:1,48:1,50:2", + "duration": 3.749251700680272, + "peak": 0.800000011920929, + "spanOffset": 21.875, + "notesUsed": 4, + "noteCount": 4, + "renderMs": 388, + "heard": "That makes zero.", + "wer": 0, + "errors": 0, + "words": 3, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out3/probe3/blueberry/line-07.wav", + "spokenWav": null + }, + { + "line": 8, + "role": "lead", + "text": "count them up together", + "lyrics": "count them up to-geth-er", + "notes": "r:43,47:1,45:1,47:1,45:1,48:1,50:2", + "duration": 4.999274376417233, + "peak": 0.800000011920929, + "spanOffset": 26.25, + "notesUsed": 6, + "noteCount": 6, + "renderMs": 474, + "heard": "Count them all together", + "wer": 0.25, + "errors": 1, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out3/probe3/blueberry/line-08.wav", + "spokenWav": null + }, + { + "line": 9, + "role": "lead", + "text": "now you know your sums", + "lyrics": "now you know your sums", + "notes": "r:52,47:1,45:1,47:1,48:1,50:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 31.875, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 425, + "heard": "Now you know your songs.", + "wer": 0.2, + "errors": 1, + "words": 5, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out3/probe3/blueberry/line-09.wav", + "spokenWav": null + }, + { + "line": 10, + "role": "lead", + "text": "and count what is left", + "lyrics": "and count what is left", + "notes": "r:60,47:1,45:1,47:1,48:1,50:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 36.875, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 461, + "heard": "And count what is left.", + "wer": 0, + "errors": 0, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out3/probe3/blueberry/line-10.wav", + "spokenWav": null + }, + { + "line": 11, + "role": "lead", + "text": "take one away", + "lyrics": "take one a-way", + "notes": "r:68,47:1,45:1,48:1,50:2", + "duration": 3.749251700680272, + "peak": 0.800000011920929, + "spanOffset": 41.875, + "notesUsed": 4, + "noteCount": 4, + "renderMs": 368, + "heard": "Take one away.", + "wer": 0, + "errors": 0, + "words": 3, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out3/probe3/blueberry/line-11.wav", + "spokenWav": null + }, + { + "line": 12, + "role": "lead", + "text": "that makes two", + "lyrics": "that makes two", + "notes": "r:75,47:1,48:1,50:2", + "duration": 3.1242630385487526, + "peak": 0.800000011920929, + "spanOffset": 46.25, + "notesUsed": 3, + "noteCount": 3, + "renderMs": 322, + "heard": "That makes two.", + "wer": 0, + "errors": 0, + "words": 3, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out3/probe3/blueberry/line-12.wav", + "spokenWav": null + }, + { + "line": 13, + "role": "lead", + "text": "that makes five", + "lyrics": "that makes five", + "notes": "r:81,47:1,48:1,50:2", + "duration": 3.1242630385487526, + "peak": 0.800000011920929, + "spanOffset": 50, + "notesUsed": 3, + "noteCount": 3, + "renderMs": 372, + "heard": "That makes five.", + "wer": 0, + "errors": 0, + "words": 3, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out3/probe3/blueberry/line-13.wav", + "spokenWav": null + } + ] + } + ] + } + ], + "total": { + "errors": 4, + "words": 43, + "wer": 0.09302325581395349, + "spokenErrors": 0, + "spokenWords": 0, + "spokenWer": 0 + } +} diff --git a/grants/culturehub-la-2026/macneopolitan/hear/arith-probe3-fri.json b/grants/culturehub-la-2026/macneopolitan/hear/arith-probe3-fri.json new file mode 100644 index 0000000000..b6210a1e90 --- /dev/null +++ b/grants/culturehub-la-2026/macneopolitan/hear/arith-probe3-fri.json @@ -0,0 +1,285 @@ +{ + "tag": "arith-probe3-fri", + "at": "2026-09-23T21:49:04.098Z", + "model": "ggml-small.en.bin", + "flags": { + "tag": "arith-probe3-fri", + "voice": "2", + "no-spoken": "1", + "keep": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out3" + }, + "scores": [ + { + "score": "probe3.mbscore", + "bpm": 96, + "voices": [ + { + "member": "frisbee", + "voice": "Zoe (Premium)", + "lines": [ + { + "line": 1, + "role": "lead", + "text": "two and two is four", + "lyrics": "two and two is four", + "notes": "54:1,56:1,54:1,57:1,59:2", + "duration": 3.749251700680272, + "peak": 0.800000011920929, + "spanOffset": 0, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 3039, + "heard": "You and I is for...", + "wer": 0.75, + "errors": 3, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out3/probe3/frisbee/line-01.wav", + "spokenWav": null + }, + { + "line": 2, + "role": "lead", + "text": "three and three is six", + "lyrics": "three and three is six", + "notes": "r:8,54:1,56:1,54:1,57:1,59:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 4.375, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 407, + "heard": "3-3-6", + "wer": 0.25, + "errors": 1, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out3/probe3/frisbee/line-02.wav", + "spokenWav": null + }, + { + "line": 3, + "role": "lead", + "text": "four and four is eight", + "lyrics": "four and four is eight", + "notes": "r:16,54:1,56:1,54:1,57:1,59:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 9.375, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 386, + "heard": "Four and four is eight.", + "wer": 0, + "errors": 0, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out3/probe3/frisbee/line-03.wav", + "spokenWav": null + }, + { + "line": 4, + "role": "lead", + "text": "five and five is ten", + "lyrics": "five and five is ten", + "notes": "r:24,54:1,56:1,54:1,57:1,59:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 14.375, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 447, + "heard": "Five and five is ten.", + "wer": 0, + "errors": 0, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out3/probe3/frisbee/line-04.wav", + "spokenWav": null + }, + { + "line": 5, + "role": "lead", + "text": "count them up together", + "lyrics": "count them up to-geth-er", + "notes": "r:32,54:1,56:1,54:1,56:1,57:1,59:2", + "duration": 4.999274376417233, + "peak": 0.800000011920929, + "spanOffset": 19.375, + "notesUsed": 6, + "noteCount": 6, + "renderMs": 455, + "heard": "Count them up together.", + "wer": 0, + "errors": 0, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out3/probe3/frisbee/line-05.wav", + "spokenWav": null + }, + { + "line": 6, + "role": "lead", + "text": "now you know your sums", + "lyrics": "now you know your sums", + "notes": "r:41,54:1,56:1,54:1,57:1,59:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 25, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 368, + "heard": "Now you know yourself.", + "wer": 0.4, + "errors": 2, + "words": 5, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out3/probe3/frisbee/line-06.wav", + "spokenWav": null + }, + { + "line": 7, + "role": "lead", + "text": "five minus one is four", + "lyrics": "five mi-nus one is four", + "notes": "r:49,54:1,56:1,54:1,56:1,57:1,59:2", + "duration": 4.999274376417233, + "peak": 0.800000011920929, + "spanOffset": 30, + "notesUsed": 6, + "noteCount": 6, + "renderMs": 400, + "heard": "5 minus 1 minus 4.", + "wer": 0.2, + "errors": 1, + "words": 5, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out3/probe3/frisbee/line-07.wav", + "spokenWav": null + }, + { + "line": 8, + "role": "lead", + "text": "one minus one is zero", + "lyrics": "one mi-nus one is ze-ro", + "notes": "r:58,54:1,56:1,54:1,56:1,54:1,57:1,59:2", + "duration": 5.624263038548753, + "peak": 0.800000011920929, + "spanOffset": 35.625, + "notesUsed": 7, + "noteCount": 7, + "renderMs": 471, + "heard": "1 minus 1 is 0.", + "wer": 0, + "errors": 0, + "words": 5, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out3/probe3/frisbee/line-08.wav", + "spokenWav": null + }, + { + "line": 9, + "role": "lead", + "text": "four minus one is three", + "lyrics": "four mi-nus one is three", + "notes": "r:68,54:1,56:1,54:1,56:1,57:1,59:2", + "duration": 4.999274376417233, + "peak": 0.800000011920929, + "spanOffset": 41.875, + "notesUsed": 6, + "noteCount": 6, + "renderMs": 364, + "heard": "4 minus 1 is 3.", + "wer": 0, + "errors": 0, + "words": 5, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out3/probe3/frisbee/line-09.wav", + "spokenWav": null + }, + { + "line": 10, + "role": "lead", + "text": "and count what is left", + "lyrics": "and count what is left", + "notes": "r:77,54:1,56:1,54:1,57:1,59:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 47.5, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 393, + "heard": "And get what is left.", + "wer": 0.25, + "errors": 1, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out3/probe3/frisbee/line-10.wav", + "spokenWav": null + }, + { + "line": 11, + "role": "lead", + "text": "one and one is two", + "lyrics": "one and one is two", + "notes": "r:85,54:1,56:1,54:1,57:1,59:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 52.5, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 392, + "heard": "One and one is two.", + "wer": 0, + "errors": 0, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out3/probe3/frisbee/line-11.wav", + "spokenWav": null + }, + { + "line": 12, + "role": "lead", + "text": "take one away", + "lyrics": "take one a-way", + "notes": "r:93,54:1,56:1,57:1,59:2", + "duration": 3.749251700680272, + "peak": 0.800000011920929, + "spanOffset": 57.5, + "notesUsed": 4, + "noteCount": 4, + "renderMs": 398, + "heard": "Take one away.", + "wer": 0, + "errors": 0, + "words": 3, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out3/probe3/frisbee/line-12.wav", + "spokenWav": null + } + ] + } + ] + } + ], + "total": { + "errors": 8, + "words": 51, + "wer": 0.1568627450980392, + "spokenErrors": 0, + "spokenWords": 0, + "spokenWer": 0 + } +} diff --git a/grants/culturehub-la-2026/macneopolitan/hear/arith-probe3-neo.json b/grants/culturehub-la-2026/macneopolitan/hear/arith-probe3-neo.json new file mode 100644 index 0000000000..452db938f9 --- /dev/null +++ b/grants/culturehub-la-2026/macneopolitan/hear/arith-probe3-neo.json @@ -0,0 +1,306 @@ +{ + "tag": "arith-probe3-neo", + "at": "2026-09-23T21:47:22.242Z", + "model": "ggml-small.en.bin", + "flags": { + "tag": "arith-probe3-neo", + "voice": "0", + "no-spoken": "1", + "keep": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out3" + }, + "scores": [ + { + "score": "probe3.mbscore", + "bpm": 96, + "voices": [ + { + "member": "neo", + "voice": "Noelle (Enhanced)", + "lines": [ + { + "line": 1, + "role": "lead", + "text": "what is one and one", + "lyrics": "what is one and one", + "notes": "61:1,59:1,59:1,59:1,57:2", + "duration": 3.749251700680272, + "peak": 0.800000011920929, + "spanOffset": 0, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 3677, + "heard": "What is one in one?", + "wer": 0.25, + "errors": 1, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out3/probe3/neo/line-01.wav", + "spokenWav": null + }, + { + "line": 2, + "role": "lead", + "text": "what is two and two", + "lyrics": "what is two and two", + "notes": "r:8,61:1,59:1,59:1,59:1,57:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 4.375, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 623, + "heard": "What is to and to?", + "wer": 0.5, + "errors": 2, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out3/probe3/neo/line-02.wav", + "spokenWav": null + }, + { + "line": 3, + "role": "lead", + "text": "what is three and three", + "lyrics": "what is three and three", + "notes": "r:16,61:1,59:1,59:1,59:1,57:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 9.375, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 842, + "heard": "What is three and three?", + "wer": 0, + "errors": 0, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out3/probe3/neo/line-03.wav", + "spokenWav": null + }, + { + "line": 4, + "role": "lead", + "text": "what is four and four", + "lyrics": "what is four and four", + "notes": "r:24,61:1,59:1,59:1,59:1,57:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 14.375, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 714, + "heard": "What is foreign for?", + "wer": 0.5, + "errors": 2, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out3/probe3/neo/line-04.wav", + "spokenWav": null + }, + { + "line": 5, + "role": "lead", + "text": "what is five and five", + "lyrics": "what is five and five", + "notes": "r:32,61:1,59:1,59:1,59:1,57:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 19.375, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 713, + "heard": "What is five in five?", + "wer": 0.25, + "errors": 1, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out3/probe3/neo/line-05.wav", + "spokenWav": null + }, + { + "line": 6, + "role": "lead", + "text": "count them up together", + "lyrics": "count them up to-geth-er", + "notes": "r:40,61:1,59:1,59:1,59:1,59:1,57:2", + "duration": 4.999274376417233, + "peak": 0.800000011920929, + "spanOffset": 24.375, + "notesUsed": 6, + "noteCount": 6, + "renderMs": 966, + "heard": "Count them up together.", + "wer": 0, + "errors": 0, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out3/probe3/neo/line-06.wav", + "spokenWav": null + }, + { + "line": 7, + "role": "lead", + "text": "now you know your sums", + "lyrics": "now you know your sums", + "notes": "r:49,61:1,59:1,59:1,59:1,57:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 30, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 834, + "heard": "Now you know your sounds.", + "wer": 0.2, + "errors": 1, + "words": 5, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out3/probe3/neo/line-07.wav", + "spokenWav": null + }, + { + "line": 8, + "role": "lead", + "text": "four take one away", + "lyrics": "four take one a-way", + "notes": "r:57,61:1,59:1,59:1,59:1,57:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 35, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 921, + "heard": "4 take 1 away", + "wer": 0, + "errors": 0, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out3/probe3/neo/line-08.wav", + "spokenWav": null + }, + { + "line": 9, + "role": "lead", + "text": "three take one away", + "lyrics": "three take one a-way", + "notes": "r:65,61:1,59:1,59:1,59:1,57:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 40, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 859, + "heard": "3 take 1 away", + "wer": 0, + "errors": 0, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out3/probe3/neo/line-09.wav", + "spokenWav": null + }, + { + "line": 10, + "role": "lead", + "text": "two take one away", + "lyrics": "two take one a-way", + "notes": "r:73,61:1,59:1,59:1,59:1,57:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 45, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 742, + "heard": "to take one away.", + "wer": 0.25, + "errors": 1, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out3/probe3/neo/line-10.wav", + "spokenWav": null + }, + { + "line": 11, + "role": "lead", + "text": "one take one away", + "lyrics": "one take one a-way", + "notes": "r:81,61:1,59:1,59:1,59:1,57:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 50, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 755, + "heard": "One take one away", + "wer": 0, + "errors": 0, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out3/probe3/neo/line-11.wav", + "spokenWav": null + }, + { + "line": 12, + "role": "lead", + "text": "take one away", + "lyrics": "take one a-way", + "notes": "r:89,61:1,59:1,59:1,57:2", + "duration": 3.749251700680272, + "peak": 0.800000011920929, + "spanOffset": 55, + "notesUsed": 4, + "noteCount": 4, + "renderMs": 676, + "heard": "Take one away.", + "wer": 0, + "errors": 0, + "words": 3, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out3/probe3/neo/line-12.wav", + "spokenWav": null + }, + { + "line": 13, + "role": "lead", + "text": "and count what is left", + "lyrics": "and count what is left", + "notes": "r:96,61:1,59:1,59:1,59:1,57:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 59.375, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 863, + "heard": "And count what is left.", + "wer": 0, + "errors": 0, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out3/probe3/neo/line-13.wav", + "spokenWav": null + } + ] + } + ] + } + ], + "total": { + "errors": 8, + "words": 52, + "wer": 0.15384615384615385, + "spokenErrors": 0, + "spokenWords": 0, + "spokenWer": 0 + } +} diff --git a/grants/culturehub-la-2026/macneopolitan/hear/arith-probe4-bb.json b/grants/culturehub-la-2026/macneopolitan/hear/arith-probe4-bb.json new file mode 100644 index 0000000000..5feb985fa3 --- /dev/null +++ b/grants/culturehub-la-2026/macneopolitan/hear/arith-probe4-bb.json @@ -0,0 +1,244 @@ +{ + "tag": "arith-probe4-bb", + "at": "2026-09-23T21:55:19.472Z", + "model": "ggml-small.en.bin", + "flags": { + "tag": "arith-probe4-bb", + "voice": "1", + "voice-name": "Tom (Enhanced)", + "no-spoken": "1", + "keep": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out4" + }, + "scores": [ + { + "score": "probe4.mbscore", + "bpm": 96, + "voices": [ + { + "member": "blueberry", + "voice": "Tom (Enhanced)", + "lines": [ + { + "line": 1, + "role": "lead", + "text": "five minus one is four", + "lyrics": "five mi-nus one is four", + "notes": "47:1,45:1,47:1,45:1,48:1,50:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 0, + "notesUsed": 6, + "noteCount": 6, + "renderMs": 6561, + "heard": "Five minus one is four.", + "wer": 0, + "errors": 0, + "words": 5, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out4/probe4/blueberry/line-01.wav", + "spokenWav": null + }, + { + "line": 2, + "role": "lead", + "text": "four minus one is three", + "lyrics": "four mi-nus one is three", + "notes": "r:9,47:1,45:1,47:1,45:1,48:1,50:2", + "duration": 4.999274376417233, + "peak": 0.800000011920929, + "spanOffset": 5, + "notesUsed": 6, + "noteCount": 6, + "renderMs": 1339, + "heard": "4 minus 1 is 3.", + "wer": 0, + "errors": 0, + "words": 5, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out4/probe4/blueberry/line-02.wav", + "spokenWav": null + }, + { + "line": 3, + "role": "lead", + "text": "three minus one is two", + "lyrics": "three mi-nus one is two", + "notes": "r:18,47:1,45:1,47:1,45:1,48:1,50:2", + "duration": 4.999274376417233, + "peak": 0.800000011920929, + "spanOffset": 10.625, + "notesUsed": 6, + "noteCount": 6, + "renderMs": 1596, + "heard": "Three minus one is two.", + "wer": 0, + "errors": 0, + "words": 5, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out4/probe4/blueberry/line-03.wav", + "spokenWav": null + }, + { + "line": 4, + "role": "lead", + "text": "two minus one is one", + "lyrics": "two mi-nus one is one", + "notes": "r:27,47:1,45:1,47:1,45:1,48:1,50:2", + "duration": 4.999274376417233, + "peak": 0.800000011920929, + "spanOffset": 16.25, + "notesUsed": 6, + "noteCount": 6, + "renderMs": 1058, + "heard": "2 minus 1 is 1.", + "wer": 0, + "errors": 0, + "words": 5, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out4/probe4/blueberry/line-04.wav", + "spokenWav": null + }, + { + "line": 5, + "role": "lead", + "text": "one minus one is zero", + "lyrics": "one mi-nus one is ze-ro", + "notes": "r:36,47:1,45:1,47:1,45:1,47:1,48:1,50:2", + "duration": 5.624263038548753, + "peak": 0.800000011920929, + "spanOffset": 21.875, + "notesUsed": 7, + "noteCount": 7, + "renderMs": 1666, + "heard": "One more and this one is zero.", + "wer": 0.4, + "errors": 2, + "words": 5, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out4/probe4/blueberry/line-05.wav", + "spokenWav": null + }, + { + "line": 6, + "role": "lead", + "text": "one and one is two", + "lyrics": "one and one is two", + "notes": "r:46,47:1,45:1,47:1,48:1,50:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 28.125, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 771, + "heard": "One and one is two.", + "wer": 0, + "errors": 0, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out4/probe4/blueberry/line-06.wav", + "spokenWav": null + }, + { + "line": 7, + "role": "lead", + "text": "two and two is four", + "lyrics": "two and two is four", + "notes": "r:54,47:1,45:1,47:1,48:1,50:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 33.125, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 744, + "heard": "Two and two is four.", + "wer": 0, + "errors": 0, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out4/probe4/blueberry/line-07.wav", + "spokenWav": null + }, + { + "line": 8, + "role": "lead", + "text": "three and three is six", + "lyrics": "three and three is six", + "notes": "r:62,47:1,45:1,47:1,48:1,50:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 38.125, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 860, + "heard": "3 and 3 is 6.", + "wer": 0, + "errors": 0, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out4/probe4/blueberry/line-08.wav", + "spokenWav": null + }, + { + "line": 9, + "role": "lead", + "text": "four and four is eight", + "lyrics": "four and four is eight", + "notes": "r:70,47:1,45:1,47:1,48:1,50:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 43.125, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 670, + "heard": "4 and 4 is 8.", + "wer": 0, + "errors": 0, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out4/probe4/blueberry/line-09.wav", + "spokenWav": null + }, + { + "line": 10, + "role": "lead", + "text": "five and five is ten", + "lyrics": "five and five is ten", + "notes": "r:78,47:1,45:1,47:1,48:1,50:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 48.125, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 882, + "heard": "Five and five is ten.", + "wer": 0, + "errors": 0, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out4/probe4/blueberry/line-10.wav", + "spokenWav": null + } + ] + } + ] + } + ], + "total": { + "errors": 2, + "words": 45, + "wer": 0.044444444444444446, + "spokenErrors": 0, + "spokenWords": 0, + "spokenWer": 0 + } +} diff --git a/grants/culturehub-la-2026/macneopolitan/hear/arith-probe4-fri.json b/grants/culturehub-la-2026/macneopolitan/hear/arith-probe4-fri.json new file mode 100644 index 0000000000..a87b84493f --- /dev/null +++ b/grants/culturehub-la-2026/macneopolitan/hear/arith-probe4-fri.json @@ -0,0 +1,222 @@ +{ + "tag": "arith-probe4-fri", + "at": "2026-09-23T21:52:03.843Z", + "model": "ggml-small.en.bin", + "flags": { + "tag": "arith-probe4-fri", + "voice": "2", + "no-spoken": "1", + "keep": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out4" + }, + "scores": [ + { + "score": "probe4.mbscore", + "bpm": 96, + "voices": [ + { + "member": "frisbee", + "voice": "Zoe (Premium)", + "lines": [ + { + "line": 1, + "role": "lead", + "text": "the answer is two", + "lyrics": "the an-swer is two", + "notes": "54:1,56:1,54:1,57:1,59:2", + "duration": 3.749251700680272, + "peak": 0.800000011920929, + "spanOffset": 0, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 1191, + "heard": "The answer is 2.", + "wer": 0, + "errors": 0, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out4/probe4/frisbee/line-01.wav", + "spokenWav": null + }, + { + "line": 2, + "role": "lead", + "text": "the answer is four", + "lyrics": "the an-swer is four", + "notes": "r:8,54:1,56:1,54:1,57:1,59:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 4.375, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 7276, + "heard": "The answer is four.", + "wer": 0, + "errors": 0, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out4/probe4/frisbee/line-02.wav", + "spokenWav": null + }, + { + "line": 3, + "role": "lead", + "text": "the answer is six", + "lyrics": "the an-swer is six", + "notes": "r:16,54:1,56:1,54:1,57:1,59:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 9.375, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 1001, + "heard": "The answer is 6.", + "wer": 0, + "errors": 0, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out4/probe4/frisbee/line-03.wav", + "spokenWav": null + }, + { + "line": 4, + "role": "lead", + "text": "the answer is eight", + "lyrics": "the an-swer is eight", + "notes": "r:24,54:1,56:1,54:1,57:1,59:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 14.375, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 1476, + "heard": "The answer's eight.", + "wer": 0.5, + "errors": 2, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out4/probe4/frisbee/line-04.wav", + "spokenWav": null + }, + { + "line": 5, + "role": "lead", + "text": "the answer is ten", + "lyrics": "the an-swer is ten", + "notes": "r:32,54:1,56:1,54:1,57:1,59:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 19.375, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 1419, + "heard": "The answer is 10.", + "wer": 0, + "errors": 0, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out4/probe4/frisbee/line-05.wav", + "spokenWav": null + }, + { + "line": 6, + "role": "lead", + "text": "the answer is three", + "lyrics": "the an-swer is three", + "notes": "r:40,54:1,56:1,54:1,57:1,59:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 24.375, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 1223, + "heard": "The answer is 3.", + "wer": 0, + "errors": 0, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out4/probe4/frisbee/line-06.wav", + "spokenWav": null + }, + { + "line": 7, + "role": "lead", + "text": "the answer is one", + "lyrics": "the an-swer is one", + "notes": "r:48,54:1,56:1,54:1,57:1,59:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 29.375, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 1760, + "heard": "The answer is mmm, 1.", + "wer": 0.25, + "errors": 1, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out4/probe4/frisbee/line-07.wav", + "spokenWav": null + }, + { + "line": 8, + "role": "lead", + "text": "the answer is zero", + "lyrics": "the an-swer is ze-ro", + "notes": "r:56,54:1,56:1,54:1,56:1,57:1,59:2", + "duration": 4.999274376417233, + "peak": 0.800000011920929, + "spanOffset": 34.375, + "notesUsed": 6, + "noteCount": 6, + "renderMs": 1285, + "heard": "The answer is zero.", + "wer": 0, + "errors": 0, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out4/probe4/frisbee/line-08.wav", + "spokenWav": null + }, + { + "line": 9, + "role": "lead", + "text": "and nothing is left", + "lyrics": "and no-thing is left", + "notes": "r:65,54:1,56:1,54:1,57:1,59:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 40, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 1049, + "heard": "And nothing is left.", + "wer": 0, + "errors": 0, + "words": 3, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out4/probe4/frisbee/line-09.wav", + "spokenWav": null + } + ] + } + ] + } + ], + "total": { + "errors": 3, + "words": 35, + "wer": 0.08571428571428572, + "spokenErrors": 0, + "spokenWords": 0, + "spokenWer": 0 + } +} diff --git a/grants/culturehub-la-2026/macneopolitan/hear/arith-probe4-neo.json b/grants/culturehub-la-2026/macneopolitan/hear/arith-probe4-neo.json new file mode 100644 index 0000000000..f290d09c15 --- /dev/null +++ b/grants/culturehub-la-2026/macneopolitan/hear/arith-probe4-neo.json @@ -0,0 +1,222 @@ +{ + "tag": "arith-probe4-neo", + "at": "2026-09-23T21:53:25.664Z", + "model": "ggml-small.en.bin", + "flags": { + "tag": "arith-probe4-neo", + "voice": "0", + "no-spoken": "1", + "keep": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out4" + }, + "scores": [ + { + "score": "probe4.mbscore", + "bpm": 96, + "voices": [ + { + "member": "neo", + "voice": "Noelle (Enhanced)", + "lines": [ + { + "line": 1, + "role": "lead", + "text": "two take one away", + "lyrics": "two take one a-way", + "notes": "61:1,59:1,59:1,59:1,57:2", + "duration": 3.749251700680272, + "peak": 0.800000011920929, + "spanOffset": 0, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 1021, + "heard": "You take one away.", + "wer": 0.25, + "errors": 1, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out4/probe4/neo/line-01.wav", + "spokenWav": null + }, + { + "line": 2, + "role": "lead", + "text": "now two take one away", + "lyrics": "now two take one a-way", + "notes": "r:8,61:1,59:1,59:1,59:1,59:1,57:2", + "duration": 4.999274376417233, + "peak": 0.800000011920929, + "spanOffset": 4.375, + "notesUsed": 6, + "noteCount": 6, + "renderMs": 4333, + "heard": "Now to take one away.", + "wer": 0.2, + "errors": 1, + "words": 5, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out4/probe4/neo/line-02.wav", + "spokenWav": null + }, + { + "line": 3, + "role": "lead", + "text": "and nothing is left", + "lyrics": "and no-thing is left", + "notes": "r:17,61:1,59:1,59:1,59:1,57:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 10, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 916, + "heard": "And nothing is left", + "wer": 0, + "errors": 0, + "words": 3, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out4/probe4/neo/line-03.wav", + "spokenWav": null + }, + { + "line": 4, + "role": "lead", + "text": "one plus one", + "lyrics": "one plus one", + "notes": "r:25,61:1,59:1,57:2", + "duration": 3.1242630385487526, + "peak": 0.800000011920929, + "spanOffset": 15, + "notesUsed": 3, + "noteCount": 3, + "renderMs": 648, + "heard": "1 + 1", + "wer": 0.3333333333333333, + "errors": 1, + "words": 3, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out4/probe4/neo/line-04.wav", + "spokenWav": null + }, + { + "line": 5, + "role": "lead", + "text": "two plus two", + "lyrics": "two plus two", + "notes": "r:31,61:1,59:1,57:2", + "duration": 3.1242630385487526, + "peak": 0.800000011920929, + "spanOffset": 18.75, + "notesUsed": 3, + "noteCount": 3, + "renderMs": 669, + "heard": "2 plus 2", + "wer": 0, + "errors": 0, + "words": 3, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out4/probe4/neo/line-05.wav", + "spokenWav": null + }, + { + "line": 6, + "role": "lead", + "text": "three plus three", + "lyrics": "three plus three", + "notes": "r:37,61:1,59:1,57:2", + "duration": 3.1242630385487526, + "peak": 0.800000011920929, + "spanOffset": 22.5, + "notesUsed": 3, + "noteCount": 3, + "renderMs": 626, + "heard": "3 + 3", + "wer": 0.3333333333333333, + "errors": 1, + "words": 3, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out4/probe4/neo/line-06.wav", + "spokenWav": null + }, + { + "line": 7, + "role": "lead", + "text": "four plus four", + "lyrics": "four plus four", + "notes": "r:43,61:1,59:1,57:2", + "duration": 3.1242630385487526, + "peak": 0.800000011920929, + "spanOffset": 26.25, + "notesUsed": 3, + "noteCount": 3, + "renderMs": 613, + "heard": "4 + 4", + "wer": 0.3333333333333333, + "errors": 1, + "words": 3, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out4/probe4/neo/line-07.wav", + "spokenWav": null + }, + { + "line": 8, + "role": "lead", + "text": "five plus five", + "lyrics": "five plus five", + "notes": "r:49,61:1,59:1,57:2", + "duration": 3.1242630385487526, + "peak": 0.800000011920929, + "spanOffset": 30, + "notesUsed": 3, + "noteCount": 3, + "renderMs": 678, + "heard": "5 plus 5", + "wer": 0, + "errors": 0, + "words": 3, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out4/probe4/neo/line-08.wav", + "spokenWav": null + }, + { + "line": 9, + "role": "lead", + "text": "one and one is two", + "lyrics": "one and one is two", + "notes": "r:55,61:1,59:1,59:1,59:1,57:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 33.75, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 755, + "heard": "One and one is two.", + "wer": 0, + "errors": 0, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out4/probe4/neo/line-09.wav", + "spokenWav": null + } + ] + } + ] + } + ], + "total": { + "errors": 5, + "words": 31, + "wer": 0.16129032258064516, + "spokenErrors": 0, + "spokenWords": 0, + "spokenWer": 0 + } +} diff --git a/grants/culturehub-la-2026/macneopolitan/hear/arith-probe5-neo.json b/grants/culturehub-la-2026/macneopolitan/hear/arith-probe5-neo.json new file mode 100644 index 0000000000..9a1e6c88fb --- /dev/null +++ b/grants/culturehub-la-2026/macneopolitan/hear/arith-probe5-neo.json @@ -0,0 +1,242 @@ +{ + "tag": "arith-probe5-neo", + "at": "2026-09-23T21:56:34.227Z", + "model": "ggml-small.en.bin", + "flags": { + "tag": "arith-probe5-neo", + "no-spoken": "1", + "keep": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out5" + }, + "scores": [ + { + "score": "probe5.mbscore", + "bpm": 96, + "voices": [ + { + "member": "neo", + "voice": "Noelle (Enhanced)", + "lines": [ + { + "line": 1, + "role": "lead", + "text": "add one and one", + "lyrics": "add one and one", + "notes": "61:1,59:1,59:1,57:2", + "duration": 3.1242630385487526, + "peak": 0.800000011920929, + "spanOffset": 0, + "notesUsed": 4, + "noteCount": 4, + "renderMs": 3128, + "heard": "Add one and one.", + "wer": 0, + "errors": 0, + "words": 3, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out5/probe5/neo/line-01.wav", + "spokenWav": null + }, + { + "line": 2, + "role": "lead", + "text": "add two and two", + "lyrics": "add two and two", + "notes": "r:7,61:1,59:1,59:1,57:2", + "duration": 3.749251700680272, + "peak": 0.800000011920929, + "spanOffset": 3.75, + "notesUsed": 4, + "noteCount": 4, + "renderMs": 1775, + "heard": "and to learn soon.", + "wer": 1, + "errors": 3, + "words": 3, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out5/probe5/neo/line-02.wav", + "spokenWav": null + }, + { + "line": 3, + "role": "lead", + "text": "add three and three", + "lyrics": "add three and three", + "notes": "r:14,61:1,59:1,59:1,57:2", + "duration": 3.749251700680272, + "peak": 0.800000011920929, + "spanOffset": 8.125, + "notesUsed": 4, + "noteCount": 4, + "renderMs": 1695, + "heard": "add 3 and 3", + "wer": 0, + "errors": 0, + "words": 3, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out5/probe5/neo/line-03.wav", + "spokenWav": null + }, + { + "line": 4, + "role": "lead", + "text": "add four and four", + "lyrics": "add four and four", + "notes": "r:21,61:1,59:1,59:1,57:2", + "duration": 3.749251700680272, + "peak": 0.800000011920929, + "spanOffset": 12.5, + "notesUsed": 4, + "noteCount": 4, + "renderMs": 2857, + "heard": "and four and four", + "wer": 0.3333333333333333, + "errors": 1, + "words": 3, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out5/probe5/neo/line-04.wav", + "spokenWav": null + }, + { + "line": 5, + "role": "lead", + "text": "add five and five", + "lyrics": "add five and five", + "notes": "r:28,61:1,59:1,59:1,57:2", + "duration": 3.749251700680272, + "peak": 0.800000011920929, + "spanOffset": 16.875, + "notesUsed": 4, + "noteCount": 4, + "renderMs": 2767, + "heard": "and five in five", + "wer": 0.6666666666666666, + "errors": 2, + "words": 3, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out5/probe5/neo/line-05.wav", + "spokenWav": null + }, + { + "line": 6, + "role": "lead", + "text": "what is one plus one", + "lyrics": "what is one plus one", + "notes": "r:35,61:1,59:1,59:1,59:1,57:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 21.25, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 1607, + "heard": "What is one plus one?", + "wer": 0, + "errors": 0, + "words": 5, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out5/probe5/neo/line-06.wav", + "spokenWav": null + }, + { + "line": 7, + "role": "lead", + "text": "what is four plus four", + "lyrics": "what is four plus four", + "notes": "r:43,61:1,59:1,59:1,59:1,57:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 26.25, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 2088, + "heard": "What is four plus four?", + "wer": 0, + "errors": 0, + "words": 5, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out5/probe5/neo/line-07.wav", + "spokenWav": null + }, + { + "line": 8, + "role": "lead", + "text": "now take one from two", + "lyrics": "now take one from two", + "notes": "r:51,61:1,59:1,59:1,59:1,57:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 31.25, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 2215, + "heard": "Now take one from two.", + "wer": 0, + "errors": 0, + "words": 5, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out5/probe5/neo/line-08.wav", + "spokenWav": null + }, + { + "line": 9, + "role": "lead", + "text": "take one away from two", + "lyrics": "take one a-way from two", + "notes": "r:59,61:1,59:1,59:1,59:1,59:1,57:2", + "duration": 4.999274376417233, + "peak": 0.800000011920929, + "spanOffset": 36.25, + "notesUsed": 6, + "noteCount": 6, + "renderMs": 3107, + "heard": "Take one away from Sue.", + "wer": 0.2, + "errors": 1, + "words": 5, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out5/probe5/neo/line-09.wav", + "spokenWav": null + }, + { + "line": 10, + "role": "lead", + "text": "now add one and one", + "lyrics": "now add one and one", + "notes": "r:68,61:1,59:1,59:1,59:1,57:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 41.875, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 1134, + "heard": "Now we're at one and one.", + "wer": 0.75, + "errors": 3, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/private/tmp/claude-501/-Users-jas-aesthetic-computer/9d4f9efe-53b9-4c09-9eda-1262c18a7422/scratchpad/probe/out5/probe5/neo/line-10.wav", + "spokenWav": null + } + ] + } + ] + } + ], + "total": { + "errors": 10, + "words": 39, + "wer": 0.2564102564102564, + "spokenErrors": 0, + "spokenWords": 0, + "spokenWer": 0 + } +} diff --git a/grants/culturehub-la-2026/macneopolitan/hear/sums-blueberry.json b/grants/culturehub-la-2026/macneopolitan/hear/sums-blueberry.json new file mode 100644 index 0000000000..62ee192da6 --- /dev/null +++ b/grants/culturehub-la-2026/macneopolitan/hear/sums-blueberry.json @@ -0,0 +1,328 @@ +{ + "tag": "sums-blueberry", + "at": "2026-09-23T22:13:42.484Z", + "model": "ggml-small.en.bin", + "flags": { + "tag": "sums-blueberry", + "voice": "1", + "voice-name": "Tom (Enhanced)", + "no-spoken": "1", + "keep": "/Users/jas/Shelf/macneopolitan-songs/sums/" + }, + "scores": [ + { + "score": "trio-sums.mbscore", + "bpm": 96, + "voices": [ + { + "member": "blueberry", + "voice": "Tom (Enhanced)", + "lines": [ + { + "line": 1, + "role": "hum", + "text": "dm dm dm dm", + "lyrics": "dm dm dm dm", + "notes": "50:2,45:2,47:2,47:2", + "duration": 4.999274376417233, + "peak": 0.800000011920929, + "spanOffset": 0, + "notesUsed": 4, + "noteCount": 4, + "renderMs": 2170, + "heard": null, + "wer": null, + "errors": 0, + "words": 0, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/sums/trio-sums/blueberry/line-01.wav", + "spokenWav": null + }, + { + "line": 2, + "role": "hum", + "text": "dm dm dm dm", + "lyrics": "dm dm dm dm", + "notes": "r:8,50:1.5,45:1.5,47:1.5,47:1.5", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 4.375, + "notesUsed": 4, + "noteCount": 4, + "renderMs": 997, + "heard": null, + "wer": null, + "errors": 0, + "words": 0, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/sums/trio-sums/blueberry/line-02.wav", + "spokenWav": null + }, + { + "line": 3, + "role": "lead", + "text": "one and one is two", + "lyrics": "one and one is two", + "notes": "r:22,47:1,45:1,47:1,49:1,50:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 13.125, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 1459, + "heard": "One and one is two.", + "wer": 0, + "errors": 0, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/sums/trio-sums/blueberry/line-03.wav", + "spokenWav": null + }, + { + "line": 4, + "role": "hum", + "text": "dm dm dm dm", + "lyrics": "dm dm dm dm", + "notes": "r:28,50:1.5,45:1.5,47:1.5,47:1.5", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 16.875, + "notesUsed": 4, + "noteCount": 4, + "renderMs": 1386, + "heard": null, + "wer": null, + "errors": 0, + "words": 0, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/sums/trio-sums/blueberry/line-04.wav", + "spokenWav": null + }, + { + "line": 5, + "role": "lead", + "text": "two and two is four", + "lyrics": "two and two is four", + "notes": "r:42,47:1,45:1,47:1,49:1,50:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 25.625, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 764, + "heard": "Two and two is four.", + "wer": 0, + "errors": 0, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/sums/trio-sums/blueberry/line-05.wav", + "spokenWav": null + }, + { + "line": 6, + "role": "lead", + "text": "one and one is two", + "lyrics": "one and one is two", + "notes": "r:48,47:1,45:1,47:1,49:1,50:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 29.375, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 1827, + "heard": "One and one is two.", + "wer": 0, + "errors": 0, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/sums/trio-sums/blueberry/line-06.wav", + "spokenWav": null + }, + { + "line": 7, + "role": "hum", + "text": "dm dm dm dm", + "lyrics": "dm dm dm dm", + "notes": "r:56,50:1.5,45:1.5,47:1.5,47:1.5", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 34.375, + "notesUsed": 4, + "noteCount": 4, + "renderMs": 1149, + "heard": null, + "wer": null, + "errors": 0, + "words": 0, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/sums/trio-sums/blueberry/line-07.wav", + "spokenWav": null + }, + { + "line": 8, + "role": "lead", + "text": "three and three is six", + "lyrics": "three and three is six", + "notes": "r:70,49:1,47:1,45:1,47:1,50:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 43.125, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 959, + "heard": "3 and 3 is 6.", + "wer": 0, + "errors": 0, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/sums/trio-sums/blueberry/line-08.wav", + "spokenWav": null + }, + { + "line": 9, + "role": "hum", + "text": "dm dm dm dm", + "lyrics": "dm dm dm dm", + "notes": "r:76,50:1.5,45:1.5,47:1.5,47:1.5", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 46.875, + "notesUsed": 4, + "noteCount": 4, + "renderMs": 956, + "heard": null, + "wer": null, + "errors": 0, + "words": 0, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/sums/trio-sums/blueberry/line-09.wav", + "spokenWav": null + }, + { + "line": 10, + "role": "lead", + "text": "four and four is eight", + "lyrics": "four and four is eight", + "notes": "r:90,47:1,49:1,47:1,45:1,50:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 55.625, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 782, + "heard": "4 and 4 is 8.", + "wer": 0, + "errors": 0, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/sums/trio-sums/blueberry/line-10.wav", + "spokenWav": null + }, + { + "line": 11, + "role": "hum", + "text": "dm dm dm dm", + "lyrics": "dm dm dm dm", + "notes": "r:96,50:1.5,45:1.5,47:1.5,47:1.5", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 59.375, + "notesUsed": 4, + "noteCount": 4, + "renderMs": 1757, + "heard": null, + "wer": null, + "errors": 0, + "words": 0, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/sums/trio-sums/blueberry/line-11.wav", + "spokenWav": null + }, + { + "line": 12, + "role": "lead", + "text": "five and five is ten", + "lyrics": "five and five is ten", + "notes": "r:110,50:1,49:1,47:1,45:1,50:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 68.125, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 1930, + "heard": "Five and five is ten.", + "wer": 0, + "errors": 0, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/sums/trio-sums/blueberry/line-12.wav", + "spokenWav": null + }, + { + "line": 13, + "role": "lead", + "text": "one and one is two", + "lyrics": "one and one is two", + "notes": "r:116,47:1,45:1,47:1,49:1,50:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 71.875, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 653, + "heard": "One and one is two.", + "wer": 0, + "errors": 0, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/sums/trio-sums/blueberry/line-13.wav", + "spokenWav": null + }, + { + "line": 14, + "role": "hum", + "text": "hmm hmm", + "lyrics": "hmm hmm", + "notes": "r:124,50:4,45:4", + "duration": 5.624263038548753, + "peak": 0.800000011920929, + "spanOffset": 76.875, + "notesUsed": 2, + "noteCount": 2, + "renderMs": 638, + "heard": null, + "wer": null, + "errors": 0, + "words": 0, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/sums/trio-sums/blueberry/line-14.wav", + "spokenWav": null + } + ] + } + ] + } + ], + "total": { + "errors": 0, + "words": 28, + "wer": 0, + "spokenErrors": 0, + "spokenWords": 0, + "spokenWer": 0 + } +} diff --git a/grants/culturehub-la-2026/macneopolitan/hear/sums-frisbee.json b/grants/culturehub-la-2026/macneopolitan/hear/sums-frisbee.json new file mode 100644 index 0000000000..7fb383eadc --- /dev/null +++ b/grants/culturehub-la-2026/macneopolitan/hear/sums-frisbee.json @@ -0,0 +1,327 @@ +{ + "tag": "sums-frisbee", + "at": "2026-09-23T22:05:58.734Z", + "model": "ggml-small.en.bin", + "flags": { + "tag": "sums-frisbee", + "voice": "2", + "no-spoken": "1", + "keep": "/Users/jas/Shelf/macneopolitan-songs/sums/" + }, + "scores": [ + { + "score": "trio-sums.mbscore", + "bpm": 96, + "voices": [ + { + "member": "frisbee", + "voice": "Zoe (Premium)", + "lines": [ + { + "line": 1, + "role": "hum", + "text": "ooh ooh", + "lyrics": "ooh ooh", + "notes": "57:4,54:4", + "duration": 4.999274376417233, + "peak": 0.800000011920929, + "spanOffset": 0, + "notesUsed": 2, + "noteCount": 2, + "renderMs": 1549, + "heard": null, + "wer": null, + "errors": 0, + "words": 0, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/sums/trio-sums/frisbee/line-01.wav", + "spokenWav": null + }, + { + "line": 2, + "role": "lead", + "text": "the answer is two", + "lyrics": "the an-swer is two", + "notes": "r:15,54:1,57:1,55:1,54:1,59:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 8.75, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 835, + "heard": "The answer is 2.", + "wer": 0, + "errors": 0, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/sums/trio-sums/frisbee/line-02.wav", + "spokenWav": null + }, + { + "line": 3, + "role": "hum", + "text": "ooh ooh", + "lyrics": "ooh ooh", + "notes": "r:22,57:3,54:3", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 13.125, + "notesUsed": 2, + "noteCount": 2, + "renderMs": 1863, + "heard": null, + "wer": null, + "errors": 0, + "words": 0, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/sums/trio-sums/frisbee/line-03.wav", + "spokenWav": null + }, + { + "line": 4, + "role": "lead", + "text": "the answer is four", + "lyrics": "the an-swer is four", + "notes": "r:35,55:1,57:1,55:1,54:1,59:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 21.25, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 1406, + "heard": "The answer is four.", + "wer": 0, + "errors": 0, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/sums/trio-sums/frisbee/line-04.wav", + "spokenWav": null + }, + { + "line": 5, + "role": "hum", + "text": "ooh ooh", + "lyrics": "ooh ooh", + "notes": "r:42,57:3,54:3", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 25.625, + "notesUsed": 2, + "noteCount": 2, + "renderMs": 723, + "heard": null, + "wer": null, + "errors": 0, + "words": 0, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/sums/trio-sums/frisbee/line-05.wav", + "spokenWav": null + }, + { + "line": 6, + "role": "lead", + "text": "one and one is two", + "lyrics": "one and one is two", + "notes": "r:48,54:1,55:1,54:1,59:1,57:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 29.375, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 2109, + "heard": "One and one is two.", + "wer": 0, + "errors": 0, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/sums/trio-sums/frisbee/line-06.wav", + "spokenWav": null + }, + { + "line": 7, + "role": "lead", + "text": "the answer is six", + "lyrics": "the an-swer is six", + "notes": "r:63,52:1,55:1,54:1,57:1,59:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 38.75, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 1690, + "heard": "The answer is 6.", + "wer": 0, + "errors": 0, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/sums/trio-sums/frisbee/line-07.wav", + "spokenWav": null + }, + { + "line": 8, + "role": "hum", + "text": "ooh ooh", + "lyrics": "ooh ooh", + "notes": "r:70,57:3,54:3", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 43.125, + "notesUsed": 2, + "noteCount": 2, + "renderMs": 2174, + "heard": null, + "wer": null, + "errors": 0, + "words": 0, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/sums/trio-sums/frisbee/line-08.wav", + "spokenWav": null + }, + { + "line": 9, + "role": "lead", + "text": "the answer is eight", + "lyrics": "the an-swer is eight", + "notes": "r:83,54:1,57:1,55:1,52:1,59:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 51.25, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 827, + "heard": "The answer is eight.", + "wer": 0, + "errors": 0, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/sums/trio-sums/frisbee/line-09.wav", + "spokenWav": null + }, + { + "line": 10, + "role": "hum", + "text": "ooh ooh", + "lyrics": "ooh ooh", + "notes": "r:90,57:3,54:3", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 55.625, + "notesUsed": 2, + "noteCount": 2, + "renderMs": 1053, + "heard": null, + "wer": null, + "errors": 0, + "words": 0, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/sums/trio-sums/frisbee/line-10.wav", + "spokenWav": null + }, + { + "line": 11, + "role": "lead", + "text": "the answer is ten", + "lyrics": "the an-swer is ten", + "notes": "r:103,55:1,57:1,54:1,55:1,59:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 63.75, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 1766, + "heard": "The answer is 10.", + "wer": 0, + "errors": 0, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/sums/trio-sums/frisbee/line-11.wav", + "spokenWav": null + }, + { + "line": 12, + "role": "hum", + "text": "ooh ooh", + "lyrics": "ooh ooh", + "notes": "r:110,57:3,54:3", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 68.125, + "notesUsed": 2, + "noteCount": 2, + "renderMs": 788, + "heard": null, + "wer": null, + "errors": 0, + "words": 0, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/sums/trio-sums/frisbee/line-12.wav", + "spokenWav": null + }, + { + "line": 13, + "role": "lead", + "text": "one and one is two", + "lyrics": "one and one is two", + "notes": "r:116,54:1,55:1,54:1,59:1,57:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 71.875, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 1013, + "heard": "One and one is two.", + "wer": 0, + "errors": 0, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/sums/trio-sums/frisbee/line-13.wav", + "spokenWav": null + }, + { + "line": 14, + "role": "hum", + "text": "hmm hmm", + "lyrics": "hmm hmm", + "notes": "r:124,57:4,54:4", + "duration": 5.624263038548753, + "peak": 0.800000011920929, + "spanOffset": 76.875, + "notesUsed": 2, + "noteCount": 2, + "renderMs": 1794, + "heard": null, + "wer": null, + "errors": 0, + "words": 0, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/sums/trio-sums/frisbee/line-14.wav", + "spokenWav": null + } + ] + } + ] + } + ], + "total": { + "errors": 0, + "words": 28, + "wer": 0, + "spokenErrors": 0, + "spokenWords": 0, + "spokenWer": 0 + } +} diff --git a/grants/culturehub-la-2026/macneopolitan/hear/sums-neo.json b/grants/culturehub-la-2026/macneopolitan/hear/sums-neo.json new file mode 100644 index 0000000000..14b4226300 --- /dev/null +++ b/grants/culturehub-la-2026/macneopolitan/hear/sums-neo.json @@ -0,0 +1,327 @@ +{ + "tag": "sums-neo", + "at": "2026-09-23T22:04:11.326Z", + "model": "ggml-small.en.bin", + "flags": { + "tag": "sums-neo", + "voice": "0", + "no-spoken": "1", + "keep": "/Users/jas/Shelf/macneopolitan-songs/sums/" + }, + "scores": [ + { + "score": "trio-sums.mbscore", + "bpm": 96, + "voices": [ + { + "member": "neo", + "voice": "Noelle (Enhanced)", + "lines": [ + { + "line": 1, + "role": "hum", + "text": "ooh ooh", + "lyrics": "ooh ooh", + "notes": "59:4,57:4", + "duration": 4.999274376417233, + "peak": 0.800000011920929, + "spanOffset": 0, + "notesUsed": 2, + "noteCount": 2, + "renderMs": 2334, + "heard": null, + "wer": null, + "errors": 0, + "words": 0, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/sums/trio-sums/neo/line-01.wav", + "spokenWav": null + }, + { + "line": 2, + "role": "lead", + "text": "what is one plus one", + "lyrics": "what is one plus one", + "notes": "r:8,61:1,59:1,59:1,59:1,57:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 4.375, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 849, + "heard": "What is one plus one?", + "wer": 0, + "errors": 0, + "words": 5, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/sums/trio-sums/neo/line-02.wav", + "spokenWav": null + }, + { + "line": 3, + "role": "hum", + "text": "ooh ooh", + "lyrics": "ooh ooh", + "notes": "r:22,59:3,57:3", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 13.125, + "notesUsed": 2, + "noteCount": 2, + "renderMs": 766, + "heard": null, + "wer": null, + "errors": 0, + "words": 0, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/sums/trio-sums/neo/line-03.wav", + "spokenWav": null + }, + { + "line": 4, + "role": "lead", + "text": "what is two plus two", + "lyrics": "what is two plus two", + "notes": "r:28,59:1,59:1,61:1,62:1,57:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 16.875, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 7645, + "heard": "What is 2 plus 2?", + "wer": 0, + "errors": 0, + "words": 5, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/sums/trio-sums/neo/line-04.wav", + "spokenWav": null + }, + { + "line": 5, + "role": "hum", + "text": "ooh ooh", + "lyrics": "ooh ooh", + "notes": "r:42,59:3,57:3", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 25.625, + "notesUsed": 2, + "noteCount": 2, + "renderMs": 703, + "heard": null, + "wer": null, + "errors": 0, + "words": 0, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/sums/trio-sums/neo/line-05.wav", + "spokenWav": null + }, + { + "line": 6, + "role": "lead", + "text": "one and one is two", + "lyrics": "one and one is two", + "notes": "r:48,59:1,57:1,59:1,61:1,62:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 29.375, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 1648, + "heard": "One and one is two.", + "wer": 0, + "errors": 0, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/sums/trio-sums/neo/line-06.wav", + "spokenWav": null + }, + { + "line": 7, + "role": "lead", + "text": "what is three plus three", + "lyrics": "what is three plus three", + "notes": "r:56,57:1,59:1,61:1,59:1,57:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 34.375, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 3181, + "heard": "What is 3 plus 3?", + "wer": 0, + "errors": 0, + "words": 5, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/sums/trio-sums/neo/line-07.wav", + "spokenWav": null + }, + { + "line": 8, + "role": "hum", + "text": "ooh ooh", + "lyrics": "ooh ooh", + "notes": "r:70,59:3,57:3", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 43.125, + "notesUsed": 2, + "noteCount": 2, + "renderMs": 699, + "heard": null, + "wer": null, + "errors": 0, + "words": 0, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/sums/trio-sums/neo/line-08.wav", + "spokenWav": null + }, + { + "line": 9, + "role": "lead", + "text": "what is four plus four", + "lyrics": "what is four plus four", + "notes": "r:76,59:1,61:1,62:1,61:1,57:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 46.875, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 1419, + "heard": "What is four plus four?", + "wer": 0, + "errors": 0, + "words": 5, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/sums/trio-sums/neo/line-09.wav", + "spokenWav": null + }, + { + "line": 10, + "role": "hum", + "text": "ooh ooh", + "lyrics": "ooh ooh", + "notes": "r:90,59:3,57:3", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 55.625, + "notesUsed": 2, + "noteCount": 2, + "renderMs": 2337, + "heard": null, + "wer": null, + "errors": 0, + "words": 0, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/sums/trio-sums/neo/line-10.wav", + "spokenWav": null + }, + { + "line": 11, + "role": "lead", + "text": "what is five plus five", + "lyrics": "what is five plus five", + "notes": "r:96,62:1,61:1,59:1,59:1,57:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 59.375, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 2181, + "heard": "What is five plus five?", + "wer": 0, + "errors": 0, + "words": 5, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/sums/trio-sums/neo/line-11.wav", + "spokenWav": null + }, + { + "line": 12, + "role": "hum", + "text": "ooh ooh", + "lyrics": "ooh ooh", + "notes": "r:110,59:3,57:3", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 68.125, + "notesUsed": 2, + "noteCount": 2, + "renderMs": 616, + "heard": null, + "wer": null, + "errors": 0, + "words": 0, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/sums/trio-sums/neo/line-12.wav", + "spokenWav": null + }, + { + "line": 13, + "role": "lead", + "text": "one and one is two", + "lyrics": "one and one is two", + "notes": "r:116,59:1,57:1,59:1,61:1,62:2", + "duration": 4.374240362811792, + "peak": 0.800000011920929, + "spanOffset": 71.875, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 1035, + "heard": "One and one is two.", + "wer": 0, + "errors": 0, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/sums/trio-sums/neo/line-13.wav", + "spokenWav": null + }, + { + "line": 14, + "role": "hum", + "text": "hmm hmm", + "lyrics": "hmm hmm", + "notes": "r:124,62:4,59:4", + "duration": 5.624263038548753, + "peak": 0.800000011920929, + "spanOffset": 76.875, + "notesUsed": 2, + "noteCount": 2, + "renderMs": 866, + "heard": null, + "wer": null, + "errors": 0, + "words": 0, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/sums/trio-sums/neo/line-14.wav", + "spokenWav": null + } + ] + } + ] + } + ], + "total": { + "errors": 0, + "words": 33, + "wer": 0, + "spokenErrors": 0, + "spokenWords": 0, + "spokenWer": 0 + } +} diff --git a/grants/culturehub-la-2026/macneopolitan/hear/take-away-blueberry.json b/grants/culturehub-la-2026/macneopolitan/hear/take-away-blueberry.json new file mode 100644 index 0000000000..9704bdad27 --- /dev/null +++ b/grants/culturehub-la-2026/macneopolitan/hear/take-away-blueberry.json @@ -0,0 +1,328 @@ +{ + "tag": "take-away-blueberry", + "at": "2026-09-23T22:16:49.804Z", + "model": "ggml-small.en.bin", + "flags": { + "tag": "take-away-blueberry", + "voice": "1", + "voice-name": "Tom (Enhanced)", + "no-spoken": "1", + "keep": "/Users/jas/Shelf/macneopolitan-songs/take-away/" + }, + "scores": [ + { + "score": "trio-take-away.mbscore", + "bpm": 92, + "voices": [ + { + "member": "blueberry", + "voice": "Tom (Enhanced)", + "lines": [ + { + "line": 1, + "role": "hum", + "text": "dm dm dm dm", + "lyrics": "dm dm dm dm", + "notes": "50:2,45:2,47:2,47:2", + "duration": 5.2142403628117915, + "peak": 0.800000011920929, + "spanOffset": 0, + "notesUsed": 4, + "noteCount": 4, + "renderMs": 364, + "heard": null, + "wer": null, + "errors": 0, + "words": 0, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/take-away/trio-take-away/blueberry/line-01.wav", + "spokenWav": null + }, + { + "line": 2, + "role": "hum", + "text": "dm dm dm dm", + "lyrics": "dm dm dm dm", + "notes": "r:8,50:1.5,45:1.5,47:1.5,47:1.5", + "duration": 4.564263038548753, + "peak": 0.800000011920929, + "spanOffset": 4.565217391304348, + "notesUsed": 4, + "noteCount": 4, + "renderMs": 343, + "heard": null, + "wer": null, + "errors": 0, + "words": 0, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/take-away/trio-take-away/blueberry/line-02.wav", + "spokenWav": null + }, + { + "line": 3, + "role": "lead", + "text": "five minus one is four", + "lyrics": "five mi-nus one is four", + "notes": "r:22,47:1,49:1,47:1,45:1,47:1,50:2", + "duration": 5.2142403628117915, + "peak": 0.800000011920929, + "spanOffset": 13.695652173913043, + "notesUsed": 6, + "noteCount": 6, + "renderMs": 402, + "heard": "5 minus 1 is 4.", + "wer": 0, + "errors": 0, + "words": 5, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/take-away/trio-take-away/blueberry/line-03.wav", + "spokenWav": null + }, + { + "line": 4, + "role": "hum", + "text": "dm dm dm dm", + "lyrics": "dm dm dm dm", + "notes": "r:29,50:1.5,45:1.5,47:1.5,47:1.5", + "duration": 4.564263038548753, + "peak": 0.800000011920929, + "spanOffset": 18.26086956521739, + "notesUsed": 4, + "noteCount": 4, + "renderMs": 406, + "heard": null, + "wer": null, + "errors": 0, + "words": 0, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/take-away/trio-take-away/blueberry/line-04.wav", + "spokenWav": null + }, + { + "line": 5, + "role": "lead", + "text": "four minus one is three", + "lyrics": "four mi-nus one is three", + "notes": "r:43,47:1,49:1,47:1,45:1,45:1,50:2", + "duration": 5.2142403628117915, + "peak": 0.800000011920929, + "spanOffset": 27.391304347826086, + "notesUsed": 6, + "noteCount": 6, + "renderMs": 437, + "heard": "4 minus 1 is 3.", + "wer": 0, + "errors": 0, + "words": 5, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/take-away/trio-take-away/blueberry/line-05.wav", + "spokenWav": null + }, + { + "line": 6, + "role": "lead", + "text": "take one away", + "lyrics": "take one a-way", + "notes": "r:50,47:1,49:1,47:1,50:2", + "duration": 3.914240362811791, + "peak": 0.800000011920929, + "spanOffset": 31.956521739130434, + "notesUsed": 4, + "noteCount": 4, + "renderMs": 271, + "heard": "Take one away.", + "wer": 0, + "errors": 0, + "words": 3, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/take-away/trio-take-away/blueberry/line-06.wav", + "spokenWav": null + }, + { + "line": 7, + "role": "hum", + "text": "dm dm dm dm", + "lyrics": "dm dm dm dm", + "notes": "r:57,50:1.5,45:1.5,47:1.5,47:1.5", + "duration": 4.564263038548753, + "peak": 0.800000011920929, + "spanOffset": 36.52173913043478, + "notesUsed": 4, + "noteCount": 4, + "renderMs": 366, + "heard": null, + "wer": null, + "errors": 0, + "words": 0, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/take-away/trio-take-away/blueberry/line-07.wav", + "spokenWav": null + }, + { + "line": 8, + "role": "lead", + "text": "three minus one is two", + "lyrics": "three mi-nus one is two", + "notes": "r:71,49:1,47:1,45:1,47:1,45:1,50:2", + "duration": 5.2142403628117915, + "peak": 0.800000011920929, + "spanOffset": 45.65217391304348, + "notesUsed": 6, + "noteCount": 6, + "renderMs": 369, + "heard": "Three minus one is two.", + "wer": 0, + "errors": 0, + "words": 5, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/take-away/trio-take-away/blueberry/line-08.wav", + "spokenWav": null + }, + { + "line": 9, + "role": "hum", + "text": "dm dm dm dm", + "lyrics": "dm dm dm dm", + "notes": "r:78,50:1.5,45:1.5,47:1.5,47:1.5", + "duration": 4.564263038548753, + "peak": 0.800000011920929, + "spanOffset": 50.21739130434783, + "notesUsed": 4, + "noteCount": 4, + "renderMs": 390, + "heard": null, + "wer": null, + "errors": 0, + "words": 0, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/take-away/trio-take-away/blueberry/line-09.wav", + "spokenWav": null + }, + { + "line": 10, + "role": "lead", + "text": "two minus one is one", + "lyrics": "two mi-nus one is one", + "notes": "r:92,47:1,49:1,45:1,47:1,45:1,50:2", + "duration": 5.2142403628117915, + "peak": 0.800000011920929, + "spanOffset": 59.34782608695652, + "notesUsed": 6, + "noteCount": 6, + "renderMs": 404, + "heard": "2 minus 1 is 1.", + "wer": 0, + "errors": 0, + "words": 5, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/take-away/trio-take-away/blueberry/line-10.wav", + "spokenWav": null + }, + { + "line": 11, + "role": "hum", + "text": "dm dm dm dm", + "lyrics": "dm dm dm dm", + "notes": "r:99,50:1.5,45:1.5,47:1.5,47:1.5", + "duration": 4.564263038548753, + "peak": 0.800000011920929, + "spanOffset": 63.91304347826087, + "notesUsed": 4, + "noteCount": 4, + "renderMs": 387, + "heard": null, + "wer": null, + "errors": 0, + "words": 0, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/take-away/trio-take-away/blueberry/line-11.wav", + "spokenWav": null + }, + { + "line": 12, + "role": "lead", + "text": "and nothing is left", + "lyrics": "and no-thing is left", + "notes": "r:113,45:1,49:1,47:1,45:1,50:2", + "duration": 4.564263038548753, + "peak": 0.800000011920929, + "spanOffset": 73.04347826086956, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 312, + "heard": "And nothing is left.", + "wer": 0, + "errors": 0, + "words": 3, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/take-away/trio-take-away/blueberry/line-12.wav", + "spokenWav": null + }, + { + "line": 13, + "role": "lead", + "text": "take one away", + "lyrics": "take one a-way", + "notes": "r:120,47:1,49:1,47:1,50:2", + "duration": 3.914240362811791, + "peak": 0.800000011920929, + "spanOffset": 77.60869565217392, + "notesUsed": 4, + "noteCount": 4, + "renderMs": 280, + "heard": "Take one away.", + "wer": 0, + "errors": 0, + "words": 3, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/take-away/trio-take-away/blueberry/line-13.wav", + "spokenWav": null + }, + { + "line": 14, + "role": "hum", + "text": "hmm hmm", + "lyrics": "hmm hmm", + "notes": "r:127,50:3.5,45:3.5", + "duration": 5.2142403628117915, + "peak": 0.800000011920929, + "spanOffset": 82.17391304347827, + "notesUsed": 2, + "noteCount": 2, + "renderMs": 247, + "heard": null, + "wer": null, + "errors": 0, + "words": 0, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/take-away/trio-take-away/blueberry/line-14.wav", + "spokenWav": null + } + ] + } + ] + } + ], + "total": { + "errors": 0, + "words": 29, + "wer": 0, + "spokenErrors": 0, + "spokenWords": 0, + "spokenWer": 0 + } +} diff --git a/grants/culturehub-la-2026/macneopolitan/hear/take-away-frisbee.json b/grants/culturehub-la-2026/macneopolitan/hear/take-away-frisbee.json new file mode 100644 index 0000000000..f45ceba4a9 --- /dev/null +++ b/grants/culturehub-la-2026/macneopolitan/hear/take-away-frisbee.json @@ -0,0 +1,327 @@ +{ + "tag": "take-away-frisbee", + "at": "2026-09-23T22:16:16.265Z", + "model": "ggml-small.en.bin", + "flags": { + "tag": "take-away-frisbee", + "voice": "2", + "no-spoken": "1", + "keep": "/Users/jas/Shelf/macneopolitan-songs/take-away/" + }, + "scores": [ + { + "score": "trio-take-away.mbscore", + "bpm": 92, + "voices": [ + { + "member": "frisbee", + "voice": "Zoe (Premium)", + "lines": [ + { + "line": 1, + "role": "hum", + "text": "ooh ooh", + "lyrics": "ooh ooh", + "notes": "57:4,54:4", + "duration": 5.2142403628117915, + "peak": 0.800000011920929, + "spanOffset": 0, + "notesUsed": 2, + "noteCount": 2, + "renderMs": 512, + "heard": null, + "wer": null, + "errors": 0, + "words": 0, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/take-away/trio-take-away/frisbee/line-01.wav", + "spokenWav": null + }, + { + "line": 2, + "role": "lead", + "text": "the answer is four", + "lyrics": "the an-swer is four", + "notes": "r:15,54:1,57:1,55:1,54:1,57:2", + "duration": 4.564263038548753, + "peak": 0.800000011920929, + "spanOffset": 9.130434782608695, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 919, + "heard": "The answer is four.", + "wer": 0, + "errors": 0, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/take-away/trio-take-away/frisbee/line-02.wav", + "spokenWav": null + }, + { + "line": 3, + "role": "hum", + "text": "ooh ooh", + "lyrics": "ooh ooh", + "notes": "r:22,57:3.5,54:3.5", + "duration": 5.2142403628117915, + "peak": 0.800000011920929, + "spanOffset": 13.695652173913043, + "notesUsed": 2, + "noteCount": 2, + "renderMs": 570, + "heard": null, + "wer": null, + "errors": 0, + "words": 0, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/take-away/trio-take-away/frisbee/line-03.wav", + "spokenWav": null + }, + { + "line": 4, + "role": "lead", + "text": "the answer is three", + "lyrics": "the an-swer is three", + "notes": "r:36,54:1,55:1,54:1,52:1,57:2", + "duration": 4.564263038548753, + "peak": 0.800000011920929, + "spanOffset": 22.82608695652174, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 435, + "heard": "The answer is three.", + "wer": 0, + "errors": 0, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/take-away/trio-take-away/frisbee/line-04.wav", + "spokenWav": null + }, + { + "line": 5, + "role": "hum", + "text": "ooh ooh", + "lyrics": "ooh ooh", + "notes": "r:43,57:3.5,54:3.5", + "duration": 5.2142403628117915, + "peak": 0.800000011920929, + "spanOffset": 27.391304347826086, + "notesUsed": 2, + "noteCount": 2, + "renderMs": 973, + "heard": null, + "wer": null, + "errors": 0, + "words": 0, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/take-away/trio-take-away/frisbee/line-05.wav", + "spokenWav": null + }, + { + "line": 6, + "role": "lead", + "text": "take one away", + "lyrics": "take one a-way", + "notes": "r:50,54:1,55:1,54:1,57:2", + "duration": 3.914240362811791, + "peak": 0.800000011920929, + "spanOffset": 31.956521739130434, + "notesUsed": 4, + "noteCount": 4, + "renderMs": 397, + "heard": "Take one away.", + "wer": 0, + "errors": 0, + "words": 3, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/take-away/trio-take-away/frisbee/line-06.wav", + "spokenWav": null + }, + { + "line": 7, + "role": "lead", + "text": "the answer is two", + "lyrics": "the an-swer is two", + "notes": "r:64,55:1,57:1,55:1,54:1,57:2", + "duration": 4.564263038548753, + "peak": 0.800000011920929, + "spanOffset": 41.08695652173913, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 560, + "heard": "The answer is 2.", + "wer": 0, + "errors": 0, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/take-away/trio-take-away/frisbee/line-07.wav", + "spokenWav": null + }, + { + "line": 8, + "role": "hum", + "text": "ooh ooh", + "lyrics": "ooh ooh", + "notes": "r:71,57:3.5,54:3.5", + "duration": 5.2142403628117915, + "peak": 0.800000011920929, + "spanOffset": 45.65217391304348, + "notesUsed": 2, + "noteCount": 2, + "renderMs": 783, + "heard": null, + "wer": null, + "errors": 0, + "words": 0, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/take-away/trio-take-away/frisbee/line-08.wav", + "spokenWav": null + }, + { + "line": 9, + "role": "lead", + "text": "the answer is one", + "lyrics": "the an-swer is one", + "notes": "r:85,54:1,57:1,55:1,52:1,57:2", + "duration": 4.564263038548753, + "peak": 0.800000011920929, + "spanOffset": 54.78260869565217, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 433, + "heard": "The answer is... one.", + "wer": 0, + "errors": 0, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/take-away/trio-take-away/frisbee/line-09.wav", + "spokenWav": null + }, + { + "line": 10, + "role": "hum", + "text": "ooh ooh", + "lyrics": "ooh ooh", + "notes": "r:92,57:3.5,54:3.5", + "duration": 5.2142403628117915, + "peak": 0.800000011920929, + "spanOffset": 59.34782608695652, + "notesUsed": 2, + "noteCount": 2, + "renderMs": 826, + "heard": null, + "wer": null, + "errors": 0, + "words": 0, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/take-away/trio-take-away/frisbee/line-10.wav", + "spokenWav": null + }, + { + "line": 11, + "role": "lead", + "text": "the answer is zero", + "lyrics": "the an-swer is ze-ro", + "notes": "r:106,54:1,57:1,55:1,54:1,55:1,57:2", + "duration": 5.2142403628117915, + "peak": 0.800000011920929, + "spanOffset": 68.47826086956522, + "notesUsed": 6, + "noteCount": 6, + "renderMs": 565, + "heard": "The answer is zero.", + "wer": 0, + "errors": 0, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/take-away/trio-take-away/frisbee/line-11.wav", + "spokenWav": null + }, + { + "line": 12, + "role": "hum", + "text": "ooh ooh", + "lyrics": "ooh ooh", + "notes": "r:113,57:3.5,54:3.5", + "duration": 5.2142403628117915, + "peak": 0.800000011920929, + "spanOffset": 73.04347826086956, + "notesUsed": 2, + "noteCount": 2, + "renderMs": 249, + "heard": null, + "wer": null, + "errors": 0, + "words": 0, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/take-away/trio-take-away/frisbee/line-12.wav", + "spokenWav": null + }, + { + "line": 13, + "role": "lead", + "text": "take one away", + "lyrics": "take one a-way", + "notes": "r:120,54:1,55:1,54:1,57:2", + "duration": 3.914240362811791, + "peak": 0.800000011920929, + "spanOffset": 77.60869565217392, + "notesUsed": 4, + "noteCount": 4, + "renderMs": 266, + "heard": "Take one away.", + "wer": 0, + "errors": 0, + "words": 3, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/take-away/trio-take-away/frisbee/line-13.wav", + "spokenWav": null + }, + { + "line": 14, + "role": "hum", + "text": "hmm hmm", + "lyrics": "hmm hmm", + "notes": "r:127,57:3.5,54:3.5", + "duration": 5.2142403628117915, + "peak": 0.800000011920929, + "spanOffset": 82.17391304347827, + "notesUsed": 2, + "noteCount": 2, + "renderMs": 278, + "heard": null, + "wer": null, + "errors": 0, + "words": 0, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/take-away/trio-take-away/frisbee/line-14.wav", + "spokenWav": null + } + ] + } + ] + } + ], + "total": { + "errors": 0, + "words": 26, + "wer": 0, + "spokenErrors": 0, + "spokenWords": 0, + "spokenWer": 0 + } +} diff --git a/grants/culturehub-la-2026/macneopolitan/hear/take-away-neo.json b/grants/culturehub-la-2026/macneopolitan/hear/take-away-neo.json new file mode 100644 index 0000000000..f01b455602 --- /dev/null +++ b/grants/culturehub-la-2026/macneopolitan/hear/take-away-neo.json @@ -0,0 +1,327 @@ +{ + "tag": "take-away-neo", + "at": "2026-09-23T22:15:13.106Z", + "model": "ggml-small.en.bin", + "flags": { + "tag": "take-away-neo", + "voice": "0", + "no-spoken": "1", + "keep": "/Users/jas/Shelf/macneopolitan-songs/take-away/" + }, + "scores": [ + { + "score": "trio-take-away.mbscore", + "bpm": 92, + "voices": [ + { + "member": "neo", + "voice": "Noelle (Enhanced)", + "lines": [ + { + "line": 1, + "role": "hum", + "text": "ooh ooh", + "lyrics": "ooh ooh", + "notes": "59:4,57:4", + "duration": 5.2142403628117915, + "peak": 0.800000011920929, + "spanOffset": 0, + "notesUsed": 2, + "noteCount": 2, + "renderMs": 2287, + "heard": null, + "wer": null, + "errors": 0, + "words": 0, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/take-away/trio-take-away/neo/line-01.wav", + "spokenWav": null + }, + { + "line": 2, + "role": "lead", + "text": "five take one away", + "lyrics": "five take one a-way", + "notes": "r:8,62:1,61:1,61:1,59:1,59:2", + "duration": 4.564263038548753, + "peak": 0.800000011920929, + "spanOffset": 4.565217391304348, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 1100, + "heard": "Five take one away.", + "wer": 0, + "errors": 0, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/take-away/trio-take-away/neo/line-02.wav", + "spokenWav": null + }, + { + "line": 3, + "role": "hum", + "text": "ooh ooh", + "lyrics": "ooh ooh", + "notes": "r:22,59:3.5,57:3.5", + "duration": 5.2142403628117915, + "peak": 0.800000011920929, + "spanOffset": 13.695652173913043, + "notesUsed": 2, + "noteCount": 2, + "renderMs": 1112, + "heard": null, + "wer": null, + "errors": 0, + "words": 0, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/take-away/trio-take-away/neo/line-03.wav", + "spokenWav": null + }, + { + "line": 4, + "role": "lead", + "text": "four take one away", + "lyrics": "four take one a-way", + "notes": "r:29,61:1,61:1,59:1,61:1,59:2", + "duration": 4.564263038548753, + "peak": 0.800000011920929, + "spanOffset": 18.26086956521739, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 2331, + "heard": "4 take 1 away", + "wer": 0, + "errors": 0, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/take-away/trio-take-away/neo/line-04.wav", + "spokenWav": null + }, + { + "line": 5, + "role": "hum", + "text": "ooh ooh", + "lyrics": "ooh ooh", + "notes": "r:43,59:3.5,57:3.5", + "duration": 5.2142403628117915, + "peak": 0.800000011920929, + "spanOffset": 27.391304347826086, + "notesUsed": 2, + "noteCount": 2, + "renderMs": 934, + "heard": null, + "wer": null, + "errors": 0, + "words": 0, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/take-away/trio-take-away/neo/line-05.wav", + "spokenWav": null + }, + { + "line": 6, + "role": "lead", + "text": "take one away", + "lyrics": "take one a-way", + "notes": "r:50,59:1,61:1,59:1,62:2", + "duration": 3.914240362811791, + "peak": 0.800000011920929, + "spanOffset": 31.956521739130434, + "notesUsed": 4, + "noteCount": 4, + "renderMs": 1155, + "heard": "Take one away.", + "wer": 0, + "errors": 0, + "words": 3, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/take-away/trio-take-away/neo/line-06.wav", + "spokenWav": null + }, + { + "line": 7, + "role": "lead", + "text": "three take one away", + "lyrics": "three take one a-way", + "notes": "r:57,61:1,59:1,59:1,61:1,59:2", + "duration": 4.564263038548753, + "peak": 0.800000011920929, + "spanOffset": 36.52173913043478, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 2986, + "heard": "Three take one away.", + "wer": 0, + "errors": 0, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/take-away/trio-take-away/neo/line-07.wav", + "spokenWav": null + }, + { + "line": 8, + "role": "hum", + "text": "ooh ooh", + "lyrics": "ooh ooh", + "notes": "r:71,59:3.5,57:3.5", + "duration": 5.2142403628117915, + "peak": 0.800000011920929, + "spanOffset": 45.65217391304348, + "notesUsed": 2, + "noteCount": 2, + "renderMs": 999, + "heard": null, + "wer": null, + "errors": 0, + "words": 0, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/take-away/trio-take-away/neo/line-08.wav", + "spokenWav": null + }, + { + "line": 9, + "role": "lead", + "text": "now take one from two", + "lyrics": "now take one from two", + "notes": "r:78,59:1,61:1,59:1,59:1,59:2", + "duration": 4.564263038548753, + "peak": 0.800000011920929, + "spanOffset": 50.21739130434783, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 975, + "heard": "Now take one from... two.", + "wer": 0, + "errors": 0, + "words": 5, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/take-away/trio-take-away/neo/line-09.wav", + "spokenWav": null + }, + { + "line": 10, + "role": "hum", + "text": "ooh ooh", + "lyrics": "ooh ooh", + "notes": "r:92,59:3.5,57:3.5", + "duration": 5.2142403628117915, + "peak": 0.800000011920929, + "spanOffset": 59.34782608695652, + "notesUsed": 2, + "noteCount": 2, + "renderMs": 386, + "heard": null, + "wer": null, + "errors": 0, + "words": 0, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/take-away/trio-take-away/neo/line-10.wav", + "spokenWav": null + }, + { + "line": 11, + "role": "lead", + "text": "one take one away", + "lyrics": "one take one a-way", + "notes": "r:99,59:1,59:1,57:1,59:1,59:2", + "duration": 4.564263038548753, + "peak": 0.800000011920929, + "spanOffset": 63.91304347826087, + "notesUsed": 5, + "noteCount": 5, + "renderMs": 565, + "heard": "One take one away", + "wer": 0, + "errors": 0, + "words": 4, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/take-away/trio-take-away/neo/line-11.wav", + "spokenWav": null + }, + { + "line": 12, + "role": "hum", + "text": "ooh ooh", + "lyrics": "ooh ooh", + "notes": "r:113,59:3.5,57:3.5", + "duration": 5.2142403628117915, + "peak": 0.800000011920929, + "spanOffset": 73.04347826086956, + "notesUsed": 2, + "noteCount": 2, + "renderMs": 489, + "heard": null, + "wer": null, + "errors": 0, + "words": 0, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/take-away/trio-take-away/neo/line-12.wav", + "spokenWav": null + }, + { + "line": 13, + "role": "lead", + "text": "take one away", + "lyrics": "take one a-way", + "notes": "r:120,59:1,61:1,59:1,62:2", + "duration": 3.914240362811791, + "peak": 0.800000011920929, + "spanOffset": 77.60869565217392, + "notesUsed": 4, + "noteCount": 4, + "renderMs": 594, + "heard": "Take one away.", + "wer": 0, + "errors": 0, + "words": 3, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/take-away/trio-take-away/neo/line-13.wav", + "spokenWav": null + }, + { + "line": 14, + "role": "hum", + "text": "hmm hmm", + "lyrics": "hmm hmm", + "notes": "r:127,62:3.5,59:3.5", + "duration": 5.2142403628117915, + "peak": 0.800000011920929, + "spanOffset": 82.17391304347827, + "notesUsed": 2, + "noteCount": 2, + "renderMs": 672, + "heard": null, + "wer": null, + "errors": 0, + "words": 0, + "spokenHeard": null, + "spokenWer": null, + "wav": "/Users/jas/Shelf/macneopolitan-songs/take-away/trio-take-away/neo/line-14.wav", + "spokenWav": null + } + ] + } + ] + } + ], + "total": { + "errors": 0, + "words": 27, + "wer": 0, + "spokenErrors": 0, + "spokenWords": 0, + "spokenWer": 0 + } +} diff --git a/grants/culturehub-la-2026/macneopolitan/scores/trio-lullaby.mbscore b/grants/culturehub-la-2026/macneopolitan/scores/trio-lullaby.mbscore index e9fb53a452..561599f2f0 100644 --- a/grants/culturehub-la-2026/macneopolitan/scores/trio-lullaby.mbscore +++ b/grants/culturehub-la-2026/macneopolitan/scores/trio-lullaby.mbscore @@ -263,10 +263,10 @@ } }, { - "name": "blueberry sings (Tom (Enhanced))", + "name": "blueberry sings (Aaron (Enhanced))", "program": 78, "velocity": 64, - "notes": "38:2,45:1,38:2,45:1,38:2,45:1,43:2,50:1,38:2,45:1,45:2,52:1,38:2,45:1,43:2,50:1,38:2,45:1,45:2,52:1,38:2,45:1,43:2,50:1,43:2,50:1,45:1,38:2,38:3,38:3,38:3", + "notes": "50:2,45:1,50:2,45:1,50:2,45:1,43:2,50:1,50:2,45:1,45:2,52:1,50:2,45:1,43:2,50:1,50:2,45:1,45:2,52:1,50:2,45:1,43:2,50:1,43:2,50:1,45:1,50:2,50:3,50:3,50:3", "lyrics": "hmm hmm hmm hmm / hmm hmm hmm hmm / hmm hmm hmm hmm / hmm hmm hmm hmm / hmm hmm hmm hmm / hmm hmm hmm hmm / hmm hmm hmm hmm / hmm hmm / hmm", "lineRoles": [ "hum", @@ -341,12 +341,12 @@ 1 ] ], - "singVoice": "Tom (Enhanced)", - "sayVoice": "Tom (Enhanced)", + "singVoice": "Aaron (Enhanced)", + "sayVoice": "Aaron (Enhanced)", "singLock": 1, "singVibCents": 8, "singVibratoHz": 3.5, - "singF0Floor": 55, + "singF0Floor": 70, "double": false, "performance": { "expression": 0.6, diff --git a/grants/culturehub-la-2026/macneopolitan/scores/trio-sums.mbscore b/grants/culturehub-la-2026/macneopolitan/scores/trio-sums.mbscore new file mode 100644 index 0000000000..11da453d02 --- /dev/null +++ b/grants/culturehub-la-2026/macneopolitan/scores/trio-sums.mbscore @@ -0,0 +1,669 @@ +{ + "title": "The MacNeoPolitan Trio — Sums", + "composer": "The machines, arr. compose-sums.mjs", + "bpm": 96, + "machines": 3, + "lead": 0, + "description": "An addition lesson in five rounds. 4/4, D major, 96 bpm, 132 beats. neo asks (what is N plus N), frisbee answers (the answer is 2N), blueberry says the equation back in the bottom of the room (N and N is 2N), and twice all three sing one and one is two together. The tune carries the arithmetic: every question ends on the dominant, every answer one step above it, every confirmation on the tonic.", + "arrangement": { + "total": 132, + "meter": "4/4", + "sections": [ + { + "beat": 0, + "name": "Room" + }, + { + "beat": 8, + "name": "1 + 1" + }, + { + "beat": 28, + "name": "2 + 2" + }, + { + "beat": 48, + "name": "All: one and one is two" + }, + { + "beat": 56, + "name": "3 + 3" + }, + { + "beat": 76, + "name": "4 + 4" + }, + { + "beat": 96, + "name": "5 + 5" + }, + { + "beat": 116, + "name": "All: one and one is two" + }, + { + "beat": 124, + "name": "Room" + } + ] + }, + "voices": [ + { + "name": "neo sings (Noelle (Enhanced))", + "program": 78, + "velocity": 64, + "notes": "59:4,57:4,61:1,59:1,59:1,59:1,57:2,r:8,59:3,57:3,59:1,59:1,61:1,62:1,57:2,r:8,59:3,57:3,59:1,57:1,59:1,61:1,62:2,r:2,57:1,59:1,61:1,59:1,57:2,r:8,59:3,57:3,59:1,61:1,62:1,61:1,57:2,r:8,59:3,57:3,62:1,61:1,59:1,59:1,57:2,r:8,59:3,57:3,59:1,57:1,59:1,61:1,62:2,r:2,62:4,59:4", + "lyrics": "ooh ooh / what is one plus one / ooh ooh / what is two plus two / ooh ooh / one and one is two / what is three plus three / ooh ooh / what is four plus four / ooh ooh / what is five plus five / ooh ooh / one and one is two / hmm hmm", + "lineRoles": [ + "hum", + "lead", + "hum", + "lead", + "hum", + "lead", + "lead", + "hum", + "lead", + "hum", + "lead", + "hum", + "lead", + "hum" + ], + "lineGains": [ + 0.26, + 0.56, + 0.26, + 0.56, + 0.26, + 0.58, + 0.56, + 0.26, + 0.56, + 0.26, + 0.56, + 0.26, + 0.58, + 0.3 + ], + "noteGains": [ + [ + 1, + 0.78 + ], + [ + 1, + 0.78, + 0.94, + 0.74, + 0.9 + ], + [ + 1, + 0.78 + ], + [ + 1, + 0.78, + 0.94, + 0.74, + 0.9 + ], + [ + 1, + 0.78 + ], + [ + 1, + 0.78, + 0.94, + 0.74, + 0.9 + ], + [ + 1, + 0.78, + 0.94, + 0.74, + 0.9 + ], + [ + 1, + 0.78 + ], + [ + 1, + 0.78, + 0.94, + 0.74, + 0.9 + ], + [ + 1, + 0.78 + ], + [ + 1, + 0.78, + 0.94, + 0.74, + 0.9 + ], + [ + 1, + 0.78 + ], + [ + 1, + 0.78, + 0.94, + 0.74, + 0.9 + ], + [ + 1, + 0.78 + ] + ], + "singVoice": "Noelle (Enhanced)", + "sayVoice": "Noelle (Enhanced)", + "singLock": 1, + "singVibCents": 10, + "singVibratoHz": 5, + "singF0Floor": 80, + "double": false, + "faceAlpha": 0.95, + "performance": { + "expression": 0.6, + "keys": [ + { + "beat": 0, + "space": 0.46, + "pitch": 0 + }, + { + "beat": 47.6, + "space": 0.46, + "pitch": 0, + "echo": 0 + }, + { + "beat": 52.3, + "space": 0.46, + "pitch": 0 + }, + { + "beat": 52.8, + "space": 0.46, + "pitch": 0, + "echo": 0.8 + }, + { + "beat": 56, + "space": 0.46, + "pitch": 0, + "echo": 0.8 + }, + { + "beat": 115.6, + "space": 0.46, + "pitch": 0, + "echo": 0 + }, + { + "beat": 120.3, + "space": 0.46, + "pitch": 0 + }, + { + "beat": 120.8, + "space": 0.46, + "pitch": 0, + "echo": 0.8 + }, + { + "beat": 124, + "space": 0.46, + "pitch": 0, + "echo": 0.8 + }, + { + "beat": 136, + "space": 0.46, + "pitch": 0, + "echo": 0.8 + }, + { + "beat": 140, + "space": 0, + "pitch": 0, + "echo": 0 + } + ] + } + }, + { + "name": "blueberry sings (Aaron (Enhanced))", + "program": 78, + "velocity": 64, + "notes": "50:2,45:2,47:2,47:2,50:1.5,45:1.5,47:1.5,47:1.5,r:8,47:1,45:1,47:1,49:1,50:2,50:1.5,45:1.5,47:1.5,47:1.5,r:8,47:1,45:1,47:1,49:1,50:2,47:1,45:1,47:1,49:1,50:2,r:2,50:1.5,45:1.5,47:1.5,47:1.5,r:8,49:1,47:1,45:1,47:1,50:2,50:1.5,45:1.5,47:1.5,47:1.5,r:8,47:1,49:1,47:1,45:1,50:2,50:1.5,45:1.5,47:1.5,47:1.5,r:8,50:1,49:1,47:1,45:1,50:2,47:1,45:1,47:1,49:1,50:2,r:2,50:4,45:4", + "lyrics": "dm dm dm dm / dm dm dm dm / one and one is two / dm dm dm dm / two and two is four / one and one is two / dm dm dm dm / three and three is six / dm dm dm dm / four and four is eight / dm dm dm dm / five and five is ten / one and one is two / hmm hmm", + "lineRoles": [ + "hum", + "hum", + "lead", + "hum", + "lead", + "lead", + "hum", + "lead", + "hum", + "lead", + "hum", + "lead", + "lead", + "hum" + ], + "lineGains": [ + 0.32, + 0.32, + 0.52, + 0.32, + 0.52, + 0.52, + 0.32, + 0.52, + 0.32, + 0.52, + 0.32, + 0.52, + 0.52, + 0.3 + ], + "noteGains": [ + [ + 1, + 0.72, + 0.9, + 0.68 + ], + [ + 1, + 0.72, + 0.9, + 0.68 + ], + [ + 1, + 0.72, + 0.9, + 0.68, + 1 + ], + [ + 1, + 0.72, + 0.9, + 0.68 + ], + [ + 1, + 0.72, + 0.9, + 0.68, + 1 + ], + [ + 1, + 0.72, + 0.9, + 0.68, + 1 + ], + [ + 1, + 0.72, + 0.9, + 0.68 + ], + [ + 1, + 0.72, + 0.9, + 0.68, + 1 + ], + [ + 1, + 0.72, + 0.9, + 0.68 + ], + [ + 1, + 0.72, + 0.9, + 0.68, + 1 + ], + [ + 1, + 0.72, + 0.9, + 0.68 + ], + [ + 1, + 0.72, + 0.9, + 0.68, + 1 + ], + [ + 1, + 0.72, + 0.9, + 0.68, + 1 + ], + [ + 1, + 0.72 + ] + ], + "singVoice": "Aaron (Enhanced)", + "sayVoice": "Aaron (Enhanced)", + "singLock": 1, + "singVibCents": 10, + "singVibratoHz": 3.5, + "singF0Floor": 70, + "double": false, + "faceAlpha": 0.95, + "performance": { + "expression": 0.6, + "keys": [ + { + "beat": 0, + "space": 0.32, + "pitch": 0 + }, + { + "beat": 21.6, + "space": 0.32, + "pitch": 0, + "echo": 0 + }, + { + "beat": 26.3, + "space": 0.32, + "pitch": 0 + }, + { + "beat": 26.8, + "space": 0.32, + "pitch": 0, + "echo": 0.8 + }, + { + "beat": 30, + "space": 0.32, + "pitch": 0, + "echo": 0.8 + }, + { + "beat": 47.6, + "space": 0.32, + "pitch": 0, + "echo": 0 + }, + { + "beat": 52.3, + "space": 0.32, + "pitch": 0 + }, + { + "beat": 52.8, + "space": 0.32, + "pitch": 0, + "echo": 0.8 + }, + { + "beat": 56, + "space": 0.32, + "pitch": 0, + "echo": 0.8 + }, + { + "beat": 115.6, + "space": 0.32, + "pitch": 0, + "echo": 0 + }, + { + "beat": 120.3, + "space": 0.32, + "pitch": 0 + }, + { + "beat": 120.8, + "space": 0.32, + "pitch": 0, + "echo": 0.8 + }, + { + "beat": 124, + "space": 0.32, + "pitch": 0, + "echo": 0.8 + }, + { + "beat": 136, + "space": 0.32, + "pitch": 0, + "echo": 0.8 + }, + { + "beat": 140, + "space": 0, + "pitch": 0, + "echo": 0 + } + ] + } + }, + { + "name": "frisbee sings (Zoe (Premium))", + "program": 78, + "velocity": 64, + "notes": "57:4,54:4,r:7,54:1,57:1,55:1,54:1,59:2,r:1,57:3,54:3,r:7,55:1,57:1,55:1,54:1,59:2,r:1,57:3,54:3,54:1,55:1,54:1,59:1,57:2,r:9,52:1,55:1,54:1,57:1,59:2,r:1,57:3,54:3,r:7,54:1,57:1,55:1,52:1,59:2,r:1,57:3,54:3,r:7,55:1,57:1,54:1,55:1,59:2,r:1,57:3,54:3,54:1,55:1,54:1,59:1,57:2,r:2,57:4,54:4", + "lyrics": "ooh ooh / the an-swer is two / ooh ooh / the an-swer is four / ooh ooh / one and one is two / the an-swer is six / ooh ooh / the an-swer is eight / ooh ooh / the an-swer is ten / ooh ooh / one and one is two / hmm hmm", + "lineRoles": [ + "hum", + "lead", + "hum", + "lead", + "hum", + "lead", + "lead", + "hum", + "lead", + "hum", + "lead", + "hum", + "lead", + "hum" + ], + "lineGains": [ + 0.26, + 0.54, + 0.26, + 0.54, + 0.26, + 0.54, + 0.54, + 0.26, + 0.54, + 0.26, + 0.54, + 0.26, + 0.54, + 0.28 + ], + "noteGains": [ + [ + 1, + 0.78 + ], + [ + 1, + 0.78, + 0.94, + 0.74, + 0.9 + ], + [ + 1, + 0.78 + ], + [ + 1, + 0.78, + 0.94, + 0.74, + 0.9 + ], + [ + 1, + 0.78 + ], + [ + 1, + 0.78, + 0.94, + 0.74, + 0.9 + ], + [ + 1, + 0.78, + 0.94, + 0.74, + 0.9 + ], + [ + 1, + 0.78 + ], + [ + 1, + 0.78, + 0.94, + 0.74, + 0.9 + ], + [ + 1, + 0.78 + ], + [ + 1, + 0.78, + 0.94, + 0.74, + 0.9 + ], + [ + 1, + 0.78 + ], + [ + 1, + 0.78, + 0.94, + 0.74, + 0.9 + ], + [ + 1, + 0.78 + ] + ], + "singVoice": "Zoe (Premium)", + "sayVoice": "Zoe (Premium)", + "singLock": 1, + "singVibCents": 10, + "singVibratoHz": 5.5, + "singF0Floor": 80, + "double": false, + "faceAlpha": 0.95, + "performance": { + "expression": 0.6, + "keys": [ + { + "beat": 0, + "space": 0.46, + "pitch": 0 + }, + { + "beat": 47.6, + "space": 0.46, + "pitch": 0, + "echo": 0 + }, + { + "beat": 52.3, + "space": 0.46, + "pitch": 0 + }, + { + "beat": 52.8, + "space": 0.46, + "pitch": 0, + "echo": 0.8 + }, + { + "beat": 56, + "space": 0.46, + "pitch": 0, + "echo": 0.8 + }, + { + "beat": 115.6, + "space": 0.46, + "pitch": 0, + "echo": 0 + }, + { + "beat": 120.3, + "space": 0.46, + "pitch": 0 + }, + { + "beat": 120.8, + "space": 0.46, + "pitch": 0, + "echo": 0.8 + }, + { + "beat": 124, + "space": 0.46, + "pitch": 0, + "echo": 0.8 + }, + { + "beat": 136, + "space": 0.46, + "pitch": 0, + "echo": 0.8 + }, + { + "beat": 140, + "space": 0, + "pitch": 0, + "echo": 0 + } + ] + } + } + ] +} diff --git a/grants/culturehub-la-2026/macneopolitan/scores/trio-take-away.mbscore b/grants/culturehub-la-2026/macneopolitan/scores/trio-take-away.mbscore new file mode 100644 index 0000000000..479800223a --- /dev/null +++ b/grants/culturehub-la-2026/macneopolitan/scores/trio-take-away.mbscore @@ -0,0 +1,701 @@ +{ + "title": "The MacNeoPolitan Trio — Take away", + "composer": "The machines, arr. compose-take-away.mjs", + "bpm": 92, + "machines": 3, + "lead": 0, + "description": "A subtraction lesson that counts itself down. 4/4, D major, 92 bpm, 134 beats. Five rounds — five take one away, four, three, two, one — each one a step lower than the last. neo asks, frisbee answers (the answer is N), blueberry says the equation back at the bottom of the room, and twice all three sing take one away together. Every question ends on B3, every answer one step below it on A3, every confirmation on the tonic. The last confirmation is not an equation: it is and nothing is left.", + "arrangement": { + "total": 134, + "meter": "4/4", + "sections": [ + { + "beat": 0, + "name": "Room" + }, + { + "beat": 8, + "name": "5 − 1 = 4" + }, + { + "beat": 29, + "name": "4 − 1 = 3" + }, + { + "beat": 50, + "name": "All: take one away" + }, + { + "beat": 57, + "name": "3 − 1 = 2" + }, + { + "beat": 78, + "name": "2 − 1 = 1" + }, + { + "beat": 99, + "name": "1 − 1 = 0" + }, + { + "beat": 120, + "name": "All: take one away" + }, + { + "beat": 127, + "name": "Room" + } + ] + }, + "voices": [ + { + "name": "neo sings (Noelle (Enhanced))", + "program": 78, + "velocity": 64, + "notes": "59:4,57:4,62:1,61:1,61:1,59:1,59:2,r:8,59:3.5,57:3.5,61:1,61:1,59:1,61:1,59:2,r:8,59:3.5,57:3.5,59:1,61:1,59:1,62:2,r:2,61:1,59:1,59:1,61:1,59:2,r:8,59:3.5,57:3.5,59:1,61:1,59:1,59:1,59:2,r:8,59:3.5,57:3.5,59:1,59:1,57:1,59:1,59:2,r:8,59:3.5,57:3.5,59:1,61:1,59:1,62:2,r:2,62:3.5,59:3.5", + "lyrics": "ooh ooh / five take one a-way / ooh ooh / four take one a-way / ooh ooh / take one a-way / three take one a-way / ooh ooh / now take one from two / ooh ooh / one take one a-way / ooh ooh / take one a-way / hmm hmm", + "lineRoles": [ + "hum", + "lead", + "hum", + "lead", + "hum", + "lead", + "lead", + "hum", + "lead", + "hum", + "lead", + "hum", + "lead", + "hum" + ], + "lineGains": [ + 0.26, + 0.56, + 0.26, + 0.56, + 0.26, + 0.58, + 0.56, + 0.26, + 0.56, + 0.26, + 0.56, + 0.26, + 0.58, + 0.3 + ], + "noteGains": [ + [ + 1, + 0.78 + ], + [ + 1, + 0.78, + 0.94, + 0.74, + 0.9 + ], + [ + 1, + 0.78 + ], + [ + 1, + 0.78, + 0.94, + 0.74, + 0.9 + ], + [ + 1, + 0.78 + ], + [ + 1, + 0.78, + 0.94, + 0.74 + ], + [ + 1, + 0.78, + 0.94, + 0.74, + 0.9 + ], + [ + 1, + 0.78 + ], + [ + 1, + 0.78, + 0.94, + 0.74, + 0.9 + ], + [ + 1, + 0.78 + ], + [ + 1, + 0.78, + 0.94, + 0.74, + 0.9 + ], + [ + 1, + 0.78 + ], + [ + 1, + 0.78, + 0.94, + 0.74 + ], + [ + 1, + 0.78 + ] + ], + "singVoice": "Noelle (Enhanced)", + "sayVoice": "Noelle (Enhanced)", + "singLock": 1, + "singVibCents": 10, + "singVibratoHz": 5, + "singF0Floor": 80, + "double": false, + "faceAlpha": 0.95, + "performance": { + "expression": 0.6, + "keys": [ + { + "beat": 0, + "space": 0.42, + "pitch": 0 + }, + { + "beat": 8, + "space": 0.42, + "pitch": 0 + }, + { + "beat": 29, + "space": 0.47, + "pitch": 0 + }, + { + "beat": 53.3, + "space": 0.6, + "pitch": 0 + }, + { + "beat": 53.8, + "space": 0.6, + "pitch": 0, + "echo": 0.85 + }, + { + "beat": 57, + "space": 0.52, + "pitch": 0 + }, + { + "beat": 57, + "space": 0.6, + "pitch": 0, + "echo": 0.85 + }, + { + "beat": 78, + "space": 0.57, + "pitch": 0 + }, + { + "beat": 99, + "space": 0.62, + "pitch": 0 + }, + { + "beat": 123.3, + "space": 0.6, + "pitch": 0 + }, + { + "beat": 123.8, + "space": 0.6, + "pitch": 0, + "echo": 0.85 + }, + { + "beat": 127, + "space": 0.6, + "pitch": 0, + "echo": 0.85 + }, + { + "beat": 140, + "space": 0.6, + "pitch": 0, + "echo": 0.85 + }, + { + "beat": 146, + "space": 0, + "pitch": 0, + "echo": 0 + } + ] + } + }, + { + "name": "blueberry sings (Aaron (Enhanced))", + "program": 78, + "velocity": 64, + "notes": "50:2,45:2,47:2,47:2,50:1.5,45:1.5,47:1.5,47:1.5,r:8,47:1,49:1,47:1,45:1,47:1,50:2,50:1.5,45:1.5,47:1.5,47:1.5,r:8,47:1,49:1,47:1,45:1,45:1,50:2,47:1,49:1,47:1,50:2,r:2,50:1.5,45:1.5,47:1.5,47:1.5,r:8,49:1,47:1,45:1,47:1,45:1,50:2,50:1.5,45:1.5,47:1.5,47:1.5,r:8,47:1,49:1,45:1,47:1,45:1,50:2,50:1.5,45:1.5,47:1.5,47:1.5,r:8,45:1,49:1,47:1,45:1,50:2,r:1,47:1,49:1,47:1,50:2,r:2,50:3.5,45:3.5", + "lyrics": "dm dm dm dm / dm dm dm dm / five mi-nus one is four / dm dm dm dm / four mi-nus one is three / take one a-way / dm dm dm dm / three mi-nus one is two / dm dm dm dm / two mi-nus one is one / dm dm dm dm / and no-thing is left / take one a-way / hmm hmm", + "lineRoles": [ + "hum", + "hum", + "lead", + "hum", + "lead", + "lead", + "hum", + "lead", + "hum", + "lead", + "hum", + "lead", + "lead", + "hum" + ], + "lineGains": [ + 0.32, + 0.32, + 0.52, + 0.32, + 0.52, + 0.52, + 0.32, + 0.52, + 0.32, + 0.52, + 0.32, + 0.52, + 0.52, + 0.3 + ], + "noteGains": [ + [ + 1, + 0.72, + 0.9, + 0.68 + ], + [ + 1, + 0.72, + 0.9, + 0.68 + ], + [ + 1, + 0.72, + 0.9, + 0.68, + 1, + 0.72 + ], + [ + 1, + 0.72, + 0.9, + 0.68 + ], + [ + 1, + 0.72, + 0.9, + 0.68, + 1, + 0.72 + ], + [ + 1, + 0.72, + 0.9, + 0.68 + ], + [ + 1, + 0.72, + 0.9, + 0.68 + ], + [ + 1, + 0.72, + 0.9, + 0.68, + 1, + 0.72 + ], + [ + 1, + 0.72, + 0.9, + 0.68 + ], + [ + 1, + 0.72, + 0.9, + 0.68, + 1, + 0.72 + ], + [ + 1, + 0.72, + 0.9, + 0.68 + ], + [ + 1, + 0.72, + 0.9, + 0.68, + 1 + ], + [ + 1, + 0.72, + 0.9, + 0.68 + ], + [ + 1, + 0.72 + ] + ], + "singVoice": "Aaron (Enhanced)", + "sayVoice": "Aaron (Enhanced)", + "singLock": 1, + "singVibCents": 10, + "singVibratoHz": 3.5, + "singF0Floor": 70, + "double": false, + "faceAlpha": 0.95, + "performance": { + "expression": 0.6, + "keys": [ + { + "beat": 0, + "space": 0.3, + "pitch": 0 + }, + { + "beat": 8, + "space": 0.3, + "pitch": 0 + }, + { + "beat": 29, + "space": 0.35, + "pitch": 0 + }, + { + "beat": 53.3, + "space": 0.6, + "pitch": 0 + }, + { + "beat": 53.8, + "space": 0.6, + "pitch": 0, + "echo": 0.85 + }, + { + "beat": 57, + "space": 0.4, + "pitch": 0 + }, + { + "beat": 57, + "space": 0.6, + "pitch": 0, + "echo": 0.85 + }, + { + "beat": 78, + "space": 0.45, + "pitch": 0 + }, + { + "beat": 99, + "space": 0.5, + "pitch": 0 + }, + { + "beat": 117.3, + "space": 0.6, + "pitch": 0 + }, + { + "beat": 117.8, + "space": 0.6, + "pitch": 0, + "echo": 0.85 + }, + { + "beat": 121, + "space": 0.6, + "pitch": 0, + "echo": 0.85 + }, + { + "beat": 123.3, + "space": 0.6, + "pitch": 0 + }, + { + "beat": 123.8, + "space": 0.6, + "pitch": 0, + "echo": 0.85 + }, + { + "beat": 127, + "space": 0.6, + "pitch": 0, + "echo": 0.85 + }, + { + "beat": 140, + "space": 0.6, + "pitch": 0, + "echo": 0.85 + }, + { + "beat": 146, + "space": 0, + "pitch": 0, + "echo": 0 + } + ] + } + }, + { + "name": "frisbee sings (Zoe (Premium))", + "program": 78, + "velocity": 64, + "notes": "57:4,54:4,r:7,54:1,57:1,55:1,54:1,57:2,r:1,57:3.5,54:3.5,r:7,54:1,55:1,54:1,52:1,57:2,r:1,57:3.5,54:3.5,54:1,55:1,54:1,57:2,r:9,55:1,57:1,55:1,54:1,57:2,r:1,57:3.5,54:3.5,r:7,54:1,57:1,55:1,52:1,57:2,r:1,57:3.5,54:3.5,r:7,54:1,57:1,55:1,54:1,55:1,57:2,57:3.5,54:3.5,54:1,55:1,54:1,57:2,r:2,57:3.5,54:3.5", + "lyrics": "ooh ooh / the an-swer is four / ooh ooh / the an-swer is three / ooh ooh / take one a-way / the an-swer is two / ooh ooh / the an-swer is one / ooh ooh / the an-swer is ze-ro / ooh ooh / take one a-way / hmm hmm", + "lineRoles": [ + "hum", + "lead", + "hum", + "lead", + "hum", + "lead", + "lead", + "hum", + "lead", + "hum", + "lead", + "hum", + "lead", + "hum" + ], + "lineGains": [ + 0.26, + 0.54, + 0.26, + 0.54, + 0.26, + 0.54, + 0.54, + 0.26, + 0.54, + 0.26, + 0.54, + 0.26, + 0.54, + 0.28 + ], + "noteGains": [ + [ + 1, + 0.78 + ], + [ + 1, + 0.78, + 0.94, + 0.74, + 0.9 + ], + [ + 1, + 0.78 + ], + [ + 1, + 0.78, + 0.94, + 0.74, + 0.9 + ], + [ + 1, + 0.78 + ], + [ + 1, + 0.78, + 0.94, + 0.74 + ], + [ + 1, + 0.78, + 0.94, + 0.74, + 0.9 + ], + [ + 1, + 0.78 + ], + [ + 1, + 0.78, + 0.94, + 0.74, + 0.9 + ], + [ + 1, + 0.78 + ], + [ + 1, + 0.78, + 0.94, + 0.74, + 0.9, + 1 + ], + [ + 1, + 0.78 + ], + [ + 1, + 0.78, + 0.94, + 0.74 + ], + [ + 1, + 0.78 + ] + ], + "singVoice": "Zoe (Premium)", + "sayVoice": "Zoe (Premium)", + "singLock": 1, + "singVibCents": 10, + "singVibratoHz": 5.5, + "singF0Floor": 80, + "double": false, + "faceAlpha": 0.95, + "performance": { + "expression": 0.6, + "keys": [ + { + "beat": 0, + "space": 0.42, + "pitch": 0 + }, + { + "beat": 8, + "space": 0.42, + "pitch": 0 + }, + { + "beat": 29, + "space": 0.47, + "pitch": 0 + }, + { + "beat": 53.3, + "space": 0.6, + "pitch": 0 + }, + { + "beat": 53.8, + "space": 0.6, + "pitch": 0, + "echo": 0.85 + }, + { + "beat": 57, + "space": 0.52, + "pitch": 0 + }, + { + "beat": 57, + "space": 0.6, + "pitch": 0, + "echo": 0.85 + }, + { + "beat": 78, + "space": 0.57, + "pitch": 0 + }, + { + "beat": 99, + "space": 0.62, + "pitch": 0 + }, + { + "beat": 123.3, + "space": 0.6, + "pitch": 0 + }, + { + "beat": 123.8, + "space": 0.6, + "pitch": 0, + "echo": 0.85 + }, + { + "beat": 127, + "space": 0.6, + "pitch": 0, + "echo": 0.85 + }, + { + "beat": 140, + "space": 0.6, + "pitch": 0, + "echo": 0.85 + }, + { + "beat": 146, + "space": 0, + "pitch": 0, + "echo": 0 + } + ] + } + } + ] +}