p3r4mancer ↖instrument inventory / JSON ↗

keep what sounded.

Record the performance you are hearing, including its gestures, effects, rests and mute. The same visible controls and public hook are available to browser agents.

Record → Stop → Download WAV

  1. Open an instrument and use its Play, Listen or Begin control to start the sound. A real click, tap or keyboard gesture unlocks browser audio.
  2. Wait until Record is enabled, then press it. Recording is explicit and local. The button can also open the audio graph, but it does not start the instrument’s transport. An instrument at rest produces silence.
  3. Perform. A mute is captured as silence while the take continues. Press Stop to finish the take without stopping the performance.
  4. Wait for WAV ready and the enabled Download WAV button, then download. A new Record replaces the previous take in this page, so download first if you want to keep it.

Pausing the performance, backgrounding the page, reaching a standalone performance’s final ending or reaching a take’s capture limit finishes its recording. In CHAMBER, a voice’s ending or rest leaves the other voices playing; an all-rest span can remain part of the take. The completed take can be downloaded while the page remains open. Download before navigation or reload: takes are held in memory, not saved in browser storage.

What the file contains

The built-in export is stereo PCM WAV, signed 16-bit little-endian, at the active AudioContext’s sample rate. The actual rate appears in the recording state; it is not forced to 48 kHz. Capture observes the final listening output after the instrument’s effects and mute.

Each take has a capture budget of 64 MiB of PCM and a maximum of 360 seconds, whichever arrives first. At 48 kHz, the byte budget allows about 349.53 seconds; at 44.1 kHz, the time limit allows 360 seconds. At 96 kHz, the byte budget allows about 174.76 seconds. The WAV adds a 44-byte header. Creating or exporting the file may temporarily require a second copy and additional browser memory. A longer performance may need several takes.

WAV is the only built-in format. FLAC can be made from this PCM WAV with a separate lossless encoder; there is no browser FLAC button. Neither format restores information removed from an MP3 or M4A source. BEGIN, Proleptic, seven days, HANGLE and SUPERSCRIPT¹ preserve the decoded, performed sound and its live effects in the new capture.

A saved score, Strudel program or portable songbook page is a composition document. The songbook’s original WAV link downloads its authored master. Download WAV in the recording controls downloads your current performance take.

Find the normal controls

Every sounding core entrance exposes [data-p3r-recording], labelled “Record the actual performance output”. Its stable controls are ordinary DOM buttons:

ControlSelectorAccessible name
Record#recording-recordRecord performance audio
Stop#recording-stopStop audio recording
Download WAV#recording-downloadDownload recorded audio as WAV
Status#recording-statusLive status output

Button state and visible status are authoritative. The panel also exposes data-state, data-availability, data-availability-error, data-sample-rate, data-channels, data-frames, data-download-ready, data-format and data-stop-reason. Agents can operate entirely through these controls without a private test bridge.

Proleptic, HANGLE and SUPERSCRIPT¹ keep Record visible but disabled while their material and kernel load. Wait for the enabled button; loading never queues a take or starts playback. If the initial material load fails, the status reports the failure and asks you to reload.

Public browser hook · version 1

window.p3r4mancerRecording exposes the same capture lifecycle. Wait for snapshot().availability === 'ready' before starting. This permits a recording attempt; browser audio still needs a user gesture. Prefer clicking the visible Record button when automating a browser.

const recording = window.p3r4mancerRecording;
recording.snapshot();            // Inspect current state and bounds.
await recording.start();         // Opt in; never starts transport.
await recording.stop();          // Finish and wait for ready/error.
const take = recording.export('wav');
// take.blob is an audio/wav Blob.
// take.filename is the suggested .wav filename.
// take.metadata is the same snapshot contract.
recording.download();            // Download the completed take.

export() is synchronous and defaults to 'wav'. It throws until downloadReady is true, and rejects unsupported formats. start() and stop() return promises for snapshots. Repeated Start or Stop while the operation is active does not create a second simultaneous take.

availability
loading, ready, error or closed, separate from the capture state. Entrances without a material-readiness gate default to ready. availabilityError is null or a failure message. Start rejects while unavailable without opening audio or creating a take; becoming ready never starts one automatically. Closing or leaving the page invalidates pending readiness, so a late load cannot re-enable Record.
state
idle, preparing, starting, recording, stopping, ready or error.
downloadReady
True only when the take has finished and its WAV is available.
Audio shape
sampleRate, channels, bitsPerSample, encoding, formats and mimeType. The sample rate is null before the graph is attached.
Take
instrument, take, frames, durationSeconds, bytes and filename. Progress is updated as PCM blocks arrive.
Finish
stopReason names the completion cause. A limit or backpressure stop preserves a completed partial take; error explains a failed capture.
Bounds
limits.maxBytes, limits.maxSeconds and limits.effectiveSeconds. The effective duration is derived from the actual sample rate.
Measurements
peak, clippedSamples and invalidSamples are reported at completion. A nonzero clipped count means the input exceeded PCM’s range and was clamped. These are technical measurements, not an assessment of the music.
Source
sourceNote describes the recorded output and any source-fidelity limitation.

