mixxxdj/mixxx — pull request #180 by rryan (2014-02-18 20:19:23+00:00)
Title: Add an effects framework.

This change introduces the basic infrastructure for an effects framework with multiple effects backends.

Design document: http://mixxx.org/wiki/doku.php/effects_framework

This also includes a native effects backend with simple implementations of:
* Flanger
* Reverb
* Echo
* Bit crusher
* HP/LP filter

This branch is stable and at the point where the remaining issues can be considered bugs. There are still a few more things I'd like to do before merge but in the interest of releasing a 1.12.0 beta I'd like to merge soon.

To test, use the 1.12.0 Deere skin: https://github.com/mixxxdj/developer_skins/tree/master/DeereSkeleton4Deck1280x800-WXGA

Remaining changes for Effects 1.0:
* Figure out what to do with load/save to XML -- it's implemented but turned off. Will we load/save by default or only allow rack serialize/deserialize?
* Make group controls, parameter, and mix properties of the chain slot instead of the chain.
* Support non-numeric (e.g. enum) parameters.
* Prevent most mallocs of group-state in the engine by pre-prepping effects with all registered groups upon instantiation.
* Add Deck feature collectors and provide features to effects.
* Rack serialize/deserialize buttons.
* Rack mute.
* Parameter linking.