So one night, I felt like writing a wrapper around a couple player libraries that I could put in a shell script to render NSF and S3M to RIFF WAVE to MP3/Ogg. Currently it wraps these:
- Game_Music_Emu (GME), originally by blargg, now maintained by kode54
- Dynamic Universal Music Bibliotheque (DUMB), originally by Ben Davis, now also maintained by kode54
C source code is included, but not a binary for a popular pane-ful PC operating system. I haven't tested it in anything but GNU/Linux on x86-64. Dependencies are GME, DUMB, GCC, and GNU Make, as described in the build instructions. The license of both this wrapper and DUMB is the zlib License; GME is LGPLv2.1, which requires letting end users relink an updated, ABI-compatible library with an existing application.
Code: Select all
$ ./gmewav --help usage: gmewav [options] vgmfile wavfile options: -h, -?, --help show this usage info -t LENGTH render LENGTH seconds of audio (default: 150.0) -f LENGTH fade out the last LENGTH seconds (default: 0.0) -m MOVEMENT render movement MOVEMENT (default: 1) Supported game music formats (Game_Music_Emu): vgm, gym, spc, sap, nsf, nsfe, ay, gbs, hes, kss Supported module formats (Dynamic Universal Music Bibliotheque): it, xm, s3m, mod