Instructions to get Friture running
===================================

Most of Friture code-base is written in Python. As such, it is interpreted and does not need compilation, apart from the special cases below.

Dependencies
------------

Python3 (3.4 or later recommended)
PyQt4
PyAudio
PyOpenGL
Numpy
Scipy
Cython

UI and resource files
---------------------
If friture.ui or resource.qrc are changed, the corresponding python files need to be rebuilt:
	pyuic4 ui/friture.ui --from-imports > friture/ui_friture.py
	pyuic4 ui/settings.ui --from-imports > friture/ui_settings.py
	pyrcc4 resources/friture.qrc -o friture/friture_rc.py

Cython extension
----------------
Friture uses Cython extensions where computing is a bottleneck. These extensions can be built automatically with:
	python setup.py build_ext --inplace
	(on Windows, if you use mingw: python setup.py build_ext --inplace --compiler=mingw32)
Alternatively, to build the 'exp_smoothing_conv' extension manually on Linux, you can do:
	cython exp_smoothing_conv.pyx
	gcc -shared -pthread -fPIC -fwrapv -O2 -Wall -fno-strict-aliasing -I/usr/include/python2.6 -o exp_smoothing_conv.so exp_smoothing_conv.c

Filters parameters
------------------
The filters parameters are precomputed in a file called 'generated_filters.py'. To rebuild this file,
run the script named 'filter_design.py'.

Windows executable
------------------
To build an executable for Windows, with the python interpreter included, run:
	python setup.py py2exe
You get a 'dist' directory with friture.exe and a collection of dependencies (dlls and compiled python extensions), that can be
bundled together in an installer.
