{
  "format": "p3r4mancer-instrument-inventory",
  "version": 1,
  "guide": "./recording/guide.html",
  "recording": {
    "version": 1,
    "availability": "Every listed core instrument, CHAMBER and collection previews expose the same recording controls and hook.",
    "hook": "window.p3r4mancerRecording",
    "methods": {
      "start": "start(): Promise<snapshot>; opt-in final-output capture, without starting transport",
      "stop": "stop(reason = 'stopped'): Promise<snapshot>",
      "snapshot": "snapshot(): availability, recording state, audio shape, capture bounds and completed-take measurements",
      "export": "export(format = 'wav'): {blob, filename, metadata}; requires downloadReady",
      "download": "download(): snapshot; downloads the completed PCM WAV"
    },
    "controls": {
      "panel": "[data-p3r-recording]",
      "record": "#recording-record",
      "stop": "#recording-stop",
      "download": "#recording-download",
      "status": "#recording-status"
    },
    "states": ["idle", "preparing", "starting", "recording", "stopping", "ready", "error"],
    "readiness": {
      "availability": ["loading", "ready", "error", "closed"],
      "availabilityError": "Nullable failure message in the public snapshot; separate from capture state/error.",
      "panelAttributes": ["data-availability", "data-availability-error"],
      "default": "ready for entrances without a material-readiness gate; browser audio still requires a user gesture.",
      "start": "Record remains visible but disabled while unavailable. Direct start rejects without opening audio, changing transport or creating a take. Readiness never queues a take or starts playback.",
      "failure": "Failed initial material loading requires a fresh page reload.",
      "closure": "Page departure or close invalidates pending readiness; late loading cannot re-enable Record."
    },
    "formats": ["wav"],
    "mimeType": "audio/wav",
    "encoding": "PCM signed 16-bit little-endian",
    "channels": 2,
    "sampleRate": "The active AudioContext sample rate; reported in snapshot.sampleRate after attachment.",
    "limits": {"maxPcmBytes": 67108864, "maxSeconds": 360, "effectiveSeconds": "min(360, floor(67108864 / 4) / sampleRate)", "wavHeaderBytes": 44, "memoryNote": "This bounds retained PCM; browser Blob construction/export may require a second copy and additional memory."},
    "transport": "A browser gesture unlocks audio. Record opens the graph but does not start playback. Performance pause, backgrounding and standalone final endings finish a take; mute records silence. A CHAMBER member ending/rest does not finish the mixed take.",
    "retention": "One take in page memory; a new take replaces it. Download before navigation or reload.",
    "privacy": "No microphone/camera request, upload, raw sensor capture or peer audio transmission."
  },
  "instruments": [
    {
      "id": "molt",
      "name": "molt",
      "url": "./performance.html?instrument=molt",
      "audio": "The original WASM score drives oscillator and percussive voices.",
      "sourceEncoding": "live synthesis",
      "ensembleMember": "molt"
    },
    {
      "id": "braid",
      "name": "braid",
      "url": "./performance.html?instrument=braid",
      "audio": "The original WASM score drives oscillator and percussive voices.",
      "sourceEncoding": "live synthesis",
      "ensembleMember": "braid"
    },
    {
      "id": "mycel",
      "name": "mycel",
      "url": "./performance.html?instrument=mycel",
      "audio": "The original WASM score drives oscillator and percussive voices.",
      "sourceEncoding": "live synthesis",
      "ensembleMember": "mycel"
    },
    {
      "id": "yield",
      "name": "yield",
      "url": "./wobbly.html",
      "audio": "The yielding WASM score drives synthesized voices and bounded sample grains.",
      "sourceEncoding": "live synthesis and PCM samples",
      "ensembleMember": "yield"
    },
    {
      "id": "begin",
      "name": "BEGIN",
      "url": "./begin.html",
      "audio": "A finite authored recording plays through the performance bus; the collection can add WASM voices.",
      "sourceEncoding": "MP3",
      "sourceFidelity": "PCM capture preserves the decoded performance; it does not recover information removed from the MP3 source.",
      "ensembleMember": "begin"
    },
    {
      "id": "proleptic",
      "name": "mark / Proleptic",
      "url": "./proleptic.html",
      "audio": "Two finite authored voice recordings play in sequence. Touch and retracing answer with stem grains.",
      "sourceEncoding": "M4A recordings and PCM stem grains",
      "sourceFidelity": "PCM capture preserves the decoded performance; it does not recover information removed from the M4A sources.",
      "recordingReadiness": "Record is disabled while the authored material and kernel load. Wait for availability ready and an enabled button; reload after an initial loading failure.",
      "ensembleMember": "proleptic"
    },
    {
      "id": "corpus",
      "name": "seven days",
      "url": "./corpus.html",
      "audio": "The selected finite corpus recording plays through gesture-controlled filtering, distortion, delay and pan.",
      "sourceEncoding": "M4A",
      "sourceFidelity": "PCM capture preserves the decoded performance; it does not recover information removed from the M4A sources.",
      "ensembleMember": "corpus"
    },
    {
      "id": "algosongbook",
      "name": "ALGOSONGBOOK",
      "url": "./algosongbook.html",
      "audio": "Original pages play authored PCM masters. Edited and local pages use the native Strudel voices and effects.",
      "sourceEncoding": "PCM WAV masters or live native Strudel synthesis",
      "renditions": ["flusser-i", "flusser-ii", "flusser-iii", "flusser-iv", "redon-i", "loziva-i"],
      "localPages": true,
      "ensembleMember": "algosongbook"
    },
    {
      "id": "hangle",
      "name": "HANGLE",
      "url": "./hangle.html",
      "audio": "The finite hangle2o recording plays through the performance bus. Its spoken twin from the 2026 voice note enters line by line under the song; voice-note taps answer touch through the WASM kernel.",
      "sourceEncoding": "MP3 song and voice note, PCM tap grains",
      "sourceFidelity": "PCM capture preserves the decoded performance; it does not recover information removed from the MP3 sources.",
      "recordingReadiness": "Record is disabled while the timeline, image and kernel load. Wait for availability ready and an enabled button; reload after an initial loading failure.",
      "ensembleMember": "hangle"
    },
    {
      "id": "elgnah",
      "name": "ELGNAH",
      "url": "./elgnah.html",
      "audio": "HANGLE through the symmetries of its frame. The song is read forward or backward from two constant-bitrate MP3s; spoken twins and voice-note taps are reversed while time runs backward; flipping over mirrors every frequency f to 4186 Hz minus f, about C7; each flip holds its last instant at the edge.",
      "sourceEncoding": "MP3 song in both directions and MP3 voice note, PCM tap grains",
      "sourceFidelity": "PCM capture preserves the decoded performance; it does not recover information removed from the MP3 sources.",
      "symmetries": ["unflipped", "flipped across", "flipped over", "turned half around"],
      "recordingReadiness": "Record is disabled while the timeline, mirror, image and kernel load. Wait for availability ready and an enabled button; reload after an initial loading failure.",
      "ensembleMember": "elgnah"
    },
    {
      "id": "superscript",
      "name": "SUPERSCRIPT¹",
      "url": "./superscript.html",
      "audio": "The artist's a cappella reading plays first and can be cut while it is read. Then Emil Post's tag system reads the cut-up: lines from the reading in the artist's own voice, and lines the machine writes alternately from the two produced versions of the song. The first version is heard from its stems, its band chosen by each strip's superscript in binary; an impossible strip of it is that band without the voices. The second is heard whole; an impossible strip of it is its mix with the centre removed. Every cut and every written word is a fragment of the reading. The WASM kernel writes every audible reading's production; a worker runs ahead in silence.",
      "sourceEncoding": "Seven constant-bitrate MP3s: the mono reading, the stereo second version, and the first version's stems in five groups (bass in mono), kept only where its lines are sung",
      "sourceFidelity": "PCM capture preserves the decoded performance; it does not recover information removed from the MP3 sources.",
      "recordingReadiness": "Record is disabled while the timeline, the reading and the kernel load. Wait for availability ready and an enabled button; reload after an initial loading failure.",
      "ensembleMember": "superscript"
    },
    {
      "id": "among",
      "name": "AMONG",
      "url": "./among.html",
      "audio": "The poem Among is sung letter by letter, each letter at the note the French method writes it under, each row of the alphabet an octave higher: vowels through formants, nasals hummed, liquids gliding, fricatives as tuned breath, stops plucked. Every earlier word among a later one returns in it, sung in unison; a word already among earlier ones is heard an octave above. Then the machine writes the words that would also exist, and any word you write is sung and answered. The WASM kernel finds every return, letter by letter.",
      "sourceEncoding": "live synthesis; no recordings",
      "paces": ["sung", "slow", "bird"],
      "recordingReadiness": "Record is disabled while the kernel loads and proves one comparison. Wait for availability ready and an enabled button; reload after an initial loading failure.",
      "ensembleMember": "among"
    },
    {
      "id": "here-8",
      "name": "h3r3 3igHt",
      "url": "./here-8.html",
      "ensembleMember": "here-8",
      "audio": "The complete 9:43 recording plays once at constant gain: a first voice sends a signal to the year 2026, a second voice, heard through a 1.038366 s delay, counts and never reaches eight, then says eight until the delay's repetitions are all there is. A beat is a heartbeat synthesized here; in its acts the WASM kernel repeats it, one higher and a quarter quieter each 1.038366 s, as returning heartbeats, the count spoken in the second voice's own cut words, the unknown's answers (eight, eighty-eight, 1314, twelve, yesterday at 8:00 PM), I am here, and eight. After the recording ends a beat is still eight. Stations 98.8 and 108.0 play the artist's two songs made from the recording, with the same beat and kernel at each song's tempo.",
      "sourceEncoding": "Three constant-bitrate stereo MP3s: the 160 kbps 44.1 kHz recording and its two 192 kbps 48 kHz songs, tuned as stations 98.8 and 108.0; two mono 24 kHz PCM sheets of cut words",
      "sourceFidelity": "PCM capture preserves the decoded performance; it does not recover information removed from the MP3 sources.",
      "recordingReadiness": "Record is disabled while the timeline and kernel load and the kernel hears one beat. Wait for availability ready and an enabled button; reload after an initial loading failure."
    },
    {
      "id": "clock-multiverse",
      "name": "Here Now There Then",
      "url": "./clock-multiverse.html",
      "audio": "One receiver branches into up to eight clock worldlines, blending three h3r3 broadcasts and five synthesized stations with continuous dimensional acoustics, bounded Doppler and delayed causal signals.",
      "sourceEncoding": "Live Web Audio synthesis and the existing three approved h3r3 MP3 streams.",
      "controls": {
        "record": "[data-control=\"record\"]",
        "stop": "[data-control=\"stop\"]",
        "download": "[data-control=\"download\"]"
      },
      "interaction": "Operate the radio housing: tune to branch; O opens, I enters, U returns, J joins and X cuts. Drag BAND continuously or press D. Space receives, P patches, R records, S stops and W downloads.",
      "model": "Eight reusable clocks, four nested interiors and 24 directed connections; ideal quartz/divider logic, bounded collisions, artistic proper-time and delayed timestamp reception. Actual computer time remains distinct. Rendering adapts to resources and stops while hidden. 4D shows sampled histories; hyperspace is a rotating projection.",
      "recordingReadiness": "The physical record key opens the final audio graph without starting radio transport."
    }
  ],
  "collection": {
    "url": "./collection.html",
    "description": "Select and preview the five original WASM instruments and bounded sound materials, then enter the resulting performance.",
    "members": ["molt", "braid", "mycel", "yield", "begin"],
    "recording": "The same controls capture the actual preview bus. Entering a performance opens its own recorder."
  },
  "ensemble": {
    "id": "chamber",
    "name": "CHAMBER",
    "url": "./chamber.html",
    "members": ["molt", "braid", "mycel", "yield", "begin", "proleptic", "corpus", "algosongbook", "hangle", "elgnah", "superscript", "among", "here-8"],
    "audio": "The thirteen actual instrument adapters share one AudioContext and a final mixed listening bus.",
    "recording": "The same controls record the actual final mix, including changes of membership, relations, rest and mute.",
    "clocks": {"freeOrSharedPulse": ["molt", "braid", "mycel", "yield", "algosongbook", "superscript", "among"], "authoredTimeOnly": ["begin", "proleptic", "corpus", "hangle", "elgnah", "here-8"]},
    "phase": {"available": ["molt", "braid", "mycel", "yield", "algosongbook", "superscript", "among"], "unavailable": ["begin", "proleptic", "corpus", "hangle", "elgnah", "here-8"]},
    "mediaPace": "The explicit 0.5–2 pace control changes both timing and pitch of recorded sources.",
    "ocean": "HANGLE and ELGNAH bring the song with its spoken twin and taps; a hand low in the drawing surfaces the voice. ELGNAH's source is its symmetry: choosing flipped across, unflipped, flipped over or turned half around turns the playing voice live, through the edge of the turn, without a restart.",
    "tag": "SUPERSCRIPT¹ enters with its lines standing, every line possible. Post's machine reads one strip in three, and the kernel writes and is checked against Post's rule at every reading. Its source is its pace (whole lines, two beats, a beat or half a beat of each line); changing it keeps the tape. On the shared pulse each reading begins on one of the member's beats and is given whole beats, never stretched or cut. Each take is decoded once after it joins, and only the excerpts that can be heard at the chosen pace are kept, as 16-bit PCM (about 47 MB at a beat and 102 MB for whole lines, at 48 kHz); they are released when it leaves. The cut button cuts the next possible strip that will be read; nothing can be uncut. When the machine stops it asks once and ends; it says it repeats when running proves it, and otherwise that it does not know. A saved chamber score keeps the source and controls, not the tape or cuts.",
    "among": "AMONG sings the poem letter by letter in the chamber's context, each letter at its note under the French method. Every earlier word among a new one returns in unison, and the WASM kernel finds every return. On its own time a letter is 0.17 s; on the shared pulse it is a sixteenth, and each line begins on a beat and is given whole beats. Its source is its voicing, sung or bird (an octave up); changing it keeps what has been written. The name of every member here is written in the order they came, and answered the way the poem begins; a hand in the drawing spells through the French table (across is the note, down is the row), and the word is written when the hand rests, forty words a poem. Then the machine writes what would also exist, closes with here i am / you can too, and the voice ends; again begins the poem again. A line cut off by a rest is sung again, whole, when the voice returns. A saved chamber score keeps the voicing and controls, not what was written.",
    "here": "h3r3 3igHt plays one of its three stations in its own time: 88.8, the recording, or 98.8 and 108.0, the artist's two songs made from it; choosing another starts it from its beginning. Every word is lit on its radio's eight cells as it is said. A tap on the drawing, Enter, B or 8, or its beat button, is a heartbeat: the WASM kernel gives it back once a repetition, one higher and a quarter quieter, counting in the voice's own cut words, letting the unknown answer, saying I am here, and then eight, every mark checked. A member that leans towards it with sympathy gives it heartbeats, at most one a repetition; its own heartbeats reach the members it leans towards. When the station ends the voice does not: a beat is still eight, always. Its pace changes the station's timing and pitch together. A saved chamber score keeps the station and controls, not the kernel's memory.",
    "songbook": "Six native published scores and saved local pages available in this browser. Import portable songbook JSON through 'bring a paper score' (#load-paper). The full drawing and code editor remain in the standalone ALGOSONGBOOK. Chamber references to local pages stay browser-local; a portable page receives a new identity on import and must be chosen again in the receiving chamber.",
    "songbookPhraseEdits": {"actions": ["stamp", "reverse", "echo", "dry", "restore"], "span": "Upcoming four bars of the native score", "retention": "Session only; captured in recordings, excluded from chamber settings JSON"},
    "hook": {"name": "window.p3r4mancerChamber", "version": 1, "members": ["ready", "snapshot()", "select(id)", "exportScore()", "importScore(score)", "close()"]},
    "sensors": false,
    "peerTransmission": false
  }
}
