Under The Hood
The AMaMP Core features a modular plug-in style effects system,
coupled with build tools to make effect development a simple process
as free as possible of cross-platform build issues.
start life by the writing of a an FX file. This is a file containing
a mixture of C code implementing the effect and what we call directives
and macros, which respectively state what bits of code are to be
used for what (e.g. initialisation, effect application) and allow
various bits of data to be accessed (e.g. the sampling rate of the
effect data we have in the buffers of data we are to apply the effect
to). These are documented in the documentation for fx2c, which is
the name of the tool used for the next stage. .fx files are placed
in the effects directory, and should carry the name of the module,
as specified by the MODULE directive inside the .fx file itself.
fx2c is the effects build tool. It takes an fx file and some data
generated by the Configure script about the target system and generates
a file of C code that can either be compiled into a dynamically
loadable library for the current platform or to an object file that
can be linked into the core itself.
As well as generating data for fx2c to use, Configure also writes
a makefile. This both invokes fx2c for each .fx file in the effects
directory and then does the compilation and linking into a shared
library *or* the compilation to an object file which is linked into
the core, right at the end of the build process.
The yet-to-be-written (at the time of writing) fxlt will be invoked
if effects are being compiled into the core. It will generate a
C file that provides the lookup table for effects compiled into
the core, which will also be compiled to an object file and linked
into the core,
right at the end of the build process.
or compiled into the core?
The Configure script will decide to build the effects as dynamically
loadable libraries by default if it knows how to for that particular
platform. Otherwise effects will always be compiled into the core.
It is possible to override this decision and ask for effects to
be compiled into the core no matter what by passing the --fxincore
flag to the Configure script.