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.