Multi-mic selection with audio mixer integration#222
Draft
Conversation
- Add AudioMixer instance and mixer source management to AudioUnit - Add mixer processing timer that periodically renders mixed output - Convert CMSampleBuffer to AVAudioPCMBuffer for mixer input - Convert mixer PCM output back to CMSampleBuffer for encoder - Add addMixerSource/removeMixerSource/addMixerBuiltinSource/removeMixerBuiltinSource APIs - Expose mixer source management through Processor and Media classes - When multiple sources are active, route through mixer; single source uses direct path Co-authored-by: eerimoq <176810+eerimoq@users.noreply.github.com>
…ove test coverage Co-authored-by: eerimoq <176810+eerimoq@users.noreply.github.com>
Copilot
AI
changed the title
[WIP] Add audio mixer for multiple mic inputs
Integrate AudioMixer into audio pipeline for multi-mic mixing
Feb 8, 2026
- Add selectedMicIds set to Mic model class to track which mics are active - Add manualToggleMicById method for toggling mics on/off in the mixer - Add addMicToMixer/removeMicFromMixer helpers to wire up the mixer API - Update QuickButtonMicView to use circle/checkmark toggle instead of single select - Remove delete functionality (mics are toggled, not deleted) - Update AudioSettingsView to show all selected mic names - Update StreamOverlayLeftView to show all selected mic names - Update footer text to say "Select one or more mics to mix together" - When selectMic is called (auto-switch, scene override), reset to single mic Co-authored-by: eerimoq <176810+eerimoq@users.noreply.github.com>
…fter deselect Co-authored-by: eerimoq <176810+eerimoq@users.noreply.github.com>
Copilot
AI
changed the title
Integrate AudioMixer into audio pipeline for multi-mic mixing
Multi-mic selection with audio mixer integration
Feb 8, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The app only supports one mic at a time. This adds an audio mixer that mixes one or more mics into a single output stream, and updates the UI to allow multi-mic selection.
Audio mixer integration (
AudioUnit.swift)AudioMixerclass into the audio pipelineCMSampleBufferandAVAudioPCMBufferat the mixer boundaryaddMixerSource/removeMixerSource/addMixerBuiltinSource/removeMixerBuiltinSourcethroughProcessorandMediaMulti-mic selection model (
ModelAudio.swift)Micclass gainsselectedMicIds: Set<String>andisSelected(mic:)manualToggleMicByIdtoggles mics in/out of the mixer viaaddMicToMixer/removeMicFromMixerhelpers that dispatch to the correct mixer API per mic type (builtin, RTMP, SRTLA, RIST, media player)selectMic(auto-switch, scene override) resets to single-mic mode for backward compatUI changes
QuickButtonMicView: Single-select checkmark → multi-select toggle (circle/checkmark.circle.fill), callsmanualToggleMicById. Removed swipe-to-delete.AudioSettingsView/StreamOverlayLeftView: Show comma-separated names of all selected micsTests (
AudioMixerSuite.swift)💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.