# [chuck-users] allpass filter/delay

Michael Heuer heuermh at gmail.com
Tue Jan 8 14:54:27 EST 2013

```On Tue, Jan 8, 2013 at 1:09 PM, Kassen <signal.automatique at gmail.com> wrote:
> On Tue, Jan 08, 2013 at 12:09:02PM -0600, Michael Heuer wrote:
>> I can't help but think that if I could figure out the notation of say
>> Moorer's Figure 2.30 above to the point where I might translate into
>> higher level ChucK delays, gains, and filters I could get lost for
>> several hours making strange reverbs in Chuck instead.  Can anyone
>> help me get started?
>
> Sure, for that diagram;
>
> x(n) is your input signal
>
> The "+" signs in the circles are points at which signals get summed
>
> v(n) is the signal that enters the delay, it is a sum of x(n) and the
> delay's output.
>
> The rectangular block is a delay of M samples length. When DSP people
> write "z-1" they are referring to the last sample (typically the last
> output of the system). Pronounce; "z minus 1". Why do they write it up
> high like it were taking the "-1th power"? I don't know. Maybe they
> just want to make it all hard to read to make themselves seem smart,
> maybe they just copy each other ;-) y(n) is the output signal (which
> we hear).
>
> b0 is the amount of feedforward; basically the amount of v(n) that
> ends up in the output. "b" indices are feedforward, b0 means the
> signal 0 samples ago.
>
> -aM is the amount of (negative) feedback from the delayed signal. a
> indices are as you might guess feedback, this is the output signal M
> samples ago. Note that our filters also have member functions like
> .a1(), .b0(), etc. Those are like this.

ok, me being niave:

Gain x => Gain v => Gain b => Gain y;
in => Delay z => Gain postZ => y;
postZ => Gain a => v;

y => dac;

0.25 => b.gain;
-0.25 = a.gain;

?

> [E]xperiments with feedback can and will lead to loud accidents, prepare
> for that. Of course they are also a LOT of fun, be careful, not discouraged :-)

Yep, that is what I'm going for.  Thank you, Kas.

michael
```