/***************************************************************************
 * A simple implementation in C++ of the autocorrelogram model used in:
 *   Ma, N., Green, P., Barker, J. and Coy, A. (2007) Exploiting correlogram
 *   structure for robust speech recognition with multiple speech sources. 
 *   Speech Communication, 49 (12): 874-891.
 *
 * The ACG model employs a Gammatone filterbank and is useful to reveal periodic
 * information of sounds. It is widely used as a front end of computational 
 * auditory scene analysis (CASA) models, particularly for pitch estimation.
 * Detailed description about the ACG model can be found in (Ma et al. 2007)
 * and at http://www.dcs.shef.ac.uk/~ning/resources/correlogram
 *
 * This is a primitive implementation and requires the "fftw3" package 
 * (http://www.fftw.org) to compute FFT. Compiled fftw3 libraries for Linux 
 * x86, Linux x86_64 and Cygwin are included. Change the Makefile accordingly.
 *
 * It reads a WAV audio file, filters it with a Gammatone auditory filterbank, 
 * and computes a running short-time autocorrelation on the output of each 
 * filter with a Hann window.
 *
 * The ACG parameters defined in the AcgParam structure can be modified to suit 
 * your own use, e.g. employing more frequency channels
 *
 * To compile the code, type "make". To compute ACG for the included example 
 * "test.wav", type 
 *    ./acg test.wav test.acg
 * The ACG output is saved in the binary file "test.acg" as "float" numbers 
 * (32 bits) with a header defined as:
 *    struct AcgDataHeader
 *    {
 *       int      _maxDelay;
 *       int      _numChans;
 *       int      _numFrames;
 *    };
 *
 * To read the ACG data, a MATLAB script is provided: "read_acg.m". Type
 * "help read_acg" in MATLAB for help on the script.
 *
 * Any bug reports or suggestions welcome.
 * 
 * Ning Ma, University of Sheffield
 * n.ma@dcs.shef.ac.uk, 09 Aug 2007
 ***************************************************************************/
