[LAD] Introducing AudioGrapher

Sakari Bergen sakari.bergen at tkk.fi
Mon Mar 15 21:12:35 UTC 2010


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-



More information about the Linux-audio-dev mailing list