This is a complete high-level Haskell binding to libFLAC—the reference FLAC implementation.
As the maintainer of the C FLAC code base, I must say I'm impressed. Quite honestly, I think the C API is horrible.
These are the goals of the project:
FLAC is awesome and Haskell is awesome, surely there should be a safe Haskell API to the fast libFLAC library!
Seriously though, we have
htaglib to work with audio
metadata, but it does not support FLAC-specific things I would like to
manipulate. We have
hsndfile, but I don't
really want to read FLAC data into a buffer or Haskell Vector. How simple
is it (if possible) to decode a FLAC file using that library? How simple is
it to figure out where to begin with such a task? With flac it is one line
of code.
flac can work with:
Metadata—full support for reading/writing/deleting of all audio parameters, application data, seek tables, vorbis comments of all sorts, CUE sheets, and even pictures.
Stream decoder—simple interface for decoding to WAVE and RF64.
Stream encoder—a lot of options to tweak, everything that libFLAC supports.
Right now there are three main limitations:
No Ogg FLAC support, and I do not plan to add it; I'll accept a PR adding support for Ogg FLAC.
It's not possible to use custom callbacks for printing decoding/encoding progress in real-time.
Only works on little-endian architectures so far; I'll accept a PR lifting this limitation.
The best way to start using flac is to take a look at the
Haddocks. Encoding and decoding
should be simple to understand; for metadata there are examples in the docs.
Feel free to ask me a question if you get stuck with something.
The following packages are designed to be used with flac:
flac-picture—add
pictures to FLAC metadata more easily.Please direct all issues, bugs, and questions to the GitHub issue tracker for this project.
Pull requests are also welcome.
Copyright © 2016–present Mark Karpov
Distributed under the BSD 3-clause license.
This is a complete high-level Haskell binding to libFLAC—the reference FLAC implementation.
As the maintainer of the C FLAC code base, I must say I'm impressed. Quite honestly, I think the C API is horrible.
These are the goals of the project:
FLAC is awesome and Haskell is awesome, surely there should be a safe Haskell API to the fast libFLAC library!
Seriously though, we have
htaglib to work with audio
metadata, but it does not support FLAC-specific things I would like to
manipulate. We have
hsndfile, but I don't
really want to read FLAC data into a buffer or Haskell Vector. How simple
is it (if possible) to decode a FLAC file using that library? How simple is
it to figure out where to begin with such a task? With flac it is one line
of code.
flac can work with:
Metadata—full support for reading/writing/deleting of all audio parameters, application data, seek tables, vorbis comments of all sorts, CUE sheets, and even pictures.
Stream decoder—simple interface for decoding to WAVE and RF64.
Stream encoder—a lot of options to tweak, everything that libFLAC supports.
Right now there are three main limitations:
No Ogg FLAC support, and I do not plan to add it; I'll accept a PR adding support for Ogg FLAC.
It's not possible to use custom callbacks for printing decoding/encoding progress in real-time.
Only works on little-endian architectures so far; I'll accept a PR lifting this limitation.
The best way to start using flac is to take a look at the
Haddocks. Encoding and decoding
should be simple to understand; for metadata there are examples in the docs.
Feel free to ask me a question if you get stuck with something.
The following packages are designed to be used with flac:
flac-picture—add
pictures to FLAC metadata more easily.Please direct all issues, bugs, and questions to the GitHub issue tracker for this project.
Pull requests are also welcome.
Copyright © 2016–present Mark Karpov
Distributed under the BSD 3-clause license.