Ingen is a realtime modular synthesizer and/or effects processor for
Jack/Alsa/LADSPA/DSSI/LV2/etc (ie GNU/Linux audio systems).

More information may be found at http://drobilla.net/software/ingen

To build, first check "./configure --help" for options, you can build this
code in many different ways (standalone engine with seperate clients, build
engine server only, build clients only, build monolithic clients, etc. etc).
Then do the typical "./configure; make; make install" routine.


*** Optimization ***

Ingen's configure script, by default, does not clobber your CFLAGS or CXXFLAGS
environment variables (which is the proper behaviour), though it does add a
few flags that should be turned on in any case (as described in this file).
If you want to submit usable bug reports (for segfaults and the like),
build with --enable-debug.  This will also enable assertions, which also
makes bug hunting easier (see below).

SIMD (SSE/Altivec):

If you have GCC4, it is hightly recommended that you enable your SIMD
instruction set, especially if you have a Pentium 4
(ie "-march=pentium4 -mfpmath=sse").  The performance gain is good for any chip
with a SIMD instruction set (Altivec, SSE, and friends), but in the case of a P4
the denormal avoidance is crucial for audio software.  Note that -march=athlon64
implies -msse, -msse2, -mfpmath=sse, etc.


*** Debugging ***

Ingen makes very heavy use of assertions to catch bugs.  Assertions have a
(minor) performance hit unless the preprocessor symbol NDEBUG is defined.
By default the configure script will add this to the end of your flags,
but it's worth noting.  Assertions have a minor overhead everywhere, but
will likely make bug reports much more useful.  Debug symbols add quite a
bit of bloat to all the code, and is not useful unless you plan on debugging
the code yourself.  A good compromise between performance and bug
reporting ability (eg for using the code from SVN) is
--enable-assertions without --enable-debug-symbols.


*** Bugs ***

If Ingen crashes, PLEASE REPORT THE BUG.  People too often assume "someone"
"must" know about the bug and it will magically get fixed without telling
anyone about it.  It probably doesn't happen for me, and if I don't know about
it, I'm probably not going to fix it :)


Have Fun.