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