Multiple Band Effects Tutorial

This page describes how to use the bandfx library in Nyquist.

What does it do?

The idea is very simple: separate the incoming signal into different frequency bands. Apply an effect to each frequency band.
For example, apply a delay, with longer delays at higher frequencies. Then sum the outputs of the effects. In the delay example,
the result will be something like a filter sweep -- the low frequencies come out first, followed by increasingly higher frequencies.

How does it work?

Frequency bands are separated using Nyquist's reson filter. Although reson is not perfect for this job, it has the nice
feature that there is a complementary areson filter that returns everything removed by reson. We split off the lowest
frequency band with reson, then apply areson to get the remainder of the signal. We pass this through another reson
tuned to the second band and use another areson to get the remainder. Using a series of filters, we pull off all the
band except for the last one, which is just whatever is left over.

The function separate-into-bands constructs an array of frequency bands. The function reconstruct-from-bands sums an
array of frequency bands back into a single channel. Different functions apply effects to the frequency band representation.
Consult the code (see lib/bandfx.lsp) for details. You can use the code as a template for creating your own multiple band effects.

How can I use it?

> (load "bandfx")
> (f2)
> (f3)
> (f4)
> (f5)
The commands shown above will play some examples that are included in lib/bandfx.lsp. You can read the code for
a description of the functions and to see examples of their use. The functions are also described in the Nyquist manual
(see "multiple band effects" in the index).

The manual also describes some ways this library might be extended. Please contribute some examples if you find these effects useful.