Formlet FOF-like filter
Inherits from: Object : AbstractFunction : UGen : Filter
Formlet.ar(in, freq, attacktime, decaytime, mul, add)
Formlet.kr(in, freq, attacktime, decaytime, mul, add)
This is a resonant filter whose impulse response is like that of a sine wave with a Decay2 envelope over it.
It is possible to control the attacktime and decaytime.
Formlet is equivalent to:
Ringz(in, freq, decaytime) - Ringz(in, freq, attacktime)
Note that if attacktime == decaytime then the signal cancels out and if attacktime > decaytime
then the impulse response is inverted.
The great advantage to this filter over FOF is that there is no limit to the number of overlapping
grains since the grain is just the impulse response of the filter.
in - input signal to be processed
freq - resonant frequency in Hertz
attackTime - 60 dB attack time in seconds.
decayTime - 60 dB decay time in seconds.
{ Formlet.ar(Impulse.ar(20, 0.5), 1000, 0.01, 0.1) }.play;
{ Formlet.ar(Blip.ar(XLine.kr(10,400,8), 1000, 0.1), 1000, 0.01, 0.1) }.play;
(
// modulating formant frequency
{
var in;
in = Blip.ar(SinOsc.kr(5,0,20,300), 1000, 0.1);
Formlet.ar(in, XLine.kr(1500,700,8), 0.005, 0.04);
}.play;
)
(
// mouse control of frequency and decay time.
{
var in;
in = Blip.ar(SinOsc.kr(5,0,20,300), 1000, 0.1);
Formlet.ar(in,
MouseY.kr(700,2000,1),
0.005, MouseX.kr(0.01,0.2,1));
}.play;
)
(
// mouse control of frequency and decay time.
{
var freq;
freq = Formlet.kr(
Dust.kr(10 ! 2),
MouseY.kr(7,200,1),
0.005, MouseX.kr(0.1,2,1)
);
SinOsc.ar(freq * 200 + [500, 600] - 100) * 0.2
}.play;
)