Skip to content

Sound: Add noise cancellation and equalizer controls - #310

Draft
Sean-StarLabs wants to merge 8 commits into
elementary:mainfrom
StarLabsLtd:echo-cancellation
Draft

Sean-StarLabs wants to merge 8 commits into
elementary:mainfrom
StarLabsLtd:echo-cancellation

Conversation

@Sean-StarLabs

@Sean-StarLabs Sean-StarLabs commented Oct 3, 2026 •

Copy link
Copy Markdown

Add Noise Cancellation and five-band equaliser controls for the selected input and output.

sound-output sound-input

The device list takes up most of the window, so on high resolution displays it looks like a bug. Pilfer the layout from Mouse & Touchpad and keep each page’s controls together when scrolling.

Use fixed band names, frequencies in tooltips and Reset below the sliders. Keep the normal physical output and let settings-daemon own processing. Switches distinguish the requested setting from confirmed processing.

Requires elementary/settings-daemon#248

Test=StarFighter MTL: input/output selection, Noise Cancellation, all five EQ controls, Reset, and physical volume/mute. Confirmed enable/removal, foreign-graph recovery and audio-server restart.

Add a noise cancellation switch for the selected input.

Let settings-daemon own processing so it continues after Settings closes.
Keep its internal streams out of Applications.

Test=Private PulseAudio/PipeWire: InputPanel switch and device changes.
Show the selected output's five bands, with Reset below the sliders.

Keep the physical output in the device list and show processing errors
without adding routine confirmation messages.

Test=Private PipeWire: GTK sliders, Reset, On/Off and failure recovery.
The device list takes up most of the window, so on high resolution
displays it looks like a bug. Pilfer the layout from Mouse & Touchpad
and keep each page's controls together when scrolling.

Test=StarFighter MTL: Input/Output sidebars and scrolling.
The profile change may have already published its sink or source.
Read the current endpoints after switching profiles, then check the
property before waiting for another notification.
Keep the saved request separate from the confirmed switch state.
Keep the last confirmed state until the daemon acknowledges the new
preference, and clear it when the output or service changes.

Test=StarFighter: switch, gain sliders and Reset reach the physical
     output and restore the saved curve.
Test=Private GTK regression covers delayed and failed removal, successful
     retry, output changes and service disappearance.
Try enabling and disabling EQ with unrelated graphs already attached,
including a graph with no controls. Verify both requests preserve them.

Test=StarFighter: foreign graphs survive both requests; explicit
     recovery works after removing them.
Let the daemon confirm processing instead of allowing GTK to confirm
it when the saved request changes.

Test=StarFighter: the input switch unloads and recreates one owned
     echo-cancel module.
@Sean-StarLabs Sean-StarLabs changed the title Add an echo cancellation switch Sound: Add noise cancellation and equalizer controls Oct 7, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant