Hi, Oleg :)
Yes, I did it this way:
lp4blti(cf, q, in) = tick
~ ( _,
_,
_,
_) : ( !,
!,
!,
!,
_)
with {
k = 1/2*q;
g = tan(m2.w(cf)/2);
G = g/(1+g);
gamma = G^4;
tick(s1, s2, s3, s4) = v1+y1,
v2+y2,
v3+y3,
v4+y4,
y4
with {
u = (in-((s1*(G^3/(1+g))+s2*(G^2/(1+g))+s3*(G/(1+g))+s4
*(1/(1+g)))*k))*(1/(1+k*gamma));
v1 = (u-s1)*G;
y1 = v1+s1;
v2 = (y1-s2)*G;
y2 = v2+s2;
v3 = (y2-s3)*G;
y3 = v3+s3;
v4 = (y3-s4)*G;
y4 = v4+s4;
};
};
<http://dariosanfilippo.tumblr.com>
I tried the ladder structures in PD as nonlinear self-oscillating systems,
hence adding saturators or other stability processing, and they produced
good results. I will explore those in Faust to build a set of nonlinear
oscillators.
I'm curious, what's your background? Are you an electronic musician?
Dario
On Mon, 3 Jun 2019 at 13:52, Oleg Nesterov <[email protected]> wrote:
> On 05/30, Dario Sanfilippo wrote:
> >
> > I was meaning to also implement the ZDF 4-pole ladder. Will Pirkle
> resolved
> > it into this diagram:
> > http://www.willpirkle.com/Downloads/AN-4VirtualAnalogFilters.2.0.pdf.
>
> I can't read the diagrams, but the code looks simple... the faust
> implementation
> is trivial:
>
> moog(fc, Q) = tick ~ (_,_,_,_) : !,!,!,!, _ with {
> tick(s1,s2,s3,s4) =
> lp(s1, u) : _,(lp(s2) : _,(lp(s3) : _,lp(s4)))
> with {
> k = 4 * (Q - 0.5) / (25 - 0.5);
> g = tan(ma.PI * fc / ma.SR) <: _ / +(1);
>
> sigma = g^3*s1 + g^2*s2 + g*s3 + s4;
> u = -(k * sigma) : /(1 + k * g ^ 4);
>
> lp(s,x) = y + v, y with {
> v = (x - s) * g;
> y = v + s;
> };
> };
> };
>
> although I didn't check this code and I am sure it has mistakes.
>
> I am wondering what are you going to do with it ;) and how to compare this
> code
> with moog_vcf_* in vaeffects.lib.
>
> Oleg.
>
>
_______________________________________________
Faudiostream-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/faudiostream-users