Introducing Complete Audio Rendering Support (Amadeus)

Originally the first Switch emulator to deliver working audio output. Now, two years later, Ryujinx introduces Amadeus, the first complete implementation of the Switch audio renderer functions.

Introducing Complete Audio Rendering Support (Amadeus)

Two years ago, Ryujinx became the first Switch emulator to deliver working audio output. With today's release, code named Amadeus, Ryujinx becomes the first Switch emulator to implement the entirety of the Switch audio renderer functions (known as 'audren').

The long-time Ryujinx developer Thog tackled reverse engineering work for the audren "rewrite" project in October 2019; she began writing Amadeus in early 2020, and has worked tirelessly to ensure all facets of the Switch audio renderer were properly implemented.

Ryujinx's initial audren implementation had been left unaltered since July 2018, and was only capable of providing basic support for voices and (inaccurate) audio mixing; games that leveraged a more complex audio approach or contained sound effects, such as reverb or looping, were rendered with mostly broken audio. See the original audren implementation followed by Amadeus, in the video of Maitetsu: Pure Station below, for an example of just how jarring a bad audio experience can be.

Warning: please adjust your volume as some audio portions of the below videos may be quite loud & distorted.

Maitetsu: Pure Station

Quite a difference! Not all games suffered from such atrocious audio output (as demonstrated in the first half of the video above), but broken mixing & effects made the audio sound noticeably "off": obnoxiously loud/clipped sound effects or music, stretched or painfully slow sounding voices, looped/repeating audio tracks, and other anomalies such as a softlock during the intro of Splatoon 2 and NVDEC videos playing at 1FPS were observed, with much annoyance to those listening/playing.

One such anomaly caused by the previous audren implementation was a visibly broken dance animation seen on the moon in Super Mario Odyssey. See below for the old audio renderer:

Super Mario Odyssey - Before Amadeus

With Amadeus, Mario and the rest of the crew finally move and jam out to the music as they should.

Super Mario Odyssey - With Amadeus

Here are a few more comparisons demonstrating what this new implementation means for daily use in Animal Crossing: New Horizons, Super Mario Odyssey, and Splatoon 2; use the 'Before' & 'After' buttons at the bottom of the video to swap audio tracks.

Super Mario Odyssey

Animal Crossing: New Horizons

Splatoon 2

The stark audio quality difference in these examples (largely heard as bad mixing & effects) underscores the extreme importance of good audio in an end user/viewer experience. Imagine going to the movie theater to see the latest big box office hit and being met with a loud garbled audio track with unintelligible dialogue. After a few minutes, most of the audience would likely walk out demanding a refund.
Good audio, however, does more than just make the entertainment experience acceptable; it enhances atmosphere, provides pleasant cues, and increases the overall depth of immersion in the particular entertainment venue one is partaking in, be it watching a movie/TV show or playing a video game. Ultimately, audio is just as important as visuals in making the emulation experience an enjoyable one.

While the aim of this release is to be perfect, invariably there will be issues discovered as the public explores the audio soundscapes of their favorite games. We welcome all bug reports concerning this new audio renderer!

We hope you enjoy the new and improved audio renderer; it's easy on the ears. Your continued support is greatly appreciated! If you like what you see here and want to help the Ryujinx Team continue its upward trajectory, consider supporting the project on Patreon. As we are always seeking new contributors to the project, if you have experience with C# or would like to help the project in other ways, please contact the development team on our Discord server.