aboutsummaryrefslogtreecommitdiff

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.