Hi all, I’ve been building a tool that replaces a game’s music with other music while the game runs in RetroArch, and it’s ready for other people to try.
What it does
Proteus watches the game’s RAM to learn which song is playing, mutes the original music channels, and mixes in your replacement with crossfades and loops. Sound effects keep playing. Replacements can be:
recordings: WAV, MP3 or Ogg, or another game’s music played on its original sound chip: SPC, NSF, VGM, GBS, HES, KSS, AY and SAP, through libgme. For example, you can play Super Mario World with ActRaiser 2’s soundtrack, song for song.
Two ways to use it
DSP plugin: select Proteus.dsp under Settings → Audio → DSP Plugin and keep using your normal core. Wrapper core: “Proteus Retune + Snes9x” appears as its own core. It mutes song by song and adds a per-song picker in Quick Menu → Core Options. Both read the same per-game profile, a small INI file that maps song numbers to files.
Proteus Studio (the mapping tool)
Figuring out where a game keeps its song number is the hard part, and Studio does most of that for you:
Scan songs: starts every song in the game and saves each one as an .spc you can listen to. Reference songs: downloads the game’s SPC set from Zophar’s Domain or SNESmusic.org to name the songs it finds. TAS movies: for games whose songs can’t be started from outside, Studio downloads the game’s movie from TASVideos and plays it in BizHawk at about 6× speed. It hears every song and learns the song address automatically. Scan folder: runs all of this over a whole ROM folder and rates which games are easy to map. Mapping: pick a replacement for each song, then click Generate INI to write the profile and copy the music into RetroArch’s system folder. Status
Windows only for now. Studio’s song finding works with SNES games through the Snes9x core. The playback side is core-agnostic; channel muting is set up for Snes9x and Genesis Plus GX. Tested so far on Super Mario World, Chrono Trigger, A Link to the Past and ActRaiser 2. It’s early, so bug reports and “this game doesn’t work” reports are very welcome. Download and source: https://github.com/sambena/proteus (LGPL-2.1)
No ROMs or music are included; use your own games.
Thanks to libgme, Dear ImGui, the BizHawk and TASVideos communities, and Zophar’s Domain and SNESmusic.org for their SPC archives.
