asepharyana
189ab1c1f6
feat(fe): real mic capture for voice transmit (kirim suara)
Sebelumnya tombol Live/Muted cuma kirim voice:transmit:start/stop ke
gateway — TIDAK ADA audio yang dikirim (0 getUserMedia/AudioContext di
frontend). MicControl cuma toggle state kosong.
- lib/audio/mic-transmit.ts (BARU): getUserMedia → AudioContext 48kHz →
AudioWorklet (downsample 24kHz mono s16le + volume + chunk 20ms) →
frame 'PCM\0' + Int16LE → ws.sendBinary. Worklet inline via Blob URL
(aman untuk static export).
- useMicTransmit(ws): aktif = start capture + voice:transmit:start;
nonaktif = stop capture + voice:transmit:stop; setVolume untuk slider.
- voice page: volume slider sekarang beneran ngatur gain mic; disconnect
ikut matiin mic.
Verifikasi: tsc PASS, biome 0 error, next build PASS. Test mic butuh
real device (headless browser tidak punya mic) — protokol: connect voice
→ Live → ngomong → orang di channel denger.