Difegue / DoujinSoft

Web Shop/Archive for WarioWare DIY games.
https://diy.tvc-16.science/
GNU General Public License v3.0
51 stars 6 forks source link

Music inaccuracies with games and records played in browser #30

Closed ThePowerPlayer closed 9 months ago

ThePowerPlayer commented 1 year ago

While it's incredibly impressive to be able to play microgames and records within a web browser, they suffer from several issues with how their music sounds. This makes the audio inaccurate to how it would sound in WarioWare D.I.Y. on a Nintendo DS or D.I.Y. Showcase on a Nintendo Wii.

For example, this is how the Pyoro NinSoft microgame should sound in D.I.Y. Showcase: https://youtu.be/tCSIGAj_ZiQ?t=80 However, when playing the microgame on DoujinSoft (https://diy.tvc-16.science/games?id=1c44f131f5e616cd19c826ceeb450f8e), the music is pitched slightly higher than it should be, some of the instruments lack an echo effect, and the incorrect percussion instruments are used. To clarify, the only problems involve the music, not the sound effects; those are stored as OGG files which are played independently of the music (such as https://diy.tvc-16.science/audio/rising.ogg), and they sound just like they do in-game.

This problem extends to every microgame and record played in the browser, and it especially hurts the appeal of playing records in the browser when they're so inaccurate compared to how they sound in-game. As far as I'm aware, each instrument is stored as a pattern file (such as https://diy.tvc-16.science/soundfont/Drum_000/038_Snare_1.pat), so ideally, solving these issues would involve emulating the patterns more accurately to how they sound in-game.

Difegue commented 1 year ago

👋 As you might expect, those issues are already known and have been a thing for quite a while, but it's a good thing to have written word about it.

I’m using a JavaScript port of the Timidity midi player to play music in the browser, alongside a soundfont that tries its best to map the exported midi instruments to the original WWDIY sounds.
This soundfont is what we use, but the instrument list has been rearranged a bit over the years. Lots of details here: https://github.com/Difegue/DoujinSoft/pull/5

There are currently two different mio -> midi export pipelines in DoujinSoft; The old one using DIYEdit's original Java code (currently used for Records), and a new one using work from Mio-Micro (currently used for the microgames).

Difegue commented 9 months ago

46 greatly improves this by tweaking the soundfont and midi generation. Look forward to it in the upcoming update!