AudioGrapher is a C++ library for managing signal flow within
applications or plugins. It is mainly a bunch of utility classes that
ease passing data around and debugging error situations. Currently it
also includes all the functionality that is used in Ardour's export,
including the following:
- sample rate conversion (libsamplerate)
- sample format conversion (gdither)
- file i/o (libsndfile)
- interleavin/deinterleaving
- normalizing
- threading parallel datapaths
- unit tests for most of these
I'm planning on using AudioGrapher in future dsp code (plugins
probably), so more functionality will be available, just no promises
when :)
This might sound a lot like GStreamer, but here are some differences:
- AudioGrapher is "modern" C++ instead of C
- The core of AudioGrapher is only 12 headers
- AudioGrapher is designed to be usable in RT applications (AFAIK most
of GStreamer is not)
- Extending AudioGrapher is extremely simple if you know your C++
- Audiographer was designed for audio only, but can stream other data also
Error checking and debugging can be adjusted using C++ template
parameters on a per-class basis. This means that only the chosen level
of error checking and debugging is built in at compile time. This makes
it possible to remove all overhead from performance critical parts.
Doxygen documentation is available at
http://beatwaves.net/files/software/audiographer/doc/index.html
and you can get the code via SVN from
http://svn.beatwaves.net/svn/libaudiographer/trunk
Some history if for the interested:
The very first ideas behind AudioGrapher were born in the summer of 2008
during my summer of code work on Ardour. I needed something that was
able to move around different amounts of data in different data formats.
So I made very simple Sink and Source classes. At the end of last year I
started making some changes to the data flow in Ardour's (3.0) export,
and noticed it would be worth making this a separate library which would
be usable in other projects also. I started working on AudioGrapher in
the beginning of November, and by January I had something I thought was
worth publishing. And over a month later here we are...
-Sakari-