Csound Csound-dev Csound-tekno Search About

Re: Digital Filters with Orc & Sco

Date1998-12-08 19:46
FromRichard Dobson
SubjectRe: Digital Filters with Orc & Sco
It doesn't have to be that 'complex' to be chaotic, of course; my own
experiments got quite a long way just using x^^2 as the non-linear element,
combined with delay and linear filter elements - that's the basis of the
nlfilt opcode. The paper I wrote with John Fitch is on his site somewhere.


Richard Dobson
http://www.wkweb5.cableinet.co.uk/rwd
Check out my Soundcard Attrition Page!


Hans Mikelson wrote:
> 
> Hello,
> 
> I was thinking today about digital filtering and realized that most of the
> digital filters I had seen were pretty linear with some a0*yn + a1*yn-1 +
> ...=b0*xn + b1*xn-1 + ... something like that, but why not just use some
> arbitrarily complex function of xn, yn, xn-1, yn-1, ... ?
> 
> yn = F(xn, xn-1, xn-2, ..., yn-1, yn-2, ...)
> 
> Or with possibly multiple input signals and functions:
> 
> x1n, x2n, ...
> y1n = F1(x1n, x1n-1,..., x2n, x2n-1,..., y1n-1, y1n-2, ..., y2n, y2n-1,
> y2n-2...)
> y2n = F2(....etc)
> 
> Is anyone working with these systems?  Complex chaotic systems come to mind.
> Of course I don't think I want to try and figure out the frequency
> response... :)
> 
> Bye,
> Hans Mikelson
> 
> ; Oh, and here is an example:
> ; Arbitrary Digital Filter
> ; by Hans Mikelson
> ; ORCHESTRA
> ; Note: sr must equal kr
> sr=44100
> kr=44100
> ksmps=1
> nchnls=2
> 
>        instr   1
> 
> idur   =       p3
> 
> axn    init    0
> axnm1  init    0
> axnm2  init    0
> ayn    init    0
> aynm1  init    0
> aynm2  init    0
> 
> kc1    linseg  .2, idur*.5, .8, idur*.5, .1
> kc2    linseg  3.5, idur*.2, .4, idur*.8, 2.1
> 
> ax1n, ax2n diskin 11, 1
> axn    =       ax1n/32000
> 
> ; Digital filter with arbitrarily complex function.
> ayn    =
> kc1*sin(axn*2+3*cos(kc2*aynm2))-.3*axnm1*aynm1+.1*ayn*axnm2*sqrt(ayn*ayn+axn
> m1*axnm1)
> 
> axnm2  =       axnm1
> axnm1  =       axn
> aynm2  =       aynm1
> aynm1  =       ayn
> 
>        outs    ayn*32000, ayn*32000
> 
>        endin
> 
> ; SCORE
> ;   Sta  Dur