You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Status: Ready Parent:#1 Audit baseline:4258b8d2cfb98bb4809ad698028aeb905b0c732c Priority: P0 — common microphones and audio interfaces are currently rejected before recording Depends on:#76 for selected-device inventory and routing Feeds:#99, #100, and #97
Problem
The production capture and transcription paths accept only an input configuration whose channel count is exactly one.
AudioRecorder.captureFormat() and AudioRecorder.start() reject formats where channelCount != 1, and TranscriptionService.start() repeats a mono-only guard. The recorder also serializes PCM to Speech through assumptions that are not a complete contract for interleaved, noninterleaved, and multi-buffer AudioBufferList layouts.
This rejects common valid hardware: stereo USB microphones, webcams, aggregate/virtual devices, and interfaces exposing two or many input channels. It is especially likely to affect the same users who need explicit microphone selection.
Per-channel gain, phase, latency compensation, or isolated multitrack recording
Noise suppression, automatic gain control, or denoising
Automatic source switching during a recording
Aggregate-device creation
Handoff
Implement after #76 establishes selected-device routing and before #99/#100/#97 consume the canonical buffer. Add stereo-interface, multi-channel, interleaved/noninterleaved, analyzer-format, retry-equivalence, interruption, and device-change rows to #12.
Status: Ready
Parent: #1
Audit baseline:
4258b8d2cfb98bb4809ad698028aeb905b0c732cPriority: P0 — common microphones and audio interfaces are currently rejected before recording
Depends on: #76 for selected-device inventory and routing
Feeds: #99, #100, and #97
Problem
The production capture and transcription paths accept only an input configuration whose channel count is exactly one.
AudioRecorder.captureFormat()andAudioRecorder.start()reject formats wherechannelCount != 1, andTranscriptionService.start()repeats a mono-only guard. The recorder also serializes PCM to Speech through assumptions that are not a complete contract for interleaved, noninterleaved, and multi-bufferAudioBufferListlayouts.This rejects common valid hardware: stereo USB microphones, webcams, aggregate/virtual devices, and interfaces exposing two or many input channels. It is especially likely to affect the same users who need explicit microphone selection.
Required behavior
audio.cafand fed to Speech so live analysis and saved-audio retry consume equivalent audio.AudioBuffercontains the complete frame set.Phased implementation plan
Phase A — Define the canonical capture contract
Phase B — Implement format adaptation once
AudioBufferList.Phase C — Remove duplicated mono assumptions
channelCount == 1guards in recorder and transcription startup with validation of the canonical post-conversion stream.AudioCaptureFormatdescribe what is actually forwarded to the downstream pipeline rather than merely the hardware's raw channel count.Phase D — Deterministic and native verification
Acceptance criteria
AudioBufferis never treated as the entire general input stream.audio.cafcontains the canonical mono stream and remains playable after normal stop, interruption, and force quit.Out of scope
Handoff
Implement after #76 establishes selected-device routing and before #99/#100/#97 consume the canonical buffer. Add stereo-interface, multi-channel, interleaved/noninterleaved, analyzer-format, retry-equivalence, interruption, and device-change rows to #12.