%GAMMATONE_C: An efficient C implementation of the 4th order gammatone filter
%
% [bm, env, instp, instf] = gammatone_c(x, fs, cf, hrect)
%
% x - input signal
% fs - sampling frequency (Hz)
% cf - centre frequency of the filter (Hz)
% hrect - half-wave rectifying if hrect = 1 (default 0)
%
% bm - basilar membrane displacement
% env - instantaneous envelope
% instp - instantaneous phase (unwrapped radian)
% instf - instantaneous frequency (Hz)
%
%
% The gammatone filter is commonly used in models of the auditory system.
% The algorithm is based on Martin Cooke's Ph.D work (Cooke, 1993) using
% the base-band impulse invariant transformation. This implementation is
% highly efficient in that a mathematical rearrangement is used to
% significantly reduce the cost of computing complex exponentials. For
% more detail on this implementation see
% http://www.dcs.shef.ac.uk/~ning/resources/gammatone/
%
% Once compiled in Matlab this C function can be used as a standard
% Matlab function:
% >> mex gammatone_c.c
% >> bm = gammatone_c(x, 16000, 200);
%
% Ning Ma, University of Sheffield
% n.ma@dcs.shef.ac.uk, 09 Mar 2006
%