Firefox Browser Add-ons
  • Extensions
  • Themes
    • for Firefox
    • Dictionaries & Language Packs
    • Other Browser Sites
    • Add-ons for Android
Log in
Add-on icon

Simple Sound Control version history - 3 versions

Simple Sound Control by nrek

There are no ratings yet
0 Stars out of 5
5
0
4
0
3
0
2
0
1
0
Simple Sound Control version history - 3 versions
  • Be careful with old versions! These versions are displayed for testing and reference purposes.You should always use the latest version of an add-on.

  • Latest version

    Version 0.2.4

    Released May 13, 2026 - 169.25 KB
    Works with firefox 140.0 and later
    Chrome now prefers Tab Capture for non-100% tab volume by default. The popup attempts the whole-tab audio path before sending content-script volume updates, so sites like Reddit and YouTube are less likely to have their own media controls pinned, fought, or routed through a fragile per-element path. If Chrome permission is denied or Tab Capture is unavailable, SSC falls back to the existing content-script behavior.

    Content-script volume is skipped when Tab Capture successfully owns the tab audio path. Returning to 100% still sends a neutral content-script update so any fallback-path holds can be released.

    Source code released under MIT License

    Download Firefox and get the extension
    Download file
  • Older versions

    Version 0.2.3

    Released May 12, 2026 - 168.06 KB
    Works with firefox 140.0 and later
    Fixed
    Reddit (and other no-CORS MSE players) no longer go silent at non-100% SSC. Reddit's video element loads media via MSE (blob: URL) without crossorigin="anonymous". Per the Web Audio spec, calling createMediaElementSource on a cross-origin element that hasn't opted into CORS taints the source — the call succeeds but the node outputs silence for the rest of the element's life. The content script now gates Web Audio routing on a canRouteViaWebAudio(el) check: elements that would taint (cross-origin without crossorigin, or blob: / data: URLs without crossorigin) skip createMediaElementSource entirely and run on the el.volume fallback path with the existing volumechange enforcer. YouTube (crossorigin="anonymous" set) is unaffected and still uses the gain-node path. Audio is audible and attenuated at SSC < 100% on Reddit instead of vanishing.

    InvalidStateError from createMediaElementSource falls back to el.volume instead of going inert. Previously, if the page's own player attached its MediaElementSource to a media element before SSC (Chrome throws InvalidStateError on the second attach for the same element), SSC marked the element routeFailed and gave up — the slider became a no-op for that element. Now we promote the element into the volume-fallback path on InvalidStateError, so SSC still attenuates against page-driven el.volume writes via the enforcer.

    Fallback elements are no longer pinned at SSC's last attenuation when SSC returns to 100%. Previously, applyVolumeFallback short-circuited at 100% — so an element that had el.volume = 0.2 written for SSC=20% stayed at 0.2 until the page next wrote the property (which, on Reddit, only happens if the user moves Reddit's own slider). The content script now snapshots el.volume on entry to the fallback path and refreshes the snapshot whenever the enforcer detects a page-driven write. On the SSC → 100% transition (and on passthrough entry — see below) we write the snapshot back, so the element ends up at the page's most recent intent rather than at SSC's last value.

    Tab Capture mode no longer double-attenuates fallback-path elements. Previously, engaging Tab Capture while SSC was non-100% on a fallback site (Reddit, Meet, etc.) left a residual el.volume = SSC% written by the content script; the captured stream was then re-attenuated by the offscreen GainNode, so 0.2 × offscreen_gain came out instead of the user-set level. Entering passthrough now releases each fallback element's el.volume back to its snapshot before the offscreen chain takes over, restoring the documented Tab Capture composition (page_intent × offscreen_gain) regardless of whether the element was routed via Web Audio or via the fallback path. The enforcer continues to record page-driven el.volume writes during passthrough (without re-asserting) so per-participant volume changes in Meet etc. are captured for the next release.

    Source code released under MIT License

    Download file
  • Version 0.2.0

    Released May 1, 2026 - 163.99 KB
    Works with firefox 140.0 and later
    tap into GainNode rather than volume adjustments to help mute or louden; rather than attempt to set the volume for the tab directly (philosophical adjustment, functionally better)

    Source code released under MIT License

    Download file
Go to Mozilla's homepage

Add-ons

  • About
  • Firefox Add-ons Blog
  • Extension Workshop
  • Developer Hub
  • Developer Policies
  • Community Blog
  • Forum
  • Report a bug
  • Review Guide

Browsers

  • Desktop
  • Mobile
  • Enterprise

Products

  • Browsers
  • VPN
  • Relay
  • Monitor
  • Pocket
  • Bluesky (@firefox.com)
  • Instagram (Firefox)
  • YouTube (firefoxchannel)
  • Privacy
  • Cookies
  • Legal

Except where otherwise noted, content on this site is licensed under the Creative Commons Attribution Share-Alike License v3.0 or any later version.