11 ms·
Watt The Fox?
- martin_a 2y agoShould I be able to actually hear something? Firefox 134.0.1 on MacOS here, I don't hear anything.
- TrianguloY 2y agoFirefox on Android. I do hear a small white noise!
- kkarpkkarp 2y agono 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 2y agoThe 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/3201a7d61bb4df2816c226d8364cc98bb4235e59/src/sources/audio.ts https://github.com/fingerprintjs/fingerprintjs/blob/3201a7d6...
- czk 2y agocan't wait for cloudflare to implement this to further disrupt my browsing freedoms and waste cpu cycles
- jsheard 2y agoI'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 2y agoThere are even already plugins for bots running in the wild that simulate Audio Context to trick the boot detection. Crazy!
- zie 2y agoGrrr. 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 2y agoThey 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".
- account42 2y agoMaybe I'm an extreme outlier, but I don't want 99.99% of websites to be able to make any noise at all. And for the remaining ones I could live without audio too.
- account42 2y agoConsidering which companies are largely responsible for adding these APIs, maybe they did think about how they can abuse them.
- pianom4n 2y agoWow, 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 2y ago> 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 2y agoNot 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 2y agoI 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 2y agoIf 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 2y agoHah 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 2y agoThat's a much more elegant solution that what I made.
- russelg 2y agoThis 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...
- IIsi50MHz 2y agoCan you mitigate or prevent the issue by installing something like eqMac? I use it for basic response levelling for various headphones and the built-in speakers.
- padenot 2y agoThis 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 2y agoThank you for your words on this, and energy on everything else!
- zX41ZdbW 2y agoThanks! What the article does not tell is why it plays white noise (instead of silence).
- jsheard 2y agoIt 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 2y ago> 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 ...
- unit149 2y ago[dead]
- ber3 2y ago[flagged]
- Traubenfuchs 2y ago…why is a non suspended AudioCntext that is currently not playing anything emitting white noise though?
- spiffyk 2y agoThe 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 2y agoI'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 2y agoGenerally 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 2y agoI can already imagine "websites control minds via barely-hearable noise" conspiracies...
- Already__Taken 2y agoI 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 2y agoAbstraction 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 2y agoThis 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 2y agoI'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 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 2y agoOh! 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 2y agoThe code in Chromium which handles this suspension is here: https://source.chromium.org/chromium/chromium/src/+/main:media/base/silent_sink_suspender.h 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 2y agoThanks, this fixed the frontpage of https://www.dr.dk/ https://www.dr.dk/
- Jotalea 2y agoI wonder if the same problem happens on Android devices too.