aboutsummaryrefslogtreecommitdiff
path: root/readme.md
diff options
context:
space:
mode:
authorJedidiah Barber <contact@jedbarber.id.au>2025-05-09 09:01:28 +1200
committerJedidiah Barber <contact@jedbarber.id.au>2025-05-09 09:01:28 +1200
commitdf06f9d05ab2338a17f5062b15bf59af7b8d6117 (patch)
treed7bb327743e35e58897af82d2f6d300ccdcf705f /readme.md
parentff9d5644c4cb6772dc9b834d1fbb04614f083974 (diff)
Updated readmeHEADmaster
Diffstat (limited to 'readme.md')
-rw-r--r--readme.md84
1 files changed, 84 insertions, 0 deletions
diff --git a/readme.md b/readme.md
new file mode 100644
index 0000000..174280c
--- /dev/null
+++ b/readme.md
@@ -0,0 +1,84 @@
+
+## libsndfile Binding for the Ada Programming Language
+
+This is a thick binding of [libsndfile](https://libsndfile.github.io/libsndfile/)
+so effort has been made to get rid of all C-isms and C-specific types wherever
+possible. In particular:
+
+<ul>
+ <li>All error codes have been converted to exceptions</li>
+ <li>Void pointers are completely absent</li>
+ <li>The command API has been mapped to a more ordinary collection of
+ subprograms instead of the single function it is in C</li>
+</ul>
+
+The package hierarchy is as follows:
+
+<ul>
+ <li>Libsndfile (Everything that isn't virtual IO or the command API)
+ <ul>
+ <li>Libsndfile.Commands (The command API datatypes and subprograms)</li>
+ <li>Libsndfile.Virtual (The virtual IO interface)</li>
+ </ul>
+ </li>
+</ul>
+
+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:
+<ul>
+ <li>gcc</li>
+ <li>GNAT</li>
+ <li>GPRbuild</li>
+ <li>libsndfile</li>
+</ul>
+
+Run time:
+<ul>
+ <li>libsndfile</li>
+</ul>
+
+
+
+#### 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](https://docs.adacore.com/gprbuild-docs/html/gprbuild_ug.html).
+
+
+
+#### 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.
+
+