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