Effects API
Overview
The Effects API allows you to apply a set of built-in effects to an output.
Basics
-
Available under each output at the
../output-name/effects/name-of-effect
sub-route.-
Example:
/instances/instance-1/outputs/output-1/effects/compressor
-
-
IDEA: Rather than a full REST API for effects, each output already has these effects available -- one of each effect type.
- Then, if they are enabled with
PATCH: { enabled: true }
they are initialized on that output, and start out with default values.
- Then, if they are enabled with
-
Chaining seems to make things much more complicated, too. See
chain
in "Full REST API" request example below.-
If we forego chaining, then we could maybe just hard-code the chain as:
- Base output > Equalizer > Compressor > Limiter > Final output
-
Types
- Compressor
- Limiter
- Equalizer
Request example
For now: Already available for each output.
// PATCH /instances/instance-name/outputs/output-1/effects/compressor
{
enabled: true,
// IDEA: Isolate the knob values into an umbrella key of "parameters"
// since they are different for each effect.
parameters: {
attack: "x",
release: "y",
ratio: "z",
//... other parameters
}
}
Maybe for later: Full REST API?
Same as above, but allows for a "type" (compressor, limiter, eq, etc.) and multiple instances of each effect that can be chained in order.
// PUT /instances/instance-name/outputs/output-1/effects/effect-3
{
// Options: compressor, limiter, equalizer, ...
type: "compressor",
enabled: true,
// Same as above
parameters: {
attack: "x",
release: "y",
ratio: "z",
//... other parameters
},
chain: {
in: ['effect-1', 'effect-2'],
out: ['effect-4', 'effect-5']
}
}
Edited by Travis