[HN Gopher] Watt The Fox?
       ___________________________________________________________________
        
       Watt The Fox?
        
       Author : h43z
       Score  : 320 points
       Date   : 2025-02-15 21:32 UTC (1 days ago)
        
 (HTM) web link (h.43z.one)
 (TXT) w3m dump (h.43z.one)
        
       | martin_a wrote:
       | Should I be able to actually hear something?
       | 
       | Firefox 134.0.1 on MacOS here, I don't hear anything.
        
         | TrianguloY wrote:
         | Firefox on Android. I do hear a small white noise!
        
         | kkarpkkarp wrote:
         | no sound for me, but indeed, when I click the button to play
         | the sound on author's demo page, watt consumption increases by
         | ~1
        
       | mike_d wrote:
       | The websites opening an audio context without using it to play
       | anything are probably doing bot detection.
       | 
       | Different browser engines and operating systems implement audio
       | processing differently, so if you play a completely inaudible
       | sound and then record it back (from the API not the microphone)
       | you end up with a signature.
       | 
       | You can use that signature to see if the browser is lying about
       | its user agent, running in headless mode, or all sort of other
       | interesting edge cases that are not a real user buying widgets.
       | 
       | https://github.com/fingerprintjs/fingerprintjs/blob/3201a7d6...
        
         | czk wrote:
         | can't wait for cloudflare to implement this to further disrupt
         | my browsing freedoms and waste cpu cycles
        
           | jsheard wrote:
           | I'd be surprised if their bot-check interstitials aren't
           | already doing something along those lines. Web Audio has been
           | around for a long time.
        
         | x0054 wrote:
         | There are even already plugins for bots running in the wild
         | that simulate Audio Context to trick the boot detection. Crazy!
        
         | zie wrote:
         | Grrr. Browser/Web standard people went crazy with API's and
         | never stopped to think how the world will abuse them to do crap
         | like this.
        
           | IshKebab wrote:
           | They definitely thought about it, but fingerprinting is
           | already _so_ easy, and really difficult to stop even if you
           | started the web platform from scratch. Nobody is going to
           | accept  "websites can't play any audio because it would make
           | fingerprinting sliiiiiightly easier".
        
       | pianom4n wrote:
       | Wow, this white noise has been driving me crazy for a long time
       | but I could never track it down.
       | 
       | The tab doesn't show the "playing" icon, and muting the tab
       | doesn't stop the noise.
       | 
       | Even using the Windows volume mixer to mute Firefox doesn't stop
       | the noise.
       | 
       | Edit: The addon is actually pretty bad for a desktop user since
       | the white noise starting/stopping constantly is far more
       | annoying.
        
         | sneak wrote:
         | > _Even using the Windows volume mixer to mute Firefox doesn 't
         | stop the noise._
         | 
         | Seems like this is a deeper bug than FF then, no?
        
           | ComputerGuru wrote:
           | Not necessarily. Modern Windows lets you create a new
           | mixer/mediasource separate from the app, so you can have Your
           | regular app sounds then separate media(or notification)
           | sounds.
        
         | h43z wrote:
         | I use the extension on desktop without problems. I guess it
         | depends on what websites you visit. I would disable the
         | extension for ones that do play/stop sounds a lot.
        
       | cosmotic wrote:
       | If the output idles, digital SPDIF signals lose sync. Re-syncing
       | once playback starts is not instant, and you lose the first
       | second of audio or so. I wrote a program that kept open an output
       | withought dumping any data to the line, just to prevent the
       | output from idling.
       | 
       | Doesnt make much sense in the context of a laptop though, so
       | energy savings make sense there.
        
         | PeakKS wrote:
         | Hah yeah I used to do the same thing for my USB DAC, except I
         | just did had `play -qn &` start when I logged in.
        
           | cosmotic wrote:
           | That's a much more elegant solution that what I made.
        
         | russelg wrote:
         | This annoyed me to no end with my FiiO K3 DAC on my Macbook.
         | System sounds like dings etc would basically not play because
         | of the delay.
         | 
         | On their Windows drivers, you have an option to set the stream
         | as Always On. I wish this was available on macOS as well...
        
       | padenot wrote:
       | This is planned, and important, and we'll fix it hopefully soon,
       | it's long overdue. I'm sorry this hasn't happened yet, it's
       | always a game of priorities that can never satisfy everybody on
       | time. It however ranks fairly high on my personal list.
       | 
       | As one could imagine it's a bit (read: a lot) more complicated
       | than just pausing the AudioContext after some time of silence,
       | but we'll get it fixed regardless, it's possible because others
       | did it. There are tradeoffs we're willing to do.
       | 
       | Source: Firefox implementer of a lot of things around this,
       | editor of the Web Audio API standard.
        
         | patcon wrote:
         | Thank you for your words on this, and energy on everything
         | else!
        
         | zX41ZdbW wrote:
         | Thanks! What the article does not tell is why it plays white
         | noise (instead of silence).
        
           | jsheard wrote:
           | It might be that nothing is actually being played, but
           | opening an audio session wakes up your systems DAC/amplifier
           | so you can hear the analog noise floor. In that case the
           | noise is actually always there during playback, you're just
           | more likely to notice it during silence.
           | 
           | Computers are a really hostile environment for audio, if
           | possible you're always better off getting an external audio
           | interface to put some distance between the analog signal path
           | and any EMI spewing components.
        
             | II2II wrote:
             | > Computers are a really hostile environment for audio
             | 
             | My first thought was the author should be happy that they
             | don't live back in the bad old days of computing. Audible
             | noise was the norm, even when you were playing audio. At
             | least for PCs with sound cards. I don't recall the
             | situation being quite as bad on other platforms. Modern PCs
             | are much better on this front.
             | 
             | I have vague recollections of a quote from the Computer
             | Chronicles in the mid-1990's. It went to the effect of
             | turning a $2000 computer into a $200 stereo ...
        
               | tonyarkles wrote:
               | And don't forget RFI if a cell phone was close to your
               | speakers. You'd hear a noise right before your phone
               | started to ring!
        
               | andrecarini wrote:
               | I could even hear an actual radio broadcast coming off my
               | speakers whenever they were powered. Maddening!
        
               | cafeinux wrote:
               | This kind of thing amazes me. Radio is such a simple, yet
               | omnipresent, technology that even something not made to
               | listen to radio can accidentally catch and play the
               | signal like an actual radio player would. I sure hope
               | it's never going away.
        
               | K0balt wrote:
               | When I was growing up, we lived within 6km line of sight
               | from a powerful AM broadcaster on 660KHZ.
               | 
               | By some stroke of fortune, our woodstove smoke pipe and
               | the tinfoil backed insulation of the house, Along with
               | the grounded base but rusty bolted on top of the
               | woodstove created some kind of resonant receiver at that
               | frequency. It would generate sufficient voltage to
               | deliver the occasional electrical shock, which was very
               | mysterious because we had no idea how this stove could
               | shock you, even when the mains were turned off.
               | 
               | The mystery of the source of the power was shocks when we
               | built a wire drying rack above the stove, which acted as
               | a sound transducer. With the glove rack, we were treated
               | to 24/7 programming, mostly community oriented stuff like
               | "problem corner"(community issue discussion) bush relay
               | messages for remote listeners outside of telephone reach,
               | "tradio" (call in radio Craigslist, basically), news
               | shows, talk shows, and some occasional music.
               | 
               | To me, it was just completely normal, never having known
               | anything else besides electrocution hazard wood stoves
               | and radio show mitten racks lol. It did fuel a
               | fascination for electronics, though, so by the time I was
               | seven I was an avid reader of popular electronics
               | magazine. Forrest Mims. What a treasure of an engineer.
               | 
               | https://en.wikipedia.org/wiki/Forrest_Mims
        
               | lxgr wrote:
               | > [...] bush relay messages for remote listeners outside
               | of telephone reach [...]
               | 
               | That sounds fascinating! What types of messages were
               | these usually?
        
               | K0balt wrote:
               | So and so is going to some place up river, will bring
               | something, so and so died, the funeral is....somebody
               | came is in town until the 29th, etc.
        
               | Semaphor wrote:
               | > You'd hear a noise right before your phone started to
               | ring!
               | 
               | Hah, haven't thought about that in a long time. That's
               | the anecdote that feels unbelievable if I hadn't
               | frequently experienced it myself.
        
               | TeMPOraL wrote:
               | That was an incidental but very useful feature!
        
               | ltrls23 wrote:
               | It was used in some nice electronic music!
               | 
               | Dual Band - GSM (1998):
               | https://www.youtube.com/watch?v=ntKOJdht3t8
               | 
               | Mav - HGP (2005):
               | https://www.youtube.com/watch?v=ZacenNeu4fw
               | 
               | Tatarola - Who Is Calling (2007):
               | https://www.youtube.com/watch?v=hTOyaG7VYKw
        
               | myself248 wrote:
               | Sometimes that was pretty useful though; you could infer
               | a lot about the system's state by listening to the faint
               | hints of bus activity!
        
               | Asooka wrote:
               | Back in the CRT days my speakers would make noise
               | whenever I scrolled a website, lol.
        
             | joecool1029 wrote:
             | I knew about OP's problem for years with discord's piece of
             | shit webapp being the most egregious offender. For my
             | system the sound falls into a low power state and there's
             | an audible pop/click when something wakes it up. Even with
             | the tab silenced and all notifications turned off it would
             | still periodically do this. Other sites that used WebRTC
             | had same problem but not as frequent. I think I worked
             | around the issue eventually by disabling the automatic low
             | power state at the expense of some additional battery
             | consumption.
        
         | JohnBooty wrote:
         | Thanks for all of your hard work. Firefox is so important.
        
         | pentagrama wrote:
         | Thank you for your work and also sharing the status here. There
         | is a bugzilla link to follow the progress of the fix?
        
         | zoogeny wrote:
         | Please don't take this kind of criticism personally. There was
         | a recent blow up from an open source maintainer because he
         | viewed this kind of criticism as a frustration.
         | 
         | Just know that most people understand everything you are saying
         | here. Many things to do, finite amount of time.
         | 
         | I have personal experience of Firefox developers going above
         | and beyond to make high-usage sites work for their users. I
         | know first hand the lengths they will go to when issues affect
         | users. Thank you and keep plugging away.
        
           | godelski wrote:
           | I'm a long time Firefox user and have no intention of
           | changing. I fully agree but want to make an important
           | distinction. Sometimes people are complaining about
           | development work and sometimes people are complaining about
           | priorities. This is definitely the latter and I do not think
           | it necessarily a developer issue. Firefox does have the
           | opportunity to become so much greater, but it does require a
           | lot of work and time. I'd argue, give the developers the time
           | and resources. I know Mozilla has their hands in a lot of
           | pies, but Firefox is probably the most important one, even if
           | it isn't the most revenue generating one. Firefox is the
           | symbol of Mozilla and it needs to be the best. The developers
           | have proven how much they can change things and make things
           | better. The Rust partial rewrite was nothing short of a
           | success. So I want to see that progress continued and to keep
           | pushing in that direction.
        
         | lknuth wrote:
         | Thank you! Your work is keeping the web open.
        
         | Centigonal wrote:
         | I appreciate you and everybody else's work on Firefox! Thank
         | you!
        
         | noah_buddy wrote:
         | I would like to become a better use of Firefox by debugging
         | issues I find locally. Any guidance on where to start?
        
           | buovjaga wrote:
           | Dev doc index is here, includes links to articles about
           | debugging: https://firefox-source-docs.mozilla.org/
        
             | noah_buddy wrote:
             | Thank you!
        
         | h14h wrote:
         | I hope this kind of thing can shoot up the priority queue!
         | Battery-stealing and generally janky behavior is likely the
         | main reason folks stop using a piece of software.
         | 
         | Thanks for your work, and for talking about the issue on a
         | public forum! It's so critically important that Firefox
         | maintains/increases relevancy. I'm sure it's unbelieveably
         | difficult work given the resources behind Chromium & Blink.
        
         | Glyptodon wrote:
         | On Linux there are weird audio issues that lead to speaker pop,
         | and sometimes opening a new tab can make the audio running from
         | other tabs permanently distorted and static-y until you reboot.
         | (Not a complaint. I've always wondered if it was a browser or
         | audio system issue.)
        
           | pacifika wrote:
           | Yeah I'm getting this feedback on video calls. I thought
           | maybe it was related to hibernation or microphone input level
           | resetting to 120%
        
           | kruffin wrote:
           | When I had this issue, it was fixed by disabling and removing
           | the speech-dispatcher. Something to do with text to speech (I
           | never use it but is sure to be a pain if you do need it)
           | automatically doing things that corrupt the audio stream
           | globally.
           | 
           | https://tqdev.com/2021-firefox-ubuntu-crackling-sound
        
         | 4ndrewl wrote:
         | Thank you for all your work on Firefox!
        
         | stefanka wrote:
         | Thank you!!
        
         | darkwater wrote:
         | Thank for your work, from a Firefox user. Also, the OP is
         | probably already aware of this:
         | 
         | "It's not perfect as resuming takes a little bit of time and it
         | may not always resume, as there are multiple paths to starting
         | audio. But it's good enough for me."
        
         | JoshTriplett wrote:
         | Thank you for your work on this!
         | 
         | I think many people would be curious to hear about the
         | additional complexity above and beyond "suspend when silent",
         | if there's an already-written thing you could link to.
         | 
         | (I do know that resume-when-playback-starts sometimes causes
         | the first bit of audio to get lost, or _all_ of the audio for
         | short things like notification sounds.)
        
           | genewitch wrote:
           | I have a record player with bluerooth that doesn't understand
           | 45s exist, even though the manufacturer included the adapter;
           | also Bluetooth drops out during quiet parts, such as those in
           | podcasts or old radio programs or any music made prior to
           | 1997 within reason.
           | 
           | So I ask: define silence. Define sleep. Because you get it
           | wrong you have a $200 device headed for the landfill.
        
             | 2big2fail_47 wrote:
             | why do you have a record player with bluetooth in the first
             | place. isn't that against the very concept of an analogue
             | medium?
        
         | rambambram wrote:
         | Big thanks from a Firefox user.
        
         | h43z wrote:
         | Cool to hear. This should deserve to be a high priority bug.
         | Thanks for your work on firefox.
        
         | moffkalast wrote:
         | > we'll fix it hopefully soon, it's long overdue. I'm sorry
         | this hasn't happened yet
         | 
         | If one could describe the state of Bugzilla in two sentences,
         | that would be it :P
        
         | EasyMark wrote:
         | For every one person "complaining" there are 999 of us quiet
         | ones out here that use and love your product hours out of every
         | day . I hope devs at firefox can cut through gruff articles
         | with click baity titles and extract nuggets of usefulness from
         | them though.
        
       | Traubenfuchs wrote:
       | ...why is a non suspended AudioCntext that is currently not
       | playing anything emitting white noise though?
        
         | spiffyk wrote:
         | The AudioContext itself is not the source of the white noise.
         | It just causes the DAC (sound card) to power on, which probably
         | emits some noise by itself.
        
           | lxgr wrote:
           | I've always wondered if a browser, the OS's sound server etc.
           | can distinguish between "silence being played" and "nothing
           | being played".
           | 
           | The difference really matters in some cases, e.g. for
           | Bluetooth audio devices supporting multiple sources picking
           | the correct one (looking at Bose's annoying implementation
           | here), avoiding battery drain such as here etc.
           | 
           | Does anybody know if these APIs can even theoretically
           | distinguish receiving all zero bytes from not receiving any
           | bytes, or are the interfaces usually things like ring buffers
           | etc. where the server literally might not be able to know if
           | the client pushed new zero samples or if it's just playing
           | back the old ones over and over again etc.?
        
             | Sidnicious wrote:
             | Generally speaking yes, they are different. One pattern is
             | that you do something to create a source of audio, and the
             | layer below you starts handing you buffers to fill. With
             | each buffer you send back you can indicate if you want to
             | keep getting called with fresh buffers -- if not, the calls
             | stop until you poke something to resume them.
             | 
             | Another pattern is that you push buffers to the layer below
             | you and there's backpressure to keep you sending at the
             | same rate they're being played out. In that case you can
             | just stop sending buffers when you have nothing to play.
             | 
             | Your reasons are correct. There are so many layers between
             | an app (or web page) and the physical layer of sound which
             | all burn power; phones and earbuds owe quite a bit of their
             | battery life to shutting down bits of hardware when unused.
             | 
             | EDIT: this reminds me of a WWDC many years ago -- Apple got
             | really excited about _timer coalescing_ and added
             | parameters to all the low level timer APIs which let you
             | indicate how much slop you want to allow for each
             | individual timer. Ideally then the OS can keep the CPU
             | asleep for longer and wake it up to do work in batches.
             | Code that deals with real time sound has tight timing
             | requirements and can't be delayed as easily, so in a timer-
             | coalesced world distinguishing between playing silence and
             | playing nothing has an _even bigger_ power impact.
        
       | NooneAtAll3 wrote:
       | I can already imagine "websites control minds via barely-hearable
       | noise" conspiracies...
        
       | Already__Taken wrote:
       | I don't know the ins-and outs of how audioContext is implemented
       | but it's got a lot in there to be very clever and dynamic,
       | playing a notification chime seems like that feels like drawing
       | an svg with D3 instead of img href *.svg. I wonder if there's a
       | serviceWorker hook that could register simple repeatable stuff
       | like notification handlers much lower down on a more efficient
       | API.
        
       | immibis wrote:
       | Abstraction layers are hard and have bugs. We should probably
       | figure out a way to reduce the number of abstraction layers.
       | Maybe instead of running the software in a virtual machine with
       | an OS abstraction layer (which is itself a shitty OS), it could
       | compile directly to machine-language instructions and interact
       | with your real OS. You could download this once and run it many
       | times.
        
         | lxgr wrote:
         | This has nothing to do with machine language vs. VMs. And yes,
         | there are abstraction layers here, but for very good reasons:
         | 
         | You almost certainly don't want every browser tab gaining
         | exclusive address to your sound hardware, for example, which
         | would include things like volume control. It also would make
         | mixing sound from multiple applications/tabs impossible, which
         | is arguably a must-have.
        
       | lxgr wrote:
       | I've noticed this, or something very similar (not sure if sites
       | are keeping audio contexts open actually, or if this is Firefox-
       | internal, as it also happens on Youtube and other sites not using
       | the Web Audio API) on macOS a while ago too (i.e. an audio-
       | induced power drain, but no white noise):
       | https://bugzilla.mozilla.org/show_bug.cgi?id=1821102
       | 
       | Right now, coreaudiod on my Mac is at 20% CPU with nothing
       | playing whatsoever :( I'm close to switching to another browser
       | until this is fixed, as it's really ruining battery life for me,
       | but I really don't want to give up Firefox over something
       | seemingly so trivial.
       | 
       | Update: This seems to be a related but different bug.
        
       | brilee wrote:
       | Oh! I think this explains the issue I had on Android Firefox
       | where every so often my phone would randomly consume 10gb/day in
       | data (costing me $stupid on phone bill). I believe a news site
       | was playing audio and was loading new ads on repeat and the tab
       | never went to sleep because of the audio! I had to switch to
       | chrome because the repeating surprise data bills were becoming
       | silly
        
       | DaleCurtis wrote:
       | The code in Chromium which handles this suspension is here:
       | https://source.chromium.org/chromium/chromium/src/+/main:med...
       | 
       | Basically after detecting silence for 30 seconds or so it
       | switches from a sink backed by the OS audio device to a null
       | sink.
       | 
       | Note: Since this uses a different clock than the audio device we
       | have received some reports that when the context is finally used
       | there can be some distortion at specific tones. The workaround is
       | for sites to use the suspend resume API mentioned in the article.
        
       | kseistrup wrote:
       | Thanks, this fixed the frontpage of https://www.dr.dk/
        
       ___________________________________________________________________
       (page generated 2025-02-16 23:01 UTC)