The LibAiff Library
Open-source implementation of the AIFF format
[What is LibAiff - The AIFF format - Supported features - Download - Contributions - Documentation]
What is LibAiff?
LibAiff is an open-source library, providing C applications transparent
read & write operations for Audio Interchange File Format (AIFF) files, with the goal of supporting all of its features (see below).
LibAiff is released under the MIT/X11 license, it's lightweight, well-documented and portable.
The AIFF format features
AIFF is a very complete audio format, with features like metadata (name, author, copyright...), markers to positions on the sound, writing comments for each marker, and more; which make it an ideal format to store and interchange
uncompressed audio data.
The AIFF format also supports a wide variety of sample sizes and sampling rates.
- Metadata: You can store metadata into an Audio IFF file, like the name of a musical piece, its author or composer, its copyright and licensing...
- Annotations: You can write a block of text which helps to identify the content of the audio file.
- Markers: AIFF allows the storage of markers into the file. Markers are references to some position on the sound, including a text describing what happens on that position. You can also include extense comments with a timestamp (date when comment was written).
- Other features: such as instruments or MIDI data which can be useful, in example, to music sequencers and samplers.
Features supported by current version of LibAiff
The current version of LibAiff should support:
- Parsing and reading any valid Audio IFF file, as well as AIFF-C files (both big-endian and little-endian).
- Writing a valid Audio IFF or AIFF-C file.
- Read samples in all formats supported by the Audio IFF standard. This includes:
- Linear PCM: all sample sizes
- Floating-point PCM
- G.711 U-Law & A-law
- Write samples in Linear PCM format.
- Transparent reading/writing: An application can request that samples be delivered always in 32-bit LPCM format or floating-point format, regardless of the parameters of the file.
This means that LibAiff will do the required conversions (including floating-point to LPCM or 24-bit to 32-bit conversions).
Likewise, an application can write samples always on 32-bit LPCM format and LibAiff will do the required conversions. Note that writing floating-point files is not supported yet.
- Metadata (read/write)
- Annotations (read/write)
- Markers (read/write)
- Read instrument data for an Audio IFF file.
Advanced features
- LibAiff handles all endianness issues automatically.
- LibAiff handles correctly floating-point issues: for example you can read floating-point files to 32-bit LPCM data and LibAiff will correctly truncate the samples using a portable algorithm that doesn't use floating-point casts (which can be slow on some architectures, including i386).
- LibAiff supports reading and writing samples aligned to 3-byte boundaries, including converting them from/to 4-byte aligned integers.
- LibAiff can write optimized AIFF-C files, which always use the endianness native to the platform writing the file (big-endian or little-endian).
Download LibAiff
Current Version: LibAiff 5.0
Source distribution includes a copy of the LibAiff Reference Manual. You have installation instructions on the README file.
Contributing to the project
This is an open-source project. Any contributions, comments, suggestions, patches, bug notifications, etc.; will be appreciated a lot :) ... you can contact the project administrator via e-mail on <marcotrillo@gmail.com>
Documentation
The "official" documentation of LibAiff is the LibAiff Reference Manual, which explains all and each one of the LibAiff functions and features, how to use the LibAiff, and a general overview of AIFF and how audio is stored on it.
The LibAiff Reference Manual is distributed in the LibAiff source package.
You can also contact the project administrator via e-mail on <marcotrillo@gmail.com>
Thanks to SourceForge.net for hosting this project and managing the development