1(ARESONVC-ALG 2(NAME "aresonvc") 3(ARGUMENTS ("sound_type" "s1") ("sound_type" "hz") ("double" "bw") 4 ("int" "normalization")) 5(LINEAR s1) 6(ALWAYS-SCALE hz) 7(START (MAX s1 hz)) 8(TERMINATE (MIN s1 hz)) 9(LOGICAL-STOP (MIN s1)) 10(SAMPLE-RATE (MAX s1)) 11(STEP-FUNCTION hz) 12(STATE ("double" "c3co" "exp(bw * -PI2 / s1->sr)") 13 ("double" "c3p1" "susp->c3co + 1.0") 14 ("double" "c3t4" "susp->c3co * 4.0") 15 ("double" "omc3" "1.0 - susp->c3co") 16 ("double" "c2" "0.0") 17 ("double" "c1" "0.0") 18 ("int" "normalization" "normalization") 19 ("double" "y1" "0.0") 20 ("double" "y2" "0.0; 21 hz->scale = (sample_type) (hz->scale * (PI2 / s1->sr))")) 22(DEPENDS ("c2" "hz" "c3t4 * cos(hz) / c3p1") 23 ("c1" "hz" "(normalization == 0 ? 0.0 : 24 (normalization == 1 ? 1.0 - omc3 * sqrt(1.0 - c2 * c2 / c3t4) : 25 1.0 - sqrt(c3p1 * c3p1 - c2 * c2) * omc3 / c3p1))")) 26(CONSTANT "c1" "c2" "c3co" "c3p1" "c3t4" "omc3" "normalization") 27(FORCE-INTO-REGISTER c3t4 c3p1 normalization omc3) 28(INNER-LOOP-LOCALS " register double y0, current;") 29(INNER-LOOP "current = s1; 30 y0 = c1 * current + c2 * y1 - c3co * y2; 31 output = (sample_type) y0; 32 y2 = y1; y1 = y0 - current") 33) 34