hmp3-ng: A 2019 fork of an ncurses mp3 player written in Haskell

[ gpl, program, sound ] [ Propose Tags ] [ Report a vulnerability ]

An mp3 player with a curses frontend. Playlists are populated by passing file and directory names on the command line. h displays help.


[Skip to Readme]

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

  • No Candidates
Versions [RSS] 2.4.2, 2.5.1, 2.7.0, 2.7.1, 2.7.3, 2.7.3.1, 2.9.3, 2.10.0, 2.11.0, 2.12.0, 2.12.1, 2.14.1.1, 2.14.2, 2.14.3, 2.15.0
Dependencies array, base (>=4 && <5), binary (>=0.4), bytestring (>=0.10), clock, containers, directory, filepath, hscurses, mtl, pcre-light (>=0.3), process, random, unix (>=2.7), utf8-string, zlib (>=0.4) [details]
License GPL-2.0-or-later
Author Don Stewart, Galen Huntington
Maintainer Galen Huntington
Category Sound
Home page https://github.com/galenhuntington/hmp3-ng#readme
Bug tracker https://github.com/galenhuntington/hmp3-ng/issues
Source repo head: git clone https://github.com/galenhuntington/hmp3-ng
Uploaded by galen at 2024-10-20T00:21:48Z
Distributions NixOS:2.15.0
Executables hmp3
Downloads 3468 total (21 in the last 30 days)
Rating 2.0 (votes: 1) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs not available [build log]
Last success reported on 2024-10-20 [all 1 reports]

Readme for hmp3-ng-2.15.0

[back to package description]

Hackage Build status

hmp3-ng

The hmp3 music player, written in Haskell, dates to 2005, and has a curses interface for use in a text terminal. However, it has become abandonware: the last update was in June 2008, and it no longer builds with today’s Haskell and standard libraries.

This repository is an effort to resurrect this software.

The original Darcs repo has vanished from the Internet. However, I have a copy I checked out in 2008 (to hack on!) with all the patches through version 1.5.1 (the latest is 1.5.2.1), and Hackage has tarballs for the later versions.

  • I used darcs-to-git to port to Git. I manually added commits for the two later published versions, which were only minor changes, mostly the automated regeneration of a configure file (now gone).

  • The code has been updated to compile under recent GHC (tested through 9.10) and libraries. This required rewriting or entirely replacing large sections, mainly low-level optimizations.

  • I added support for building with Stack. It can also be installed from Nix.

  • There is a public GitHub issue tracker, and a GitHub action to continuously test builds.

  • I try to avoid “Not Invented Here” by using established, up-to-date packages from Hackage. Much old code has now been “outsourced” and simplified.

  • All C code is removed, replaced with libraries from Hackage. There is still some use of the FFI.

  • Unicode is supported in titles and filenames, and Unicode glyphs are utilized in the interface.

  • It is much more stable. The app used to crash frequently and require restart, but I’ve had hmp3-ng running multiple times continuously for more than a year with heavy use without any problems.

  • Several additions and changes have been made to the feature set and the UI. A few of the key bindings have been modified per my preference.

  • Work on other features and changes, and documentation, is ongoing.

This is still a work in progress. Let me know if there are problems.

Installation

Either cabal install or stack install will build a binary. You will need to have mpg123 installed, which is free software and widely available in package managers. Alternatively, mpg321 can be used by compiling with the -DMPG321 option. In my experience, the latter worked better, but it has not been updated since 2012 and is no longer available on many systems.

The build depends on the package hscurses, which in turn requires curses dev files. In Ubuntu/Debian, for example, these can be obtained by installing libncurses-dev.

Use

The hmp3 executable is invoked with a list of mp3 files or directories of mp3 files. With no arguments, it will use the playlist from the last time it was run, which is stored in an XDG cache directory, usually ~/.cache/hmp3/playlist.db.

$ hmp3 ~/Music ~/Downloads/La-La.mp3
$ hmp3

Once running, hmp3 is controlled by fairly intuitive key commands. h shows a help menu, and q quits. hmp3 -h prints a simple help message with command line options.

A color scheme can be specified by writing out a Config { .. } value in ~/.config/hmp3/style.conf (or wherever your XDG config is). See Style.hs for the definition. The l command hot-reloads this configuration.

Original authorship list

License:
    GPL

Author:
    Don Stewart, Tue Jan 15 15:16:55 PST 2008

Contributors:
    Samuel Bronson
    Stefan Wehr
    Tomasz Zielonka
    David Himmelstrup