cross-posted from: https://lemmy.sdf.org/post/13393428
So, I've been working on a new VGM player for Linux over the past year called Benben. It started out just a way for me to have fun with VGM files, and to build a player that had a few extra bells and whistles compared to VGMPlay, but it's grown quite a bit since then. I just released v0.4.0 of it today :D There's a Linux x86-64 AppImage of it at the link.
Benben supports most of the chips that VGMPlay currently supports (there's four or five less-used ones that aren't yet ported). The big ones are all in and working, though: YM2612, YM2610, YM2608, YM2151, NES, HuC6820, QSound, and more.
Some of it's more interesting features:
- Neat terminal interface
- PulseAudio, PortAudio, and libao backends
- Multiple files can be specified and they will play one after the other.
- Song and playlist looping.
- Support for uncompressed VGMs, gzip compressed VGMs (.vgz), and additional non-standard formats (.vgzst ZStandard compressed VGMs, and .vgb BZip2 compressed VGMs).
- Support for XSPF and JSPF playlists
- Configuration file support, including support for per-song configurations.
- Rendering multiple files in parallel to either WAV or Au format.
- Support for multiple bit depths and sample rates, and both integer and floating point WAV/AU files.
- Optional effects that can be enabled/disabled at runtime: soft clipping, parametric EQ with an arbitrary number of bands, stereo enhancer, reverb (MVerb or Zita, selectable).
- Customizable VU meter
- Keyboard control support
See an example here: https://www.youtube.com/watch?v=01jfImYMU6o
It's built on top of a library I also started called YunoSynth, which is basically an OOP rewrite and cleanup of the sound/emulator parts of VGMPlay in the Crystal programming language. These were all hand-ported by me, so there may have been some oversights, but things seem to be working correctly based on my own tests over the last year. Benben itself is also written in Crystal, so if you want to compile it from source, you'll need that. Anyway, if YunoSynth has the chip implemented, Benben supports it.
So yeah, enjoy ^_^ As I said, I started this mainly just for fun, and to have a player more like what I wanted, but it seems like others may also find it useful or fun. I plan to get full or almost-full compatibility going with the remaining few chips this year.
I'll stick with my trusty Emacs (and Zile)