libsndfile Binding for the Ada Programming Language
This is a thick binding of libsndfile so effort has been made to get rid of all C-isms and C-specific types wherever possible. In particular:
- All error codes have been converted to exceptions
- Void pointers are completely absent
- The command API has been mapped to a more ordinary collection of subprograms instead of the single function it is in C
The package hierarchy is as follows:
- Libsndfile (Everything that isn't virtual IO or the command API)
- Libsndfile.Commands (The command API datatypes and subprograms)
- Libsndfile.Virtual (The virtual IO interface)
A few short example programs are available in the example
subdirectory.
Please note that at the moment this binding is incomplete, as the RIFF chunk API is not bound. If anyone has a pressing need for it let me know.
Finally, there appears to be a subtle bug in the virtual IO that causes the frame count to be one lower than it should be. I am currently unsure of the exact cause. Since the behaviour is the same regardless of whether using the virtual IO in C or in Ada, the likely culprit is in the library itself.
Dependencies
Build time:
- gcc
- GNAT
- GPRbuild
- libsndfile
Run time:
- libsndfile
Building and Installation
This repository is written to use the GNAT Project Manager build tools. To build, use the following command
gprbuild asndfile.gpr
There is a single build switch of -Xbuild
which can have a value of release
(the default) or debug
.
To install the binding, use
gprinstall -p -m asndfile.gpr
The other gpr file example.gpr
can be used to build the short example
programs provided.
For further information on the build tools, consult the GPRbuild docs.
Credits and Licensing
This binding and the Ada test/example programs were written by Jedidiah Barber.
All code of this binding and example programs is released into the public
domain. Consult unlicense.txt
for further information.