v158 · web audio · offline rendering

Chunked render console

A real offline graph — a 220 Hz triangle sweeping up an octave under a fade-out envelope — rendered on demand, chunk by chunk. The row that matters is requested vs received: a Chrome 158 build hands back at most chunkSize frames per call, while an older build ignores the argument entirely and delivers the whole buffer in one go. Both outcomes are real, and the console names which one you got.

Chrome targets incremental rendering for Chrome 158 behind the OfflineAudioContextIncrementalRendering runtime flag. On an earlier or unflagged build, launch with --enable-blink-features=OfflineAudioContextIncrementalRendering, or flip chrome://flags/#enable-experimental-web-platform-features and relaunch. Classic offline rendering works everywhere, so this page always renders real audio.

What this build supports

Probing…

The console

Chunks delivered (sample rate 8000 Hz)
#requestedreceivedcovers framesstate after
No context yet.

Accumulated output

Nothing rendered yet.

code path

const ctx = new OfflineAudioContext({ numberOfChannels: 1, length: 16000, sampleRate: 8000 });
// …oscillator + gain envelope…

// Chrome 158: a bounded slice per call
let chunk = await ctx.startRendering(4096);   // chunk.length === 4096
chunk = await ctx.startRendering(4096);       // next 4096, and so on…

// Pre-158: the SAME line returns all 16000 frames at once —
// the argument is ignored, and the context is finished after one call.

see also