tomwalters@268: /*!
tomwalters@268: \mainpage AIM-C developer documentation
tomwalters@268:
tomwalters@281: \section intro_sec Introduction
tomwalters@268: AIM-C is a real-time version of the the auditory image model (AIM)
tomwalters@268: developed at the
tomwalters@268: Centre for the Neural Basis of Hearing.
tomwalters@268:
tomwalters@281: The main development site for AIM-C is at http://aimc.acousticscale.org/. The
tomwalters@281: code is available at http://code.google.com/p/aimc/.
tomwalters@281:
tomwalters@281: \section design_sec Design
tomwalters@268: AIM-C uses a block-based processing scheme. A mono input signal is
tomwalters@268: split into short segments, which are sequentially 'pushed' through the
tomwalters@268: processing pipeline. The pipeline consists of a number of modules in a
tomwalters@268: tree structure.
tomwalters@268:
tomwalters@268: The basic unit of data in AIM-C is the signal bank, and the basic
tomwalters@268: processing unit is the module. A signal bank represents a short
tomwalters@268: segment, or 'frame', of an audio signal with multiple
tomwalters@268: channels. Modules generally take a frame (represented as a signal
tomwalters@268: bank) as input, and generate zero, one, or more signal bank frames as
tomwalters@281: output. Each module maintains a list of 'target' modules, to which
tomwalters@281: it 'pushes' the frames that it generates. Each module
tomwalters@268: performs processing on the output of the previous module, and in turn,
tomwalters@268: push the output that they produce to their targets.
tomwalters@268:
tomwalters@281: This feed-forward, tree-like system allows modules to generate as many output
tomwalters@281: frames as necessary for each input frame. It also allows for easy 'rewiring'
tomwalters@281: of chains of modules. For example, a 'viewer' module could be temporarily
tomwalters@281: added as a target of another module while the user was interested in seeing
tomwalters@281: that module's output.
tomwalters@268:
tomwalters@281: Since each module is an instance of a class, it can retain the necessary state
tomwalters@281: variables within the class between calls.
tomwalters@268:
tomwalters@281: \section style_sec Coding style
tomwalters@268:
tomwalters@268: For the most part, AIM-C now follows the
tomwalters@268: Google C++ style guide. The original (2006-2009) AIM-C codebase
tomwalters@268: used a different style, and so you may find some files which still
tomwalters@268: follow the older conventions. New code should adhere to the Google style
tomwalters@268: guide.
tomwalters@268:
tomwalters@268:
tomwalters@268: */