Capture requires Web Audio and AudioWorklet in a secure browser context, including localhost. If the audio graph cannot open, the status reports the error; do not infer success from a click alone. A browser that stops processing audio can interrupt or fail a take. Check state, stopReason and downloadReady.

Which instruments?

InstrumentActual listening path
molt
braid
mycel
Original WASM scores drive synthesized voices. Gesture and composition changes enter the sound.
yieldThe yielding WASM score drives synthesized voices and bounded sample grains.
BEGINThe finite MP3 performance and any selected collection companions share the listening bus.
mark / ProlepticTwo finite M4A recordings and the stem grains answering touch and retracing.
seven daysThe selected corpus M4A recording with its live filtering, distortion, delay and pan.
HANGLEThe finite MP3 song, its spoken twin from the 2026 voice note entering line by line, and voice-note taps answering touch.
ELGNAHThe same song read forward or backward from two constant-bitrate MP3s, its spoken twins and taps reversed when time runs backward, the live pitch mirror about C7 when flipped over, and the held instant at each flip’s edge.
SUPERSCRIPT¹The a cappella reading, cut live, then Post’s machine reading the cut-up: the reading’s lines in the artist’s voice, written lines alternately from the two produced versions (the first from its stems, its band chosen by each strip’s superscript in binary; the second whole, an impossible line as its mix with the centre removed), and cuts and written words as fragments of the reading.
AMONGThe poem sung letter by letter in live synthesis, each letter at its note under the French method, the earlier words that return in each new one in unison and those it was already among an octave above, then the machine’s words that would also exist and your own. No recordings.
h3r3 3igHtThe complete recording at constant gain, the heartbeats synthesized for each beat, and the kernel’s repetitions of them: returning heartbeats, the count in the recording’s own cut words, the unknown’s answers, I am here, and eight, which goes on after the recording ends. Tuned to 98.8 or 108.0, the station is one of the artist’s two songs made from the recording, with the same heartbeats and repetitions.
ALGOSONGBOOKFLUSSER I–IV, REDON I, TRUE LOZIVA and local pages. Originals use PCM masters; edits use native Strudel synthesis and effects.
CHAMBERThe actual mixed output of the joined instruments, with independent entry, rest and changing relations.

Mix / collection selects and previews the original five WASM instruments and sound materials. Its Record control captures the actual preview bus; entering the chosen performance opens that performance’s recorder. Older FLUSSER, REDON and LOZIVA entrance links redirect into ALGOSONGBOOK.

CHAMBER brings thirteen of these instrument families into one audio context, HANGLE, ELGNAH, SUPERSCRIPT¹, AMONG and h3r3 3igHt among them. The original four WASM scores, ALGOSONGBOOK, SUPERSCRIPT¹ and AMONG can retain their own time or explicitly follow the shared pulse, with phase. BEGIN, Proleptic, corpus, HANGLE, ELGNAH and h3r3 3igHt recordings retain their authored time; shared-pulse and phase controls are unavailable for them. ELGNAH’s source is its symmetry: choosing another one turns the playing voice live, without a restart. SUPERSCRIPT¹’s source is its pace, and changing it keeps the machine’s tape; its readings are cut from decoded MP3 takes, so the pace control changes their timing and pitch. AMONG’s source is its voicing, sung or an octave up; it sings the poem in synthesized letters, writes the names of the members present and the words a hand spells in the drawing, and its pace changes only its timing. h3r3 3igHt’s source is its station, the recording or one of its two songs, each streamed from the decoded MP3; its beats are heartbeats the kernel gives back, with cuts of the recording’s own words, and after the station ends a beat is still eight. Changing a recording’s pace changes both timing and pitch. Entry, rest, return and leave remain independent.

The chamber’s ALGOSONGBOOK voice performs the six native scores and saved local pages available in this browser. Select its source to choose a page, or use bring a paper score to import a portable songbook JSON page. Its performance controls reshape the actual voices; the full drawing and code editor remain available through own room. A chamber score saves membership, settings and relations; it is separate from the recording. References to local pages remain specific to this browser. Importing a portable page elsewhere assigns it a new local identity, so choose that source again in the receiving chamber.

When ALGOSONGBOOK is selected, its visible paper tools stamp a vocabulary sign or reverse, echo or dry the upcoming four bars of the native score. Original restores the starting score. These chamber note edits last for this session and are captured in the recording; they are not included in save chamber. Use the standalone book to save a portable edited page.

The public chamber hook is window.p3r4mancerChamber, version 1: ready, snapshot(), select(id), exportScore(), importScore(score) and close(). Playback, entry, rest, relations and paper edits have normal labelled controls. Recording uses window.p3r4mancerRecording as above.

Local, explicit capture

Recording requests no microphone or camera, and sends no audio to another participant or server. Optional sensors in the original instrument remain separate opt-ins: a sensor’s derived controls can affect the synthesized sound, but raw sensor media is not fed into this recorder. Downloads stay under your control.

The machine-readable instrument inventory identifies the entrance URLs, listening architectures and source formats.