ASCII by Jason Scott

Jason Scott's Weblog

The JSMESS Sound Emergency —

UPDATE: I’m happy to say a developer has come forward and we’re out of the woods on sound. It’s not perfect, but the web audio API isn’t perfect and we’re much better armed for interacting with it now. Thanks, everyone.


Spread this one far and wide.

It’s rare I get anything close to desperate, but we’re somewhere in the realm of “stunningly frustrated” and so I can see where things are going. I can state the problem simply, and hopefully you or someone who you can reach out to, can be the one to do the (likely minor) work to make this happen.

Essentially, JSMESS has a real sound issue.

MESS does not – the program handles sound nicely and stuff sounds really great, just like its recreation of computers and other features are great. In most cases, these amazing MESS features have translated nicely into JSMESS. But not sound.


I have thrown a lot of good people at this morass. We’ve done a massive amount of work trying to get sound to improve. We have cases where it is very nice, and cases where it is horrible, grating.

It is holding back the project, now. People want to hear the sound. Right now, it is simply not dependable to turn on at the Internet Archive. I want to be able to turn it on.

Like a lot of problems to solve with the web, we have two test cases you can try out: The Wizard test and the Criminal test.

Here is the Wizard Test. It’s an emulator playing the Psygnosis game “Wiz n’ Liz” on an emulated Sega Genesis. This is extremely tough on the browser – almost nothing can play it at 100% speed.

Here is the Criminal Test. It is an emulator playing Michael Jackson’s Smooth Criminal as rendered on a Colecovision. It is not tough on the browser at all. Almost everything should be able to do it at 100% or basically 100%.

In both cases, Firefox will play the emulator faster and will sound better. Chrome will generally do well, but will be slower. Internet Explorer will have zero sound. Safari… well, depends on the day. (And Opera is dead – it’s essentially a reskinned Chrome. As is Seamonkey a rebuilt Firefox.)


So, what do we know?

Well, part of this whole mess was a switch over to the Web Audio API. Mozilla’s browser had a nice format before that worked well, but only on Firefox. In theory, the new API will eventually work everywhere.

Here is a helpful chart describing that compatibility. So we’re working for this Web Audio API.

My belief is only a relatively small number of people will be able to help. I am happy to entertain all ideas, discuss all possibilities. You can come to #jsmess on EFNet if you have IRC, or you can just e-mail me at I am willing to spend all the time you need to ramp up, or try any suggestion.

In the past, fresh eyes have helped us greatly to get MESS to the fantastic position it is now, where it can play tens of thousands of programs for hundreds of platforms. Here’s hoping your fresh eyes might help us further.


Categorised as: computer history |

Comments are disabled on this post


  1. slcrubes says:

    The Wizard Test runs amazingly fast on my Mac (OS 10.9.4) running the latest Firefox. Sound appears to be perfect, too.

  2. k says:

    Web Audio is not yet in IE, but is “in development”, so on the way

  3. natecull says:

    Both work really well for me, latest Firefox 30 on Ubuntu 12.04 LTS, 4GB RAM, Intel® Core™ i3 CPU 540 @ 3.07GHz × 4. A few scratches, especially when scrolling the page, but Wiz’n’Liz is pretty impressive.

  4. xyzzy says:

    The “Wizard” version of the test ran fine on my system (95% or higher most of the time with dips into the 80% range) — it’s a 2.4GHz Core2Duo laptop running Debian Linux and SeaMonkey 2.26.1.

    Also, as a historical side note: SeaMonkey is actually just the community continuation of the Mozilla Application Suite, which Firefox was built from. These days, SeaMonkey and Firefox share a web rendering engine, plus bits of framework, otherwise they’re distinct enough that websites that work poorly in one often as not are fine in the other. (SeaMonkey has been markedly less resource-hungry on my systems than Firefox for the past year or more, so it can often play media that Firefox stumbled a bit on.)

    If nobody has submitted to Soylent News about your post yet, I’ll try to get one in tonight — hopefully some people there will have an idea how to tackle the problem.

  5. cm says:

    Sound playback is a rather binary problem. It only sounds good, if it is delivered/calculated at the needed speed.
    If graphics were the same, it would insert random black or white frames, everytime the framerate would drop under 30/60fps.
    I am not sure if there really is a soundproblem. It looks as if these problems are just there als long as the performance of the emulation is under 100%. A lesser framerate does not distort the image or make it unplayable. A less the 100% emulation speed on the sound is awful.

    In a game engine, the sound can be given a higher priority. In an emulation everything is so heavily interconnected, I think only the performance of the whole emulation can be boosted till it sounds right.

    Wizard on firefox sound amazing, with chrome it stutters, because the waveform is chopped into tiny bits, stretching the 80% performance to 100% time.
    One could try to timestretch the 80% sound to 100% time, but that would be another hit on the performance and likely not sound very good.

  6. chris-l says:

    The wizard test works perfect for me, criminal almost perfect. Arch linux 64bits, i3 3.07GHz, 4GB Ram, firefox 29.

  7. I gave this a little thought today. I have some experience rendering realtime audio in web browsers. Framing the problem as Chrome vs. Firefox might not be granular enough. I’ve had a problem with Chrome audio that only manifested on certain configurations of Windows, never on Mac or Linux.

    What I’m saying is that smooth audio playback is dependent on vagaries of the underlying OS driver stack and audio hardware. For example, I was able to fix my problem on Windows/Chrome by ensuring that there were enough pre-buffered audio samples because the underlying audio stack wanted more pre-buffered audio on startup. Same audio API, but different details sitting underneath.

  8. Todd says:

    Both work perfectly well at full speed for me, on a Mac Book Air using Firefox. Could you just make sound optional in JMESS for those with fast computers and Firefox?

  9. […] And I would be remiss without linking the jsmess plea for help. […]