class AudioCaptureProcessor extends AudioWorkletProcessor { process(inputs, outputs, parameters) { const input = inputs[0]; if (input && input.length > 0 && input[0].length > 0) { const samples = input[0]; // Float32Array, mono channel const int16 = new Int16Array(samples.length); for (let i = 0; i < samples.length; i++) { const s = Math.max(-1, Math.min(1, samples[i])); int16[i] = s < 0 ? s * 0x8000 : s * 0x7FFF; } this.port.postMessage(int16.buffer, [int16.buffer]); } return true; } } registerProcessor('audio-capture-processor', AudioCaptureProcessor);