annotate trunk/doc/dox-mainpage.dox @ 706:f8e90b5d85fd tip

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