-
Notifications
You must be signed in to change notification settings - Fork 0
Developer Guide Effects
Mixxx has a modular effects system to allow the user to creatively customize the audio produced by Mixxx's engine.
The system aims to accomplish the following:
- Support the use of audio effects from multiple effect providers / backends.
- Provide an efficient and flexible way for the user to combine different effects into new creations and easily share them with others.
- Provide a standard interface for controlling effects that the Mixxx GUI and DJ controllers can target.
Mixxx aims to support both user-loaded effect plugins (e.g. LV2, VST, etc.) and "internal" or bundled effects.
An "effect backend" is an abstraction that allows us to support multiple sources of effects that Mixxx can make use of.
The interface is defined here: EffectsBackend.
It's fairly simple. If you stand back and squint, a backend must support a method to get a list of available effects, and a method that instantiates one of those effects.
Today, we only have the "native" backend, which is for built-in effects. These effects can make strong assumptions about Mixxx since they are built-in.
We aim to support effect plugins. Work on an LV2 backend is in progress. Effect plugins cannot make the same assumptions, and therefore may feel less integrated with Mixxx or less efficient.
Mixxx has a suite of core effects implemented in the "native" effects backend. The code for these effects are a set of nice examples of how to write an effect.
Check out the code: src/effects/native
Regardless of which backend an effect came from, Mixxx needs to know various metadata about the effect to make use of it -- for example:
- a unique ID we an refer to it by internally
- A name.
- The effect's author.
- A description of its functionality.
- A list of all the parameters the effect supports and their types / ranges.
The standard way we represent this information is via a "manifest".
Check out the code: EffectManifest.
See also:
Mixxx is a free and open-source DJ software.
Manual
Hardware Compatibility
Reporting Bugs
Getting Involved
Contribution Guidelines
Coding Guidelines
Using Git
Developer Guide
Contributing Mappings
Mixxx Controls
MIDI Scripting
Components JS