annotate doc/dox-mainpage.dox @ 16:2a5354042241

-Updated the Slaney IIR gammatone to use a cascase of four second-order filters as per the implementtion in Slaney's auditory toolbox. This is more numerically stable at high sample rates and low centre frequencies.
author tomwalters
date Sat, 20 Feb 2010 17:56:40 +0000
parents 3078854c634a
children
rev   line source
tomwalters@0 1 /*!
tomwalters@0 2 \mainpage AIM-C developer documentation
tomwalters@0 3
tomwalters@9 4 \section intro_sec Introduction
tomwalters@0 5 AIM-C is a real-time version of the the auditory image model (AIM)
tomwalters@0 6 developed at the <a href="http://www.pdn.cam.ac.uk/groups/cnbh/">
tomwalters@0 7 Centre for the Neural Basis of Hearing</a>.
tomwalters@0 8
tomwalters@9 9 The main development site for AIM-C is at http://aimc.acousticscale.org/. The
tomwalters@9 10 code is available at http://code.google.com/p/aimc/.
tomwalters@9 11
tomwalters@9 12 \section design_sec Design
tomwalters@0 13 AIM-C uses a block-based processing scheme. A mono input signal is
tomwalters@0 14 split into short segments, which are sequentially 'pushed' through the
tomwalters@0 15 processing pipeline. The pipeline consists of a number of modules in a
tomwalters@0 16 tree structure.
tomwalters@0 17
tomwalters@0 18 The basic unit of data in AIM-C is the signal bank, and the basic
tomwalters@0 19 processing unit is the module. A signal bank represents a short
tomwalters@0 20 segment, or 'frame', of an audio signal with multiple
tomwalters@0 21 channels. Modules generally take a frame (represented as a signal
tomwalters@0 22 bank) as input, and generate zero, one, or more signal bank frames as
tomwalters@9 23 output. Each module maintains a list of 'target' modules, to which
tomwalters@9 24 it 'pushes' the frames that it generates. Each module
tomwalters@0 25 performs processing on the output of the previous module, and in turn,
tomwalters@0 26 push the output that they produce to their targets.
tomwalters@0 27
tomwalters@9 28 This feed-forward, tree-like system allows modules to generate as many output
tomwalters@9 29 frames as necessary for each input frame. It also allows for easy 'rewiring'
tomwalters@9 30 of chains of modules. For example, a 'viewer' module could be temporarily
tomwalters@9 31 added as a target of another module while the user was interested in seeing
tomwalters@9 32 that module's output.
tomwalters@0 33
tomwalters@9 34 Since each module is an instance of a class, it can retain the necessary state
tomwalters@9 35 variables within the class between calls.
tomwalters@0 36
tomwalters@9 37 \section style_sec Coding style
tomwalters@0 38
tomwalters@0 39 For the most part, AIM-C now follows the <a
tomwalters@0 40 href="http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml">
tomwalters@0 41 Google C++ style guide</a>. The original (2006-2009) AIM-C codebase
tomwalters@0 42 used a different style, and so you may find some files which still
tomwalters@0 43 follow the older conventions. New code should adhere to the Google style
tomwalters@0 44 guide.
tomwalters@0 45
tomwalters@0 46
tomwalters@0 47 */