Fairly complete high-level binding to LAME encoder

Version on this page:0.2.0
LTS Haskell 21.13:0.2.1@rev:1
Stackage Nightly 2023-09-27:0.2.1@rev:1
Latest on Hackage:0.2.1@rev:1

See all snapshots lame appears in

BSD-3-Clause licensed and maintained by Mark Karpov
This version can be pinned in stack with:lame-0.2.0@sha256:66c13d0530cbbfbc6e739ee1069cef984cd3e1834ebbf7dfb6758586518a2ee8,2846

Module documentation for 0.2.0

LAME for Haskell

License BSD3 Hackage Stackage Nightly Stackage LTS Build Status

This is a fairly complete high-level Haskell binding to LAME.

Provided functionality

  • Fast MP3 encoder working in various modes (you specify compression ratio, desired bit-rate, or parameters for VBR), with quite a few interesting options to tweak.
  • Setting of all common tags, including pictures.


  • No decoding for now. It’s actually done via a separate library in LAME.
  • Relatively limited (compared to ID3 specs) number of tag fields available for setting.
  • Some sample widths are not supported: less than or equal to 8 bit and greater than 16 bits (for integer samples, floats work OK).
  • Some psycho-acoustic and noise-shaping settings are not available for tweaking.

Open an issue if something of this is a deal breaker for you, some of these limitations are easily lifted.


Please kindly direct all issues, bugs, and questions to the GitHub issue tracker for this project.


Copyright © 2017–2019 Mark Karpov

Distributed under BSD 3 clause license.


LAME 0.2.0

  • Got rid of data-default-class. Instead of making EncoderSettings an instance of Default we export defaultEncoderSettings.

LAME 0.1.1

  • Improved documentation and metadata.

LAME 0.1.0

  • Initial release.