Easy Audio ยป FLAC

To read and decode FLAC file or stream you need to follow these steps:

  1. Open a FLAC file/Get a stream with element type (unsigned-byte 8).
  2. Pass the stream to flac:open-flac function which will create and return bitreader:reader object. This object allows easy-audio library to read not just octets, but any amount of bits from audio stream.
  3. Read metadata blocks from the stream, passing the object from previous step to flac:read-metadata.
  4. Do whatever you want with metadata and read the first audio frame with flac:read-frame.
  5. Decode the frame with flac:decode-frame and repeat previous step until all data is read and decoded.

API

Conditions.
No node with name flac-error.
No node with name flac-bad-metadata.
No node with name flac-bad-frame.
Metadata blocks.
No node with name streaminfo.
No node with name streaminfo-minblocksize.
No node with name streaminfo-maxblocksize.
No node with name streaminfo-minframesize.
No node with name streaminfo-maxframesize.
No node with name streaminfo-samplerate.
No node with name streaminfo-channels.
No node with name streaminfo-bitspersample.
No node with name streaminfo-totalsamples.
No node with name streaminfo-md5.
No node with name padding.
No node with name vorbis-comment.
No node with name seektable.
No node with name seekpoint.
No node with name cuesheet.
No node with name cuesheet-catalog-id.
No node with name cuesheet-lead-in.
No node with name cuesheet-cdp.
No node with name cuesheet-tracks.
No node with name cuesheet-track.
No node with name cuesheet-index.
No node with name picture.
No node with name picture-type.
No node with name picture-mime-type.
No node with name picture-description.
No node with name picture-width.
No node with name picture-height.
No node with name picture-depth.
No node with name picture-color-num.
No node with name picture-picture.
Working with audio frames.
No node with name read-frame.
No node with name decode-frame.
No node with name blocksize.
No node with name frame.
No node with name frame-blocking-strategy.
No node with name frame-block-size.
No node with name frame-sample-rate.
No node with name +left-side+.
No node with name +right-side+.
No node with name +mid-side+.
No node with name frame-channel-assignment.
No node with name frame-sample-size.
No node with name frame-number.
No node with name frame-crc-8.
No node with name frame-subframes.
No node with name frame-crc-16.
Other functions / helpers.
No node with name open-flac.
No node with name read-metadata.
No node with name seek-sample.
No node with name metadata-find-seektable.
It also can decode FLAC data from OGG container. There are flac:open-ogg-flac, flac:read-ogg-metadata and flac:read-ogg-frame functions for that purpose. Seeking does not work with OGG container.