I have had doubts about these two opcodes for a very long time. If the

poles are near the unt curcle then there is real problems with floting

point rounding, at least tere was when I last tried.

Regarding the change of definituons of A valus wghat if A_1 is supposed to

be 1? I think it would need a new opcode for that change; anyway it is

just a scaling issue methinks.

OTOH it might be easy to raise the 50 liit with little effort or cost --

but am about to splot for today.

On Thu, 12 Apr 2018, jcroson wrote:

> Greetings Csound Developers,

>

> I've been learning about designing filters in octave/matlab. I am wondering about the opcodes filter2 and zfilter2. Three issues:

>

> 1: Is there any reason to have a limit of 50 for the number of A or B coefficients? One article I read on waveguide strings uses a filter with 300 poles!

>

> 2: Could we include code to not initialize when the note is tied (iskip)?

>

> 3: It seems to me they operate slightly non-intuitively. M is the number of B-coefficients - fine. N is the number of A-coefficients, but the initial coefficient (always "1", I think) is assumed (that is, supplied by the code for the opcode), so the user has to paste in A-coefficients, leaving out the "1", and supply N = number of user-supplied A-coefficients, which means N does not equal the number of actual A-coefficients.

>

> I think it would be more beautiful if it worked like biquad, where the user supplies all the A-coefficients, including the initial "1". At least a note in the manual page might save someone having to figure it out.

>

> To avoid breaking the opcode for existing scores, maybe something (ugly) like:

> if (A_coefficient1 == 1) then

> use the rest of the given coefficients, and

> N = N-1;

> endif

>

> Many thanks, and thanks for what you do for Csound,

>

> Jim Croson