Why EOS teases sometimes have no sound in Firefox
Posted: Fri May 15, 2026 9:25 pm
I have found why audio doesn't play inside some EOS teases.
For instance, this tease: Simple Edging (preview is on, you can skip to page cEdging-1) has no metronome sound in Firefox, whereas it works just fine in Chrome.
Basically, what happens is:
This means that playback works in Chrome but not in Firefox due to an implementation detail: Chromium-based browsers are fine with MP3 files with extra data prepended to them, but not Firefox, which throws an exception.
A workaround is to use the following uBlock Origin custom filter:
This will force Howler.js to use its HTML5 backend.
Server-side, I have identified multiple ways of solving this:
i.
For instance, this tease: Simple Edging (preview is on, you can skip to page cEdging-1) has no metronome sound in Firefox, whereas it works just fine in Chrome.
Basically, what happens is:
- The browser loads Howler.js, the library used by EOS to play audio.
- Whenever the EOS script specifies audio must be played, Howler.js sets up playback as needed, using the Web Audio API.
- It then asks the browser to retrieve one or more MP3s from media.milovana.com.
- Once the MP3 file is downloaded, it's fed to the browser's decodeAudioData function.
- Decoding fails with DOMException: The buffer passed to decodeAudioData contains an unknown content type.
Code: Select all
<br />
<b>Deprecated</b>: Creation of dynamic property Wav2Mp3::$stereo is deprecated in <b>/usr/local/var/www/download.php</b> on line <b>34</b><br />A workaround is to use the following uBlock Origin custom filter:
Code: Select all
eosscript.com#%#//scriptlet('set-constant', 'Howler.usingWebAudio', 'false')Server-side, I have identified multiple ways of solving this:
- Actually fixing the issue by removing the use of dynamic properties in this PHP class, and regenerating all affected audio files. This will make the warning go away and Firefox will be happy again. (I would also suggest turning off PHP error reporting.)
- Modifying calls to Howler.js to use the HTML5 backend, rather than the Web Audio API. This workaround could also potentially improve audio start delay.
i.