Skip to content

mac-capture: Show warning for macOS system effect on audio devices #11933

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion plugins/mac-capture/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ target_sources(
PRIVATE
audio-device-enum.c
audio-device-enum.h
mac-audio.c
mac-audio.m
mac-display-capture.m
mac-sck-audio-capture.m
mac-sck-common.h
Expand All @@ -31,6 +31,7 @@ target_link_libraries(
"$<LINK_LIBRARY:FRAMEWORK,CoreMedia.framework>"
"$<LINK_LIBRARY:FRAMEWORK,CoreVideo.framework>"
"$<LINK_LIBRARY:FRAMEWORK,IOSurface.framework>"
"$<LINK_LIBRARY:FRAMEWORK,AVFoundation.framework>"
"$<LINK_LIBRARY:WEAK_FRAMEWORK,ScreenCaptureKit.framework>"
)

Expand Down
2 changes: 2 additions & 0 deletions plugins/mac-capture/data/locale/en-US.ini
Original file line number Diff line number Diff line change
Expand Up @@ -37,3 +37,5 @@ SCK.AudioUnavailable="Audio capture requires macOS 13 or newer."
SCK.CaptureTypeUnavailable="Selected capture type requires macOS 13 or newer."
SCK.Method="Method"
SCK.Restart="Restart capture"
Warning.Effect.Audio.VoiceIsolation="The macOS system effect 'Voice Isolation' is active on the selected device"
Warning.Effect.Audio.WideSpectrum="The macOS system effect 'Wide Spectrum' is active on the selected device"
Comment on lines +40 to +41
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The message is incorrect, because the settings are active for the application, not the device. There is no way to disable it for one device and have it enabled for another.

Saying "on the selected device" would imply that I can switch to another device and it could have a different state, but that ain't so - voice isolation (the most common setting that might be encountered) will be enabled for all input devices.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is indeed not representative of the underlying state, but I did write it this way on purpose.

I was figuring optimistically that the current behavior is in fact considered a "bug" in some respect on the Apple end, and that eventually we would in fact get per-device effects inside an application, because the current behavior seems so objectively dumb and bad to me. This could be naive / overly optimistic on my part, but I imagined that if that update ever happens, we could adjust the internals of how this message works rather than need to adjust the message itself inside this source properties window.

I also figured that, contextually, it just made more sense to only talk about the device the user has selected in that particular source's properties window. If we wanted to show a warning that "ALL your devices are going to sound like crap," that might be a good idea, but then the appropriate place to put that particular warning would be somewhere on a more general application level (though I don't know specifically where).

Copy link
Member

@PatTheMav PatTheMav Mar 21, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I disagree, this setting is "per application" for a reason - namely that the vast majority of consumer applications is not a compositing/editing application but single-input voice conference or audio/video call applications, and the system-wide voice isolation feature was designed with that use case in mind.

We should not communicate something to our users that is factually wrong (it is not enabled for the device, it is enabled for the application), because then it is us who confuse the users ("but OBS told me it was enabled for the device, where can I disable it for the device?").

The warning should simply state "Voice Isolation is enabled for OBS Studio. Disable if unfiltered audio input is desired".

No opinions. No value statements. Just the facts.

EDIT: Which is not a comment on your assessment, but particularly for situations like these it's easier in my experience to just state the situation as-is and not add yet another layer of interpretation/communication.

Loading
Loading