GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — Add opt-in software volume fallback for digital monitor audio by jodansi90 · Pull Request #1929 · MonitorControl/MonitorControl

Conversation

@jodansi90

@jodansi90 jodansi90 commented Oct 18, 2026 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown

Digital monitor outputs such as the Samsung Smart M80F can expose no writable CoreAudio volume and ignore DDC volume commands: the OSD moves, but the sound stays unchanged. This adds an opt-in software-volume fallback for the selected monitor output on macOS 15+, using a device-scoped CoreAudio process tap and a private aggregate device. It attenuates the audio signal, not the monitor’s internal volume.

The existing slider and multimedia volume/mute keys share one state and the existing OSD. Duplicate press notifications observed 2–4 ms apart are coalesced within 20 ms, so mute does not immediately toggle back and volume does not advance twice. Volume repeat and fine adjustment are preserved. The backend pauses on another output, releases resources on quit/sleep, and uses an idle-aware progress watchdog with bounded recovery.

The change is disabled by default, explains audio capture before opt-in, and is availability-gated without raising the existing deployment target. Brightness, slider layout, signing, application version and updater behavior are retained. No Logitech-specific reader, key remapping, driver or companion app is added. Vendored CoreAudioTapKit is MIT-licensed; its attribution and pinned revision are included in source and app resources. See implementation and testing notes.

Validation

  • Release build on Apple Silicon; an Intel Release build also passed during preparation. Xcode 27 requires a deployment-target override of 12.0 for these builds; the project’s older deployment settings are unchanged.
  • bash Tests/run-software-audio-tests.sh: gain bounds/NaN, stereo ramp to silence, duplicate media events, mute repeat, output matching, watchdog idle/stall/recovery.
  • The local prototype with the same audio backend worked on Apple Silicon/macOS 27.2 beta + Samsung Smart M80F DisplayPort audio + MX Keys Mini/Bolt: brightness, volume, mute/unmute and a fresh sign-out/sign-in were physically confirmed. The cleaned upstream integration is compiled and unit-tested separately; its availability facade and opt-in menu still need additional runtime review. Sleep/wake, hotplug, output switching and wider format/device coverage are not claimed as tested.

Related discussion: #1077, particularly #1077 (comment) . This PR offers a concrete implementation for maintainer review; architecture and broader support can be refined together.

Playback-key compatibility update

The dedicated volume interceptor now uses cgSessionEventTap instead of cgAnnotatedSessionEventTap. In the local Samsung prototype, this restored Spotify previous/next/play-pause keys while retaining software volume and mute; the user confirmed playback keys and volume worked together. Playback events are passed through unchanged, without Spotify-specific handling or key remapping. The cleaned PR integration was rebuilt for Apple Silicon and the software-audio test suite passed; the physical confirmation applies to the local prototype. Existing OSD and brightness behavior in this PR remain unchanged.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@jodansi90
Add opt-in software volume fallback for digital monitor audio
d0eaf59
@waydabber waydabber added the AI contribution / fork recommendation Unplanned PR (typically AI) with improvements which may be of interest to the community label Oct 18, 2026
@waydabber waydabber mentioned this pull request Oct 18, 2026
Add software audio controller waydabber/BetterDisplay#5902
Closed
@jodansi90
Preserve playback key routing with session volume tap
a4efde3

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

No reviews

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

AI contribution / fork recommendation Unplanned PR (typically AI) with improvements which may be of interest to the community

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

2 participants

@jodansi90 @waydabber
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.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.