Benben

Benben playing Donpachi Squad Departure (Select)' by Manabu Namiki

Benben is a fast and efficient command line audio player and audio converter for Linux/Unix. It supports multiple formats, and is especially suited to people who organize their music in folders, and for those who prefer to use terminals instead of GUIs. It is written almost entirely in the Crystal programming language.

Wanna support this project? Buy Remilia a coffee on Ko-Fi, support her through Liberapay, or support her through Throne. Support is greatly appreciated for this volunteer effort ^_^

Buy Me a Coffee at ko-fi.com Donate using Liberapay My Wishlist

Example Videos

The Partition 36 videos are songs written by Remilia. Check out her Bandcamp page.

Supported Formats

  • VGM
    • Uncompressed (.vgm)
    • GZip compressed (.vgz)
    • ZStandard compressed (.vgzst)
    • BZip2 compressed (.vgb)
  • MPEG-1
    • MPEG-1 Layer III (.mp3)
    • MPEG-1 Layer II (.mp1)
    • MPEG-1 Layer I (.mp1)
  • Ogg Vorbis
  • Opus
  • FLAC
  • General MIDI (.mid)
  • All module formats supported by libxmp
  • RIFF WAVE (.wav)
  • QOA, the Quite OK Audio format
  • WavPack
  • Sun Au (.au)

Notable Features

  • PulseAudio, PortAudio, and libao backends.
  • High-performance playback.
  • Fast, multi-threaded UI via S-Lang.
  • Multiple files can be specified and they will play one after the other.
  • Song and playlist looping.
  • Output audio over TCP.
  • Support for the following formats:
    • VGM/VGZ/VGZST/VGB, with support for all the VGM chips that supported by YunoSynth.
    • FLAC
    • MIDI (and MUS)
    • All modules supported by libxmp.
    • Ogg Vorbis
    • Opus
    • MPEG-1 Layers I, II, and III (.mp1, .mp2, and .mp3 files)
    • QOA, the Quite OK Audio format
    • WavPack
    • RIFF WAVE and Au files
  • Support for XSPF and JSPF playlists.
  • High quality resampling.
  • Configuration file support, including support for per-song configurations.
  • Rendering multiple files in parallel to WAV, Au, WavPack, or QOA format.
  • Support for multiple bit depths and sample rates, and both integer and floating point WAV/AU files.
  • Optional effects:
    • Soft clipping.
    • Parametric EQ with an arbitrary number of bands.
    • Stereo enhancement effect.
    • Reverb with selectable type and preset.
  • Customizable VU meter.
  • Keyboard control support.
  • ReplayGain/RVA support.

Command Line Examples

Below are various examples of how to call Benben on the command line.

# Play a VGM file and stop after it finishes
$ benben "Cool Song.vgz"

# Play a VGM and loop twice
$ benben --loop 2 "Another Cool Song.vgz"

# Render multiple VGM files to WAVs in parallel
$ benben --render *.vgz

# Play various files and stop after it finishes
$ benben "Cool Song.vgz" spacedeb.mod "02 - E1M1.flac"

# Show the help information
$ benben --help

# Show version information
$ benben --version

# List reverb presets for "MVerb"
$ benben --reverb-type mverb --reverb-preset list

Development

Development Milestones are listed in the wiki.

How do I contribute?

  1. Go to https://chiselapp.com/user/MistressRemilia/repository/benben and clone the Fossil repository.
  2. Create a new branch for your feature.
  3. Push locally to the new branch.
  4. Create a bundle with Fossil that contains your changes.
  5. Get in contact with me.

Contributors

Links and Licenses

Benben is under the GNU Affero General Public License version 3.