PHASEX:  [P]hase [H]armonic [A]dvanced [S]ynthesis [EX]periment


MINIMUM REQUIREMENTS:
-------------------------------------------------------------------------------

Required:
	gcc-4.x
	gtk-2.4
	alsa-0.9.0
	jack-0.99.0
	libsamplerate-0.1.2

Optional:
	lash-0.5.4
	libuuid-1.6.4 (required for LASH)

-------------------------------------------------------------------------------


OBTAINING PHASEX SOURCES:
-------------------------------------------------------------------------------

Currently, PHASEX dev sources are only available via git:

	git clone https://github.com/williamweston/phasex.git

RPM and .tar.gz packages will be made available with the
upcoming v0.15.0 stable release.


COMPILING AND INSTALLING PHASEX:
-------------------------------------------------------------------------------

Start in toplevel source directory:

	cd phasex

When building PHASEX from git sources, switching autoconf/automake
versions, or in any other situation where 'configure' is missing or
throwing errors, it may be necessary to rebuild all of the dynamically
generated build files:

	aclocal
	autoconf
	automake
	autoheader

PHASEX uses the familiar autoconf/automake build system.  For a list
of confguration options, run './configure --help' or read below.

For a default configuration (which is probably not what you want):

	./configure

For a multimbral build optimized for your CPU you might want to run:

	./configure --enable-arch=native --enable-parts=2

Once configured, PHASEX can be compiled and installed with the usual:

	make
	make install

The --enable-arch= flag to ./configure will take any CPU type
supported by your gcc version for its -march= and -mtune= optimization
flags.

Architechtures currently supported:

	i386 i486 i586 pentium i686 pentium-mmx pentiumpro pentium2
	k6 winchip-c6 pentium3 pentium3m c3-2 pentium-m pentium4
	pentium4m k6-2 k6-3 winchip2 c3 geode athlon athlon-tbird
	athlon-4 athlon-mp athlon-xp k8 opteron athlon64 athlon-fx
	k8-sse3 opteron-sse3 athlon64-sse3 amdfam10 barcelona x86_64
	prescott nocona core2 corei7 corei7-avx core-avx-i amd64
	itanium itanium1 merced itanium2 mckinley ia64 ia32e atom
	generic native

If building with gcc-4.2 or newer, you may use --enable-arch=native
to optimize for your CPU.

To alter the CPU utilization of phasex, use the --enable-cpu-power=
flag.  Options are:  1 (slow CPU), 2 (average CPU), 3 (fast CPU and
32-bit sample_t), and 4 (fast CPU and 64-bit sample_t).

The number of active synth threads (and thus the number of active
synth parts) can be set with the --enable-parts= option.  In general,
enabling one part per CPU core will provide rock-solid xrun-free
performance (recommended for live / on-stage use).  Modern multi-core
systems may perform the same with as many as two synth threads per CPU
core enabled (recommended for studio use).  As usual, YMMV.

By default, 64-bit builds are enabled on 64-bit architectures.  To
force a 32-bit build on a 64-bit architecture (for a native 32-bit
build or cross-compiling for a 32-bit architecture), use the
--enable-32bit flag.

Additionally, you may add --enable-debug="-gwhatever" to pass debug
flags to the compiler.  When debug is enabled, the optimization level
is switched from -O3 to -O2, the -fomit-frame-pointer optimization is
removed, and -Wall (for all compiler warnings) is turned on.

To override or add extra compiler flags, set the CFLAGS environment
variable when running configure.

Examples:

./configure --enable-arch=atom \
            --enable-32bit \
            --enable-cpu-power=1 \
            --enable-parts=1

./configure --enable-arch=native \
            --enable-debug=-ggdb3 \
            --enable-parts=4

For custom builds, additional settings may be configured in
src/phasex.h.  For most builds, modifiying phasex.h should not be
necessary.

-------------------------------------------------------------------------------
