#lang scribble/manual @(require (for-label racket)) @title{(fb-sine-c rate freq im fb a c xi yi)} Feedback sine with chaotic phase indexing. freq - iteration frequency in Hz - 22050 im - index multiplier amount - 1 fb - feedback amount - 0.1 a - phase multiplier amount - 1.1 c - phase increment amount - 0.5 xi - initial value of x - 0.1 yi - initial value of y - 0.1 A cubic-interpolating sound generator based on the difference equations: xn+1 = sin(im*yn + fb*xn) yn+1 = (ayn + c) % 2pi This uses a linear congruential function to drive the phase indexing of a sine wave. For im = 1, fb = 0, and a = 1 a normal sinewave results. sclang default values @racketblock[ (audition (out 0 (mul (fb-sine-c ar (fdiv sample-rate 4) 1 0.1 1.1 0.5 0.1 0.1) 0.2))) ] increase feedback @racketblock[ (let ((fb (line kr 0.01 4 10 do-nothing))) (audition (out 0 (mul (fb-sine-c ar sample-rate 1 fb 1.1 0.5 0.1 0.1) 0.2)))) ] increase phase multiplier @racketblock[ (let ((a (line kr 1 2 10 do-nothing))) (audition (out 0 (mul (fb-sine-c ar sample-rate 1 0 a 0.5 0.1 0.1) 0.2)))) ] randomly modulate parameters @racketblock[ (let* ((x (mouse-x kr 1 12 0 0.1)) (f (lambda (m a) (mul-add (lf-noise2 kr x) m a)))) (audition (out 0 (mul (fb-sine-c ar (f 1e4 1e4) (f 32 33) (f 0.5 0) (f 0.05 1.05) (f 0.3 0.3) 0.1 0.1) 0.2)))) ]