Wavefiles: Ada Wavefile Reader & Writer Package
This Package contains a Wavefile Reader & Writer written in Ada 2012.
- License & Copyright
This Package is available "as is" under MIT License. Unless stated otherwise, the copyright is held by Gustavo A. Hoffmann.
- Supported Platforms
This Package has been tested on the following compilers / platforms:
- GNAT GPL 2015 for Linux
The Package is expected to work on Windows and Mac platforms.
Reading and writing of wavefiles supporting following features:
- Stereo and multichannel audio
- Audio samples with following bit depths:
- 16-bit PCM
- 24-bit PCM
- 32-bit PCM
- Wave-Format-Extensible (WAVEFORMATEXTENSIBLE)
- Conversion between PCM buffer data type and wavefile data type.
- Adaptations for different precisions are performed automatically.
PCM Buffer Features
Built-in handling of PCM buffers
- The Wavefiles Package is a generic package that can be instantiated for different formats of PCM buffers.
- When instantiating the generic package, the user must specify:
- The maximum number of samples that the buffer can contain
- The numerical data type for storing the PCM samples
- The numerical data type of the PCM samples can be:
- A floating-point type of arbitrary precision
- A fixed-point type of arbitrary precision
- When declaring an instance of the PCM buffer, the user must specify:
- The number of channels
Support for operations on PCM buffers:
- "=", "*", "+", "-"
- Custom operations (using function Wavefiles.PCM_Buffers.Perform)
- Known Issues and Limitations
Following features are not currently supported:
- Reading and writing of 8-bit PCM wavefiles
- Reading and writing of wavefiles in floating-point format
PCM Buffer Features
- Data type conversion to be investigated and improved.
- Conversion of small negative values might be improved.
- Extensive documentation and tutorials are missing.
- Please refer to the test folder for an example on how to use the Package.
Unit test for the Package is missing.
- Just a test module for manual checks is currently available.
Testing of wavefiles in various formats is missing.
Testing of erroneous wavefiles is missing.