-- resonz resonz (whiteNoise ar * 0.5) 2000 0.1 -- resonz ; modulate frequency let f = xLine kr 1000 8000 10 RemoveSynth in resonz (whiteNoise ar * 0.5) f 0.05 -- resonz ; modulate bandwidth let bw = xLine kr 1 0.001 8 RemoveSynth in resonz (whiteNoise ar * 0.5) 2000 bw -- resonz ; modulate bandwidth opposite direction let bw = xLine kr 0.001 1 8 RemoveSynth in resonz (whiteNoise ar * 0.5) 2000 bw -- resonz ; mouse control (1/Q = bandwidth / center-frequency) let m = mouseX kr 36 85 Linear 0.2 {- midi note -} w = mouseY kr 0.1 5 Linear 0.2 {- bandwidth -} f = midiCps (floorE m) {- centre frequency -} rq = w / f {- 1/Q (reciprocal of Q) -} in resonz (pinkNoise ar) f rq -- resonz ; pinkNoise ; event control let f (_,g,_,y,z,o,_,_,p,_,_) = pan2 (resonz (pinkNoise ar) (unitCps p) (y * 0.25) * 24) (o * 2 - 1) (z * g) in mix (voicer 16 f) * control kr "gain" 1 -- resonz ; pinkNoise ; event control let f (_,g,_,y,z,o,rx,_,p,_,_) = let (gt,_) = ccEventGateReset g p e = envGen kr gt 1 0 1 DoNothing (envPerc 0.01 (1 + rx)) f = unitCps p {- centre frequency -} rq = linLin y 0 1 0.05 0.25 / f {- 1/Q (reciprocal of Q) -} scl = 900 in pan2 (resonz (pinkNoise ar) f rq * scl * z) (o * 2 - 1) e in mix (voicer 16 f) * control kr "gain" 1 {---- ; Q The Q factor of a resonator is defined as the center-frequency (cf) divided by the bandwidth (bw). > let q cf bw = cf / bw The higher the Q the narrower the filter. > let bw_set = [1,4,10,100,200,400] > map (q 400) bw_set == [400,100,40,4,2,1] Q multipled by the band-width gives the center-frequency. > map (\bw -> q 400 bw * bw) bw_set == replicate (length bw_set) 400 The third argument to resonz is the reciprocal of Q (rq). > let rq cf = recip . q cf > map (rq 400) [1,4,10,100,200,400] == [1/400,1/100,1/40,1/4,1/2,1] 1/Q multiplied by the center-frequency gives the bandwidth. > map (\bw -> rq 400 bw * 400) bw_set == bw_set -}