Skip to content

Benben! (or, "I made a new VGM player!")

Technical discussion about the VGM format, and all the software you need to handle VGM files.

Moderator: Staff

Benben! (or, "I made a new VGM player!")

Post by MistressRemilia »

So, I've been working on a new VGM player for Linux/Unix 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, and you can get both the source code and an x86-64 Linux AppImage of it here.

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:

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.

Re: Benben! (or, "I made a new VGM player!")

Post by donluca »

Nice, the terminal UI is very impressive.
  • User avatar
  • (Jazz) Jackalope Offline
  • Posts: 131
  • Joined: 2022-04-23, 22:53:04
  • Location: On the YM2612 chip

Re: Benben! (or, "I made a new VGM player!")

Post by (Jazz) Jackalope »

Thanks for making this! I added it to the VGM Players article on the wiki.
I'm trying to add information found on the forums easier to find on the wiki. If I forget to credit you, please let me know (or edit the article if you don't want to wait).

WIPs: 2023-10-30
  • User avatar
  • ValleyBell Offline
  • Posts: 4773
  • Joined: 2011-12-01, 20:20:07
  • Location: Germany

Re: Benben! (or, "I made a new VGM player!")

Post by ValleyBell »

Nice work!
The UI looks neat and there are a bunch of features (like EQ stuff) that VGMPlay lacks.
Post Reply