Benben

Benben playing various files

Benben is a fast and efficient command line audio player and audio converter for Linux and other Unix-like systems with an oldschool-inspired interface. 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.

The latest release is v0.6.0, released on December 5th, 2024.

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 Input 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)
  • MUS (.mus)
  • All module formats supported by libxmp
  • Commodore 64 SID (.sid)
  • RIFF WAVE (.wav)
  • QOA, the Quite OK Audio format
  • WavPack
  • Sun Au (.au)

Notable Features

  • PulseAudio, PortAudio, and libao backends.
  • High-performance playback with minimal memory usage.
  • 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 XSPF and JSPF playlists.
  • High quality resampling.
  • A powerful Configuration file support, including support for per-song configurations.
  • Rendering (converting) 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 with configurable oversampling.
    • 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.
  • Controllable remotely over a dedicated socket.

Command Line Examples

Below are various examples of how to use Benben. Keep in mind that Benben is a command line program, and does NOT have a file browser by design. You pass the files/directories you want to listen to in on the command line.

# Play an MP3 file and stop after it finishes
$ benben "Cool Song.mp3"

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

# Play a directory of music.
$ benben /path/to/my-cool-album/

# Render (convert) multiple files files to WAVs in parallel, storing them in
# the current directory
$ benben --render *.ogg *.mp3

# 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.