GlobalEcho
Constructors
syz_createGlobalEcho
SYZ_CAPI syz_ErrorCode syz_createGlobalEcho(syz_Handle *out, syz_Handle context, void *config, void *userdata,
syz_UserdataFreeCallback *userdata_free_callback);
Creates an echo effect.
Functions
syz_echoSetTaps
struct syz_EchoTapConfig {
double delay;
double gain_l;
double gain_r;
};
SYZ_CAPI syz_ErrorCode syz_globalEchoSetTaps(syz_Handle handle, unsigned int n_taps, struct syz_EchoTapConfig *taps);
Configure the taps for this Echo. Currently, delay must be no greater than 5 seconds. To clear the taps, set the echo to an array of 0 elements.
Properties
None
Linger Behavior
Lingers until the delay line is empty, that is until no more echoes can possibly be heard.
Remarks
This is a stereo tapped delay line, with a one-block crossfade when taps are reconfigured. The max delay is currently fixed at 5 seconds, but this will be made user configurable in future.
This implementation offers precise control over the placement of taps, at the cost of not being able to have indefinitely long echo effects. It's most useful for modeling discrete, panned echo taps. Some ways this is useful are:
- Emphasize footsteps off walls in large spaces, by computing the parameters for the taps off level geometry.
- Emphasize openings or coridors.
- Pair it with a reverb implementation to offer additional, highly controlled early reflection emphasis
This is effectively discrete convolution for 2 channels, implemented using an
algorithm designed for sparse taps. In other words, the cost of any echo effect
is O(taps)
per sample. Anything up to a few thousand discrete taps is
probably fine, but beyond that the cost will become prohibitive